最近在开发一个大型vue单页面应用的时候,项目最初是将所有的路由写在一个router.js的文件里。

const router = new Router({
  mode: "history",
  routes: [{
      path: '/',
    name: 'Index',
    component: include('index', 'home')
  },
  {
    path: '/aboutus',
    name: 'aboutUs',
    component: include('aboutUs', 'home')
  },
  {
    path: '/feedback',
    component: include('feedback', 'home'),
    redirect: '/feedback/service',
    children: [{
      path: '/feedback/service',
      component: include('Service', 'home/feedback'),
    },
    {
      path: '/feedback/view',
      component: include('view', 'home/feedback'),
    }]
  }]
}
随着业务代码的增长路由很快就会嵌套更深,新增很多路由,这样不利于后续的代码维护。

然而require.context()是什么?

想要实现去中心化管理我们就需要使用到require.context()

然后有了require.context()这个方法,我们就可以通过正则匹配引入相应的文件模块。

require.context(directory, useSubdirectories, regExp)

require.context()有三个参数:

  • directory:说明需要检索的目录
  • useSubdirectories:是否检索子目录
  • regExp: 匹配文件的正则表达式

使用require.context()改造后的allRouters.js文件

示例:

const routes = require.context('@/view', true, /router.js$/)
// (你创建了)一个view文件夹下面(不包含子目录),能被require请求到,所有文件名以 .router.js 结尾的文件形成的上下文(模块)。
 
export default routes.keys().map(key => (routes(key).default || routes(key)))

以后只要业务模块route文件遵循统一的目录结构,业务模块route就能被自动关联到这个allRouters.js里。

然后在route下index.js里引入
import Vue from 'vue'
import Router from 'vue-router'
import allRouters from './allRouters'
Vue.use(Router)
export function createRouter () {
  const router = new Router({
    'mode': 'history',
    'routes': [
    ...allRouters
    ]
  })
}...等等其他操作

这个思路也可应用于其他想要实现"去中心化"管理的功能模块,比如vuex的store模块。  

webpack的require.context()实现路由“去中心化”管理的更多相关文章

  1. 呼叫河马——搭建在NGK公链上的去中心化智能合约DAPP

    基于区块链技术发展的DAPP是一种分布式应用生态系统.目前最受DAPP欢迎的区块链有以太坊.EOS.波场等公链. 但由于当前 EOS资源模型的局限性,使得其使用成本较高.尽管 EOS的DPOS共识机制 ...

  2. 一张图带你了解webpack的require.context

    很多人应该像我一样,对于webpack的require.context都是一知半解吧.网上很多关于require.context的使用案例,但是我没找到可以帮助我理解这个知识点的,于是也决定自己来探索 ...

  3. IM 去中心化概念模型与架构设计

    今天打算写写关于 IM 去中心化涉及的架构模型变化和设计思路,去中心化的概念就是说用户的访问不是集中在一个数据中心,这里的去中心是针对数据中心而言的. 站在这个角度而言,实际上并非所有的业务都能做去中 ...

  4. 一步步教你开发、部署第一个去中心化应用(Dapp) - 宠物商店

    今天我们来编写一个完整的去中心化(区块链)应用(Dapps), 本文可以和编写智能合约结合起来看. 写在前面 阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么除此之 ...

  5. 去中心化存储项目终极指南 | Filecoin, Storj 和 PPIO 项目技术对比(下)

    在上篇文章中,我们主要从价值定位.技术层次架构.服务质量.去中心化程度,和经济激励机制五个方面分析了三个项目的不同.在这一篇文章中,我们将着重从区块链的架构设计.数据传输技术设计和数据存储技术设计三方 ...

  6. PPIO去中心化存储的了解和记录

    目录 介绍 FileCoin P2P技术给去中心化云存储的好处 剩余资源的再次使用 市场竞争会激发民间的智慧 PPIO的2种冗余模式 全副本模式 纠删副本模式 为什么PPIO要设计支付代理节点? 一些 ...

  7. uuid 去中心化的唯一性

    A Universally Unique IDentifier (UUID) URN Namespace https://tools.ietf.org/html/rfc4122.html A UUID ...

  8. 从零构建以太坊(Ethereum)智能合约到项目实战——第23章 从零构建和部署去中心化投票App,decentralization Voting Dapp

    P90 .1-从零构建和部署去中心化投票App-01 P91 .2-从零构建和部署去中心化投票App-02 P92 .3-从零构建和部署去中心化投票App-03 参考博文:http://liyuech ...

  9. 小众Tox——大众的“去中心化”聊天软件

    ★Tox是什么 一个反窥探的开源项目:一种基于DHT(BitTorrent)技术的即时通讯协议:一个为安全而生的加密通讯系统 .美国棱镜计划曝光后,一个名为 irungentoo 的牛人于17天后的2 ...

随机推荐

  1. try中定义的变量在finally中找不到

    凡是代码块中的变量,作用域都只在代码块中 https://blog.csdn.net/qq_20936333/article/details/81062966 问题: 解决:

  2. VS2010发布,IIS实际目录,无法修改只读状态解难决办法

    VS2010发布网站后,无法修改只读状态 CMS简单的主页生成失败,其他的修改操错也应该无法执行 只在常规里修改无效. 网上得答案 1.鼠标右键点击文件夹 2.点击属性 3.在“常规”标签页中,取消“ ...

  3. 吴裕雄--python学习笔记:爬虫包的更换

    python 3.x报错:No module named 'cookielib'或No module named 'urllib2' 1. ModuleNotFoundError: No module ...

  4. 对这些工程师来说,Skype Translator是他们自己的事——Skype Translator项目研发团队的故事

    Translator是他们自己的事--Skype Translator项目研发团队的故事" title="对这些工程师来说,Skype Translator是他们自己的事--Sky ...

  5. 吴裕雄--天生自然 PYTHON语言数据分析:ESA的火星快车操作数据集分析

    import os import numpy as np import pandas as pd from datetime import datetime import matplotlib imp ...

  6. The entity "nbsp" was referenced, but not declared

    翻译 实体""被引用,但没有声明 问题 使用xhtmlrenderer将网页转成PDF时报The entity "nbsp" was referenced, b ...

  7. test 5.1 高精度小数(10分)

    请写一个程序,输入一个分数,计算出它的小数形式.无论是否可以除尽,输出最多小数点后200位. 题目内容 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现 ...

  8. nginx增加访问验证

    使用OpenSSL实用程序创建密码文件 如果您的服务器上安装了OpenSSL,则可以创建没有附加软件包的密码文件.我们将在/ etc / nginx配置目录中创建一个名为.htpasswd的隐藏文件来 ...

  9. Gnu pgp加密解密

    在生成密钥的时候,无法生成足够多的随机数,提示“ Not enough random bytes available. Please do some other work to givethe OS ...

  10. elasicsearch数据自动清理脚本

    elasticsearch随着保存的数据越来越多,磁盘占用越来越大,有必要进行定期自动清理. 直接上脚本 cat es-index-clear.sh #/bin/bash #查看索引信息 #curl ...