NextJs 实现自定义点火操作
- 前言
- 实现自定义点火
前言
我希望在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 errconsole.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"},
程序启动后结果如下: