質問
- app.ts
typescript
1// import 諸々 2 3var app = express() 4 5// ■■■■■■■■■■■部分A■■■■■■■■■■■ 6var RedisStore = connectRedis(session) 7var redisClient = redis.createClient({ 8 host: 'session', 9 port: 6379, 10 prefix: 'sid:', 11}) 12 13app.use( 14 session({ 15 secret: 'hoge', 16 resave: false, 17 saveUninitialized: true, 18 store: new RedisStore({ 19 client: redisClient, 20 }), 21 cookie: { 22 path: '/', 23 }, 24 }) 25) 26// ■■■■■■■■■■■部分A■■■■■■■■■■■■ 27 28app.set('view engine', 'ejs') 29app.use('/static', express.static(__dirname + '/public')) 30 31app.use(express.json()) 32app.use(express.urlencoded({extended: true})) 33 34ー省略ー
のような app.ts があったときに部分Aはセッションに関わるものがつらつらと書かれているので別ファイルに分けたいなと思っています。(実際はもっと長い部分を分けようと思っている)
その際
- sessionApp.ts
typescript
1const app = express() 2 3var RedisStore = connectRedis(session) 4var redisClient = redis.createClient({ 5 host: 'session', 6 port: 6379, 7 prefix: 'sid:', 8}) 9app.use( 10 session({ 11 secret: 'hoge', 12 resave: false, 13 saveUninitialized: true, 14 store: new RedisStore({ 15 client: redisClient, 16 }), 17 cookie: { 18 path: '/', 19 }, 20 }) 21) 22 23export default app
と切り出して
- app.ts
typescript
1import sessionApp from './path/to/sessionApp' 2// import 諸々 3 4var app = express() 5 6// ■■■■■■■■■■■部分A■■■■■■■■■■■ 7app.use(sessionApp) 8// ■■■■■■■■■■■部分A■■■■■■■■■■■ 9 10app.set('view engine', 'ejs') 11app.use('/static', express.static(__dirname + '/public')) 12 13app.use(express.json()) 14app.use(express.urlencoded({extended: true})) 15 16ー省略ー
と記述する事に処理的なデメリットはありますでしょうか?(一応切り出す前と同じ動作は確認できます)
app.tsのappを引数に渡すような関数モジュールを作成したほうがいいでしょうか?
app.get('/api',apiRouter)のようにルーティング処理を切り出す事は様々なサイトに載っているのですが、app.useなどの塊を切り出したい時にどうすればいいのか探せなかったので質問させていただきます。
ちょっと思うこと
感覚的にはexpressのインスタンスがexpressのインスタンスのミドルウェアとして機能することになる?ので、expressのインスタンス1つ分メモリ消費のデメリットがあるのかな?とも思ったりもします・・・
あなたの回答
tips
プレビュー