webpack的 rquire.context用法实现工程自动化的方法


Posted in Javascript onFebruary 07, 2020

最近仿写一个项目,如下目录,base内部都是一些基础的组件,但是并没有在main.js 中使用常规的方式去全局注册的,刚开始还不明白没有注册的组件怎么在全局使用的

项目目录

webpack的 rquire.context用法实现工程自动化的方法

//main.js
import global from './utils/global'
Vue.use(global)
//解释:如果自动化的代码直接写在一个js文件中直接全局的引入main.js 中也是没有问题的,
//但是这里是按照自定义插件的方式写下global文件中的就要使用vue的use方法

自定义global插件,通过全局的Vue.use(global)来调用

//global.js
import {
 Input,
 Dialog,
} from "element-ui"
import VueLazyload from "vue-lazyload"
import Meta from 'vue-meta'
import * as utils from "./index"

export default {
 install(Vue) {
 const requireComponent = require.context(
  "@/base",
  true,
  /[a-z0-9]+\.(jsx?|vue)$/i,
 )
 //console.log(requireComponent);
 //console.log(requireComponent.keys(),)
 //console.log(requireComponent.resolve,)
 //console.log(requireComponent.id,)
 //console.log(requireComponent.resolve("./tabs.vue"))
 //console.log(requireComponent("./tabs.vue"));
 //console.log(requireComponent("./tabs.vue") === require("@/base/tabs"));

 
 // 批量注册base组件
 requireComponent.keys().forEach(fileName => {
  const componentConfig = requireComponent(fileName)
  const componentName = componentConfig.default.name
  if (componentName) {
   Vue.component(componentName, componentConfig.default ||   
    componentConfig)
  }
 })
 
 Vue.prototype.$ELEMENT = { size: "small" }
 Vue.prototype.$utils = utils

 Vue.use(Input)
 Vue.use(Dialog)
 Vue.use(Meta)
 },
}

解析 require.context

const requireComponent = require.context(
  "@/base",
  true,
  /[a-z0-9]+\.(jsx?|vue)$/i,
 )

require.context返回一个webpack的上下文环境 , 返回的是一个函数,

有三个参数:

  • 要搜索的文件夹目录,(不可以是变量,webpack在编译阶段无法定位目录)
  • 是否还要再搜索他的子目录
  • 匹配文件的正则表达式
require.context(directory, useSubdirectories, regExp);

总结:

  • require.context模块返回一个函数,这个函数可以接受一个参数,
  • require.context 的第一个参数不可以是变量,webpack在编译阶段无法定位到目录
  • 有三个属性和方法, resolve , keys , id
    • resolve 是一个函数,传入文件的路径得到解析后的模块的id
    • keys 是一个函数 , 返回所有文件路径组成的数组
    • id 是上下文环境中包含的模块的id , 可能在使用module.hot.accept (热模块更新)时使用

看下面两幅图片解析的更清晰

webpack的 rquire.context用法实现工程自动化的方法

webpack的 rquire.context用法实现工程自动化的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js异或加解密效果代码
Jun 25 Javascript
给html超链接设置事件不使用href来完成跳
Apr 20 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
Nov 18 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
May 31 Javascript
JavaScript仿网易选项卡制作代码
Oct 06 Javascript
深入理解vue.js双向绑定的实现原理
Dec 05 Javascript
jQuery获取选中单选按钮radio的值
Dec 27 Javascript
vue日期组件 支持vue1.0和2.0
Jan 09 Javascript
详解node-ccap模块生成captcha验证码
Jul 01 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
Jul 17 Javascript
vue如何进行动画的封装
Sep 26 Javascript
详解微信小程序图片地扯转base64解决方案
Aug 18 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
Feb 07 #Javascript
vue-cli设置css不生效的解决方法
Feb 07 #Javascript
js生成1到100的随机数最简单的实现方法
Feb 07 #Javascript
JavaScript实现飞舞的泡泡效果
Feb 07 #Javascript
JavaScript实现Excel表格效果
Feb 07 #Javascript
js实现自动播放匀速轮播图
Feb 06 #Javascript
node爬取新型冠状病毒的疫情实时动态
Feb 06 #Javascript
You might like
加速XP搜索功能堪比vista
2007/03/22 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
原生js调用json方法总结
2018/02/22 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
haskell实现多线程服务器实例代码
2013/11/26 Python
win7安装python生成随机数代码分享
2013/12/27 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
python实现最小二乘法线性拟合
2019/07/19 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
程序员岗位职责
2013/11/11 职场文书
大学生怎样进行自我评价
2013/12/07 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
英语教师求职信范文
2015/03/20 职场文书
民事二审代理词
2015/05/25 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android