[英]What are the best practices to work with next.js and express.js and use sessions
幾周以來,我已經使用node.js和express.js開始了一個項目,我還在前面添加了React對象。
我使用express-session和connect-mongodb-session開發了一個完整的會話管理器,它運行得很好。
我現在要添加一件事來設置所有內容: next.js 。 在這里,它對我來說有點復雜。
我的目的是擁有與現在相同的東西,但頁面間平滑過渡。
我開始使用git中的官方示例: https : //github.com/zeit/next.js/tree/canary/examples/custom-server-express
哪個非常好。 但/頁面中的頁面是公開的嗎? 有人可以通過輸入他們的地址來訪問它們,這不是很好,因為會話應該完全防水。
我的第一個解決方案是將它們稱為隨機名稱,以便人們無法直接訪問它們,但它不是很整潔......而且它們仍然可以工作...這會讓我寫下這樣的東西:
server.get('/nice_name', (req, res) => {
console.log('loaded') return app.render(req, res, '/uoiuouiorlos_ugly_random_name', req.query) })
我的另一個解決方案是為他們的地址和呼叫建立一條路線(req,res,next)=> next()
這可行,但......它很漂亮嗎?
另一個解決方案是編輯next.config.js並寫:module.exports = {useFileSystemPublicRoutes:true,}
它工作得很好但是每個頁面都像往常一樣加載......那么重點是什么呢?
const express = require('express')
const next = require('next')
const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
console.log('page loaded')
app.prepare().then(() => {
const server = express()
server.get('/', (req, res) => {
console.log('loaded')
return app.render(req, res, '/1A', req.query)
})
server.get('/space2', (req, res) => {
console.log('loaded')
return app.render(req, res, '/2A', req.query)
})
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(port, err => {
if (err) throw err
console.log(`> Ready on http://localhost:${port}`)
})
})
我是初學者,請提前感謝您的幫助!
現在重定向到名為404.js的頁面如果人們試圖訪問實際頁面工作正常
express.get('/', (req, res) => {
return app.render(req, res, '/landing_page', req.query);
})
express.get('/landing_page', (req, res) => {
return app.render(req, res, '/404', req.query)
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.