位置: IT常识 - 正文

require.context()的用法详解

编辑:rootadmin
require.context()的用法详解 require.context()的用法详解🌴require.context()的介绍🌺用法一:在组件内引入多个组件🌼用法二:在main.js中引入大量公共组件🍂用法三:使用插件注册全局组件🌵用法四:引入vuex的module🌳用法五:引入项目中所有的svg文件

推荐整理分享require.context()的用法详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

欢迎加入前端学习交流群692081881

🌴require.context()的介绍

我们可以在控制台中打印require,可见require其实就是就是一个函数 我们可以打印require.prototype,查看他身上都有什么方法,都要传入哪些参数

console.log(require.prototype);

require.context参数介绍 require.context(directory,useSubdirectories,regExp)

directory:表示检索的目录useSubdirectories:表示是否检索子文件夹regExp:匹配文件的正则表达式,一般是文件名

例如 require.context(“@/views/components”,false,/.vue$/)

🌺用法一:在组件内引入多个组件

核心代码如下

const path = require("path")const files = require.context("@/views/00-99/requireContext/components", false, /\.vue$/)const modules = {}files.keys().forEach((key) => { const name = path.basename(key, ".vue") modules[name] = files(key).default || files(key)})console.log(modules)export default { components: modules,}require.context()的用法详解

案例如下: 代码目录结如下(这个看起来可能比较乱,先将就一下吧): 有两个将会被用到的组件:

我们主要关注requireContext文件夹里面的内容即可 比如说现在有十好几个组件在components文件夹里,这些组件将要被引入02.vue中进行使用,我们不想使用import一个一个的进行引入,那么这个时候就可以使用require.context了, 代码如下:

index.js(这里指的是requireContext目录下的index.js)

const path = require("path")const files = require.context("@/views/00-99/requireContext/components", false, /\.vue$/)const modules = {}files.keys().forEach((key) => { const name = path.basename(key, ".vue") modules[name] = files(key).default || files(key)})console.log(modules)export default { components: modules,}

02.vue

<template> <div> <COMA /> <COMB /> </div></template><script>import mycomponents from "./index"console.log(mycomponents)export default { components: { COMA: mycomponents.components.zujianA, COMB: mycomponents.components.zujianB, },}</script><style></style>

最终的效果如下;

🌼用法二:在main.js中引入大量公共组件

下面的代码都是在main.js,也就是项目的入口文件中写的,在这个地方将组件进行一次性的全局注册,这么多的代码写在main.js中可能显得比较累赘,我们也可以使用方法三(Vue插件),使得代码看起来比较简介一些。

import Vue from 'vue'// 自定义组件const requireComponents = require.context('../views/components', true, /\.vue/)// 打印结果// 遍历出每个组件的路径requireComponents.keys().forEach(fileName => { // 组件实例 const reqCom = requireComponents(fileName) // 截取路径作为组件名 const reqComName =reqCom.name|| fileName.replace(/\.\/(.*)\.vue/,'$1') // 组件挂载 Vue.component(reqComName, reqCom.default || reqCom)})🍂用法三:使用插件注册全局组件

我们可以新建一个js文件,使用插件的方式进行一次性的全局注册

/* 所有在./components目录下的.vue组件自动注册为全局组件 以<mc-***></mc-***>为组件标签名,***是组件的.name*/const requireContext = require.context('../components', true, /\.vue$/)const requireAll = context => context.keys().map(context)console.log(requireContext)console.log(requireAll(requireContext))export default (Vue) => { requireAll(requireContext).forEach(item => { Vue.component(`vc-${item.default.name}`, item.default) })}🌵用法四:引入vuex的module

app.js与user.js是两个模块,将来都需要被引入到index.js中进行使用 index.js代码(modules目录下的)

import Vue from "vue"import Vuex from "vuex"// 省去了一大堆的import// import app from "./modules/app"// import user from "./modules/user"import getters from "./getters"Vue.use(Vuex)const files = require.context("./modules", false, /\.js$/)console.log("------------")console.log(files.keys())console.log("------------")const modules = {}files.keys().forEach((key) => { modules[key.replace(/(\.\/|\.js)/g, "")] = files(key).default})console.log("------------")console.log(modules)console.log("------------")export default new Vuex.Store({ // 省去了手动注册 // modules: { // app, // user, // }, modules: { ...modules }, getters,})

