前言
我希望在Nextjs
启动的时候,能够自定义实现一些项目的初始化逻辑,也可以说是一些点火操作,比如资源的加载,数据的初始化等操作。
实现自定义点火
我们可以在根目录下创建一个文件server.js
// server.js
const { createServer } = require('http')
const { parse } = require('url');
const next = require('next')
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
// 初始化函数
async function init() {
// 自定义你的初始化逻辑
console.log('init success')
}
// 启动服务器
app.prepare().then(() => {
// 在启动服务器之前执行初始化函数
init().then(()=>{
createServer((req, res) => {
const parsedUrl = parse(req.url, true)
handle(req, res, parsedUrl)
}).listen(4000, (err) => {
if (err) throw err
console.log('> Ready on http://localhost:4000')
})
})
})
在init
函数里面就可以编写你自己的点火初始化逻辑了,接下来可以在package.json
中的脚本命令增加:& node server.js
,例如下面的dev
以及start
命令
"scripts": {
"dev": "next dev & node server.js",
"build": "next build",
"start": "cross-env NODE_ENV=production next start & node server.js",
"lint": "next lint"
},
程序启动后结果如下: