前端性能优化五十五:vue路由自动加载

文章介绍了如何使用VueRouter进行单条路由添加和自动扫描,利用`require.context`遍历指定目录下的`.router.js`文件,并演示了约定式路由的方式,通过动态导入组件来配置路由。
摘要由CSDN通过智能技术生成
import Router from 'vue-router'
// 单条路由添加和自动扫描可以同时使用,更灵活的控制路由范围
import Home from './views/Home.vue'

// 作用:扫描指定目录下所有符合条件的文件
// 函数的三个入参:
// 1. 要扫描的路径
// 2. 是否递归扫描:true递归扫描,扫描指定文件夹下的所有子文件夹、false只扫描指定路径
// 3. 正则表达式:/\.router\.js$/表示匹配以.router.js为结尾的文件
// 这里,正则表达式一定要和自己的路由信息配置文件的命名相符合,不然扫描不到
const modulesFiles = require.context('./modules', true, /\.router\.js$/)

const routers  = []
// 将扫描到的路由信息加入路由数组中
modulesFiles.keys().forEach(modulePath => {
  const value = modulesFiles(modulePath)
  routers.push(value.default)
})

// 如果有的路由配置文件中所编写的路由信息不止一个(是个数组)
// function registerRoute(route) {
//   routes.push(route)
// }
// modulesFiles.keys().forEach(modulePath => {
//   const value = modulesFiles(modulePath)
//   if (value.default instanceof Array) {
//     value.default.forEach(registerRoute)
//   } else {
//     registerRoute(value.default)
//   }
// })

export default new Router({
  routes: [
    ...routers,
    // {
    //   这里配置单条路由数据
    // }
  ]
})

:. require.context:
    a. 一个webpack的api
    b. 通过执行require.context函数获取一个特定的上下文,主要用来实现自动化导入模块
    c. 在前端工程中,如果遇到从一个文件夹引入很多模块的情况,可以使用这个api
    d. 可以遍历文件夹中的指定文件,再自动导入,不需要每次显式的调用import导入模块

②. 参数:
    a. directory {String} -读取文件的路径,检索的目录
    b. useSubdirectories {Boolean} - 是否遍历文件的子目录
    c. regExp {RegExp} - 匹配文件的正则表达式,个别是文件名

③. 语法:
    a. require.context(directory, useSubdirectories = false, regExp = /^.//);

2. 思考:

类似nuxt那样的约定式路由:

import Vue from "vue";
import VueRouter from "vue-router";

Vue.use(VueRouter);

const routes = []; // 路由配置表

require
  .context("../views", true, /\.vue$/) 
  .keys()
  .map((item) => {
    let path = item.slice(1).replace(".vue", "").toLowerCase();
    routes.push({
      path,
      name: path.slice(1),
      component: () => import(`../views${item.slice(1)}`),
    });
  });

const router = new VueRouter({
  mode: "history",
  base: process.env.BASE_URL,
  routes,
});

export default router;
  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值