代码之家  ›  专栏  ›  技术社区  ›  Johan

用外部json填充路由器

  •  4
  • Johan  · 技术社区  · 6 年前

    here

    我已经用自己的实现覆盖了默认的numxt路由器。如果我使用axios异步导入路由+ router.addRoutes() createRouter 将有异步支持,但还没有正式发布的Nuxt。

    如何导入js/json文件 同步 给我的 router.js

    模块/路由器.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')
      })
    }
    

    numxt.config.js文件:

    modules: ['~/modules/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
    }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   P3trur0    6 年前

    你可以试试 sync-request .

    它是一个NPM包,旨在执行同步web请求。它是可用的 here .

        2
  •  0
  •   Danijel    6 年前

    所以呢 await

    const routeFile = await fetch('pathToTheJsonFile');
    const routes = await routeFile.json();
    

    如果不能使方法异步,作为一种解决方法,可以使用jQuery。我不喜欢这样,但如果没有其他选择,现在,使用 async: false 在jqueryget中。

    jQuery.ajax({
        url: 'pathToYourJsonRoutes',
        success: function (result) {
    
        },
        async: false
    });