【发布时间】:2019-02-11 01:40:03
【问题描述】:
我想将外部 json 文件中的路由(可以在运行时更改)添加到我的 Nuxt 应用程序。类似的话题可以在here找到。
我已经用我自己的实现覆盖了默认的 Nuxt 路由器。如果我使用 axios + router.addRoutes() 异步导入路由,我似乎失去了服务器端渲染。似乎createRouter 将支持异步,但它还没有在 Nuxt 的正式版本中。
如何将 js/json 文件 同步 导入到下面的 router.js,以便填充路由?我希望能够在运行时配置路由,所以我不希望它成为捆绑包的一部分。
modules/router.js:
const path = require('path')
module.exports = function () {
this.nuxt.options.build.createRoutes = () => {}
this.addTemplate({
fileName: 'router.js',
src: path.resolve(`${this.options.srcDir}`, 'router.js')
})
}
nuxt.config.js:
modules: ['~/modules/router']
router.js:
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
export function createRouter () {
const router = new Router({
mode: 'history',
routes: [/* ... */]
})
return router
}
【问题讨论】:
-
我认为您可以导入您的 json 文件,例如
import myroutes from 'thepath/routes.json'和... mode:'hidtory',routes:myroutes... -
@boussadjrabrahim 如果我这样做,它将在我构建时成为捆绑包的一部分。
-
是的,我明白了,您是否尝试使用 axios 来完成此操作?
-
@boussadjrabrahim 是的,我已经尝试过我提到的异步方法,但此时加载需要同步执行
-
@P3trur0 不知道我是怎么错过的,请随时将其发布为答案:)