Nuxt.js实战和配置详解

2020-06-12 21:26:56易采站长站整理

message: 'invalid token'
})
}
}

module.exports = { verifyMiddleware }

最后,在需要鉴权的路由中引用这个中间件,

/server/index.js


const { Router } = require('express')
const { verifyMiddleware } = require('../middleware/verify.js')
const router = Router()

// 在需要鉴权的路由加上
router.get('/test', verifyMiddleware, function (req, res, next) {
res.json({name: 'test'})
})

静态文件的处理

根目录下有个

/static
文件夹,我们希望这里面的文件可以直接通过url访问,需要在
/server/index.js
中加入一句:


const express = require('express')
const app = express()

app.use('/static', express.static('static'))

四、Nuxt开发相关 生命周期

Nuxt扩展了Vue的生命周期,大概如下:


export default {
middleware () {}, //服务端
validate () {}, // 服务端
asyncData () {}, //服务端
fetch () {}, // store数据加载
beforeCreate () { // 服务端和客户端都会执行},
created () { // 服务端和客户端都会执行 },
beforeMount () {},
mounted () {} // 客户端
}

asyncData

该方法是Nuxt最大的一个卖点,服务端渲染的能力就在这里,首次渲染时务必使用该方法。 asyncData会传进一个context参数,通过该参数可以获得一些信息,如:


export default {
asyncData (ctx) {
ctx.app // 根实例
ctx.route // 路由实例
ctx.params //路由参数
ctx.query // 路由问号后面的参数
ctx.error // 错误处理方法
}
}

渲染出错和ajax请求出错的处理

asyncData渲染出错

使用

asyncData
钩子时可能会由于服务器错误或api错误导致无法渲染,此时页面还未渲染出来,需要针对这种情况做一些处理,当遇到asyncData错误时,跳转到错误页面,nuxt提供了
context.error
方法用于错误处理,在asyncData中调用该方法即可跳转到错误页面。


export default {
async asyncData (ctx) {
// 尽量使用try catch的写法,将所有异常都捕捉到
try {
throw new Error()
} catch {
ctx.error({statusCode: 500, message: '服务器开小差了~' })
}
}
}

这样,当出现异常时会跳转到默认的错误页,错误页面可以通过