第一天学习总结

一、文件介绍(部分)

  • setting.js 项目有关信息设置
  • permission.js(权限)前置导航守卫,负责路由前置守卫

二、Icon图标的解析

在做出分析前先对require.context()进行了解

  • 概念 require.context是一个webpack的api,通过执行require.context函数获取一个特定的上下文,主要用来实现自动化导入模块,在前端工程中,如果遇到从一个文件夹引入很多模块的情况,可以使用这个api,它会遍历文件夹中的指定文件,然后自动导入,使得不需要每次显式的调用import导入模块。
  • 参数 require.context()接收三个参数
    • directory {String} -读取文件的路径
    • useSubdirectories {Boolean} -是否遍历文件的子目录
    • regExp {RegExp} -匹配文件的正则
//核心三行代码
//require.context(目录,是否扫描子目录, 正则表达式)扫描某个目录下的文件,
const req = require.context('./svg', false, /\.svg$/) // 这里为false,则不扫描svg下面的子目录

const requireAll = rquireContext => requireContext.keys().map(requireContext)
<=>
const requireAll = requireComtext => requireContext.keys().map(item => requireContext(item))
requireAll(req)

  1. 封装全局组件
  2. 三行代码
  3. 插件svg-sprite-loader:打包所有svg到一个svg标签上,将svg名称作为symbol标签的属性。

Snipaste_2023-05-30_22-54-00.png 三行核心代码

Snipaste_2023-05-30_22-40-33.png

在vue.config.js中调用svg-sprite-loader插件。

Snipaste_2023-05-30_22-44-43.png 调用方式

逐字稿:我们先定义一个常量req,然后通过require的context方法对svg文件夹下面的以svg结尾的文件进行全部扫描,得到一个包含所有svg的路径数组;即['./dashborad.svg'....]等。然后通过 const requireAll = requireContext => requireContext.keys().map(item => requireContext(item)) requierAll(res)这样的一段代码将所有路径转成对应的模块 module。然后配合 svg-sprite-loader这个插件 用进行调用。其中dashborad是svg文件名转存失败,建议直接上传图片文件