Nuxt餐蔬,作為一款優(yōu)秀的基于Vue的服務(wù)端渲染(SSR)框架,既可以使用他的服務(wù)器渲染模式,也可以打包成靜態(tài)頁(yè)面,甚至也可以將其打包未SPA(單頁(yè)面應(yīng)用)
使用Nuxt官方模板初始化項(xiàng)目的時(shí)候戚丸,可選擇不同的基于Nodejs的服務(wù)端框架,我選用的是Express扔嵌,其他框架也類似昏滴。
Express中有許多的官方或者第三方的中間件,其實(shí)也就是渲染頁(yè)面之前需要做的操作,比如日志記錄对人,cookie解析,url解析拂共,權(quán)限認(rèn)證等等牺弄,在Nuxt中,中間件分兩種:
- 基于Nodejs或者Express或者自行開發(fā)的服務(wù)端中間件(serverMiddleware)
- 基于Vue路由宜狐,也就是Nuxt渲染頁(yè)面之前的中間件势告,可以看作是Vue Router的鉤子
服務(wù)端中間件的開發(fā)使用
默認(rèn)在 /server/index.js文件中,啟動(dòng)了一個(gè)express服務(wù)抚恒,在start函數(shù)中使用了nuxt作為express的中間件咱台,我們自行開發(fā)或者使用的中間件有兩種方式:
- 在nuxt中間件使用之前調(diào)用
// 需要在nuxt中間件調(diào)用前使用,否則頁(yè)面會(huì)在nuxt中間件中渲染出來(lái)
app.use((req,res,next)=>{
console.log(req.headers)
})
app.use(nuxt.render)
- 使用nuxt的serverMiddleware
// 1.在項(xiàng)目根目錄下建一個(gè)serverMiddleware的文件夾俭驮,再建立 一個(gè)auth.js的文件
//auth.js
export default function(req,res,next){
// console.log(req.headers)
// res.redirect(301,'https://www.baidu.com')
// res.status(200).send('<p>12355</p>')
// 在該中間件中回溺,你甚至可以做渲染攔截,直接send你自定義的數(shù)據(jù)
next()
}
// 2.在nuxt的配置文件中(nuxt.config.js)調(diào)用該中間件
module.exports = {
serverMiddleware: [
'@/serverMiddleware/auth'
],
}
// 或者可以給路徑參數(shù)混萝,跟express中是一樣的
module.exports = {
serverMiddleware: [
{path:'/api', handler:'@/serverMiddleware/auth'}
],
}