🌳用法五:引入项目中所有的svg文件const requireContext = require.context('./svg', false, /\.svg/)const requireAll = context => context.keys().map(context)requireAll(requireContext)

#🌼 用法六:利用require.context遍历目录所有的图片

<template> <div id="app"> <li v-for="(img, index) in images" :key="index"> <p>img: {{ img }}</p> <img :src="imgUrl(img)" alt="" /> </li> </div></template><script>const req = require.context("@/assets/images", false, /(\.jpg|\.gif)$/)export default { name: "App", data() { return { images: [], } }, created() { this.images = req.keys() }, methods: { imgUrl(path) { return req(path) }, },}</script><style>img { height: 30px;}</style>

本文链接地址:https://www.jiuchutong.com/zhishi/296027.html 转载请保留说明!

上一篇:html/javascript实现简单的上传(html+javascript)

下一篇:情感计算——多模态情感识别(情感计算的应用)

  • 华为手机怎么测量物体尺寸(华为手机怎么测心率)

    华为手机怎么测量物体尺寸(华为手机怎么测心率)

  • 联想指纹锁怎么设置指纹(联想指纹锁怎么恢复出厂设置)

    联想指纹锁怎么设置指纹(联想指纹锁怎么恢复出厂设置)

  • 水印相机的照片咋删除(水印相机的照片怎么改时间和地址)

    水印相机的照片咋删除(水印相机的照片怎么改时间和地址)

  • 手机二分之一怎么输入

    手机二分之一怎么输入

  • 微信聊天记录不小心删了,可以恢复吗(微信聊天记录不见了)

    微信聊天记录不小心删了,可以恢复吗(微信聊天记录不见了)

  • qq520默契问答怎么删除(qq默契问答在哪里打开)

    qq520默契问答怎么删除(qq默契问答在哪里打开)

  • 三星s10重启了怎么一直在启动(三星s10重启了怎么关机)

    三星s10重启了怎么一直在启动(三星s10重启了怎么关机)

  • 苹果手机一热就没信号(苹果手机一热就变暗怎么办)

    苹果手机一热就没信号(苹果手机一热就变暗怎么办)

  • 蓝牙耳机听歌能听多久(蓝牙耳机听歌能听见生音,为啥接电话听不见生音)

    蓝牙耳机听歌能听多久(蓝牙耳机听歌能听见生音,为啥接电话听不见生音)

  • 画图的扩展名是什么(画图文件的扩展名是)

    画图的扩展名是什么(画图文件的扩展名是)

  • 荣耀各系列手机特点(荣耀各系列手机发布时间)

    荣耀各系列手机特点(荣耀各系列手机发布时间)

  • 华为p40pro有红外线吗(华为p40pro有红外遥控吗)

    华为p40pro有红外线吗(华为p40pro有红外遥控吗)

  • iphone怎么拦截垃圾短信(iphone 如何拦截)

    iphone怎么拦截垃圾短信(iphone 如何拦截)

  • 苹果公司投诉渠道(中国苹果投诉渠道)

    苹果公司投诉渠道(中国苹果投诉渠道)

  • 华为子公司都有哪些(华为子公司有多少家)

    华为子公司都有哪些(华为子公司有多少家)

  • 固态硬盘一般能用几年(固态硬盘一般能读写多少次)

    固态硬盘一般能用几年(固态硬盘一般能读写多少次)

  • 联通大王卡免优酷视频不(联通大王卡免什么流量)

    联通大王卡免优酷视频不(联通大王卡免什么流量)

  • 怎么解锁微信频率过快(怎么解锁微信频道功能)

    怎么解锁微信频率过快(怎么解锁微信频道功能)

  • 手机qq怎么查看好友天数(手机qq怎么查看登录记录)

    手机qq怎么查看好友天数(手机qq怎么查看登录记录)

  • ios13静音未知来电在哪里设置(苹果静音未知来电怎么没用了)

    ios13静音未知来电在哪里设置(苹果静音未知来电怎么没用了)

  • pr1280720怎么设置(pr1920*1080怎么设置)

    pr1280720怎么设置(pr1920*1080怎么设置)

  • soulmate全亮了会怎样(soul全亮了会怎样)

    soulmate全亮了会怎样(soul全亮了会怎样)

  • 苹果8能不能摇控开空调(苹果8可以使用遥控器吗)

    苹果8能不能摇控开空调(苹果8可以使用遥控器吗)

  • 小米mix2s上市时间(小米mix2s啥时候出来的)

    小米mix2s上市时间(小米mix2s啥时候出来的)

  • 苹果a1784什么版本(a1784是什么版本)

    苹果a1784什么版本(a1784是什么版本)

  • iphone触屏失灵软件修复(ios触屏失灵)

    iphone触屏失灵软件修复(ios触屏失灵)

  • wps如何制作指定大小表格(wps设定)

    wps如何制作指定大小表格(wps设定)

  • 手机关屏时间怎么设置(手机关屏时间怎么调华为)

    手机关屏时间怎么设置(手机关屏时间怎么调华为)

  • 【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)

    【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)

  • 评估报告是什么
  • 个人给单位做事怎么开发票
  • 一般纳税人简易征收的适用范围
  • 金蝶迷你版年结怎么操作
  • 防雨棚设计规范
  • 铁路大票抵扣几个点
  • 税务管理中的非税是指
  • 记载资金的账簿要交印花税吗
  • 发票丢失怎么做分录
  • 二手商品没有发票
  • 直系亲属之间转账要交税吗
  • 事业单位之间调动需要多久
  • 企业所得税弥补亏损怎么算
  • 发票开具税收分类是什么意思?
  • 运费发票是含税还是不含税
  • 高速公路通行费发票怎么开
  • 住房公积金业务挂起
  • 2018年工资薪金个税起征点
  • 财务管理和会计学哪个好就业
  • 未成立工会组织情况说明
  • 坏账准备和资产减值损失
  • 退货需要进行的操作
  • 银行自动扣费用是什么
  • win11任务栏全部显示
  • 借条未写还款期限,最长保护期是多久
  • macos使用方法
  • php字符串定义
  • 月末结转营业外支出有余额吗
  • 公司清算债权债务如何清理
  • 小企业取得存货入账价值的依据是
  • 分批付款怎么确认收入
  • php wechat
  • 企业清算时
  • 详解Yii2高级版引入bootstrap.js的一个办法
  • 建筑工程甲方公司
  • php怎么加css
  • 利用php抓取蜘蛛网
  • mac datagrip
  • 企业所得税资产总额平均值怎么算
  • python中切片用法
  • 研发支出什么时候转管理费用
  • 现金零星支出大还是小
  • 公司负担个人所得税如何做账
  • 预支报销单
  • 白条怎么收拾
  • 出口发票已经抵扣认证怎么办
  • 股权转让会计分录摘要怎么写
  • 汇算清缴是不是一定要做
  • 业务招待费汇算清缴账务处理
  • 商业企业购入商品
  • 什么情况下说免贵
  • 企业微信收款如何交税
  • 卸车费属于什么费用类别
  • 第二个季度
  • 个人付款开了公章怎么办
  • 什么情况下可以不交物业费
  • MS-SQL Server 2005 其中三个版本的比较
  • windows xp系
  • linux共享
  • windows任务管理器怎么用
  • win8安装ie8
  • ubuntu zed
  • windows保护电脑
  • 电脑找不到关机选项了怎么关机
  • windows 8.1更新
  • 微软何时推出win10
  • win8系统开启摄像头权限
  • linux 多线程 写文件
  • 微信小程序实现烟花
  • jquery-file-upload 文件上传带进度条效果
  • nodejs json数据库
  • android recyclerview 拖拽加阴影
  • 在一个android创建一个按钮多选对话框
  • 创建一个新用户user1,设置其主目录为/home/user1:
  • linux怎样添加用户
  • javascript定义数组的方法
  • 宁波国税局领导名单
  • 吉林省地方税务局
  • 电子税务局网上登录
  • 增值税预缴税款退税申请怎么写
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设