Thinkjs 支持 nuxt

Thinkjs 3.0 版本
在 src 目录中找到 middleware 文件夹,如果没有就新建一个,然后在此目录中创建一个名字(任意)为 nuxt.js 的文件。
文件内容如下:

const {Nuxt, Builder} = require('nuxt')
const isDev = think.env === 'development';
let config = require(path.join(think.ROOT_PATH, '/nuxt.config.js'))
const nuxt = new Nuxt(config)
// build only in dev mode
if (isDev) {
  new Builder(nuxt).build()
}

module.exports = options => {
  let err = null
  const middleware = async (ctx, next) => {
    ctx.status = 200
    ctx.req.session = await ctx.session()
    await nuxt.render(ctx.req, ctx.res)
    const startTime = Date.now();
    return next().catch(e => {
      err = e
    }).then(() => {
        // const endTime = Date.now();
        if (err) return Promise.reject(err); // 如果后续执行逻辑有错误,则将错误返回
        return new Promise((resolve, reject) => {
          // console.log(`request exec time: ${endTime - startTime}ms`);
        })
      }
    )
  }
  return middleware
}

然后在 src/config/middleware.js 中加入以下内容:

  {
    handle: 'nuxt',
    options: {}
  }

这样就完成对 Nuxtjs 持支持了。

PS:当生产模式(production)时,一定要将 nuxt.config.js 中的 dev 设置为 true。这样在运行中 nuxt 才能找到已 build 完成的内容。

Demo 地址
https://github.com/baisheng/nuxt-thinkjs3.git

你可能感兴趣的:(Thinkjs 支持 nuxt)