位置: 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)

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

  • 怎么用小爱同学控制空调(怎么用小爱同学开电脑)

    怎么用小爱同学控制空调(怎么用小爱同学开电脑)

  • 微信可以二次编辑朋友圈吗(微信二次编辑朋友圈的赞还在吗)

    微信可以二次编辑朋友圈吗(微信二次编辑朋友圈的赞还在吗)

  • 美柚怎么清除历史数据(美柚如何清除全部记录)

    美柚怎么清除历史数据(美柚如何清除全部记录)

  • 苹果导入通讯录没反应(华为往苹果导入通讯录)

    苹果导入通讯录没反应(华为往苹果导入通讯录)

  • 快手怎么截取别人视频(快手怎么截取别人的配音)

    快手怎么截取别人视频(快手怎么截取别人的配音)

  • 把微信聊天记录怎么转移到新手机(把微信聊天记录发到网上违法吗)

    把微信聊天记录怎么转移到新手机(把微信聊天记录发到网上违法吗)

  • xs面容坏了还能恢复吗(x面容坏了怎么办)

    xs面容坏了还能恢复吗(x面容坏了怎么办)

  • 笔记本电脑开一晚上有事吗(笔记本电脑开一会儿就很烫)

    笔记本电脑开一晚上有事吗(笔记本电脑开一会儿就很烫)

  • vivonex3和3s有什么区别(vivonex3和nex3s市场价多少)

    vivonex3和3s有什么区别(vivonex3和nex3s市场价多少)

  • 开抖音小店有什么要求(开抖音小店有什么好处)

    开抖音小店有什么要求(开抖音小店有什么好处)

  • 一个手机怎样登录三个微信号(一个手机怎样登录两个钉钉号)

    一个手机怎样登录三个微信号(一个手机怎样登录两个钉钉号)

  • 开启云空间是怎么回事(开启了云空间后还能关掉吗)

    开启云空间是怎么回事(开启了云空间后还能关掉吗)

  • apple air3上市时间(apple air3什么时候出的)

    apple air3上市时间(apple air3什么时候出的)

  • 钉钉下载到手机的文件在哪里(钉钉下载到手机的文件为什么格式不对)

    钉钉下载到手机的文件在哪里(钉钉下载到手机的文件为什么格式不对)

  • 爱奇艺如何设置小窗大小(爱奇艺如何设置多台设备登录)

    爱奇艺如何设置小窗大小(爱奇艺如何设置多台设备登录)

  • 怎样关闭微信的刷脸功能(怎样关闭微信的自动扣费功能)

    怎样关闭微信的刷脸功能(怎样关闭微信的自动扣费功能)

  • word文档如何设置目录链接(word文档如何设置行高)

    word文档如何设置目录链接(word文档如何设置行高)

  • 华为nova5pro怎么双屏(华为nova5pro怎么分屏)

    华为nova5pro怎么双屏(华为nova5pro怎么分屏)

  • 小米手环4多久能充满电(小米手环4多久充满)

    小米手环4多久能充满电(小米手环4多久充满)

  • 模拟示波器怎么调正弦波(模拟示波器怎么读数)

    模拟示波器怎么调正弦波(模拟示波器怎么读数)

  • 突然停电电脑文件没有保存怎么办(突然停电电脑文件cad没有保存怎么办)

    突然停电电脑文件没有保存怎么办(突然停电电脑文件cad没有保存怎么办)

  • 微信群通过二维码可以进多少人(微信群二维码)

    微信群通过二维码可以进多少人(微信群二维码)

  • Vue3+TS教程(vue3+ts写法)

    Vue3+TS教程(vue3+ts写法)

  • 个体户可选择不交税吗
  • 固定资产接受捐赠的计入什么科目
  • 租厂房需要交租赁税吗
  • 蓝字发票有认证的吗
  • 代扣代缴个税对企业所得税的影响
  • 营业外支出怎么结转本年利润
  • 自产自销的苗木怎么做账
  • 个人购买商铺如何缴税
  • 个人独资公司需要报税吗
  • 资产的企业所得税怎么算
  • 本月完工入库会计分录
  • 财务费用利息收入借方为负数是什么意思
  • 低值易耗品摊销借贷方向
  • 过期食品翻新
  • 分配股利需要缴纳个税吗
  • 用友软件冲销凭证是什么意思
  • 城建税如何纳税申报
  • 进项发票未抵扣部份开红冲后当月能抵扣吗?
  • 安全生产费纳税调整政策
  • 建造合同中甲供材选择一般计税还是简易计税更省税?
  • 小规模纳税人金额
  • 纳税人转让2016年以后的土地使用权
  • 软件服务类企业
  • 政府土地出让金返还
  • 怎么知道定额发票是真是假的
  • 哪里查询发票是否抵扣
  • linux对硬件的要求
  • 工程用的东西有什么
  • 应收账款和预收账款的关系
  • 个人多交社保划不划算
  • 发生额怎么算
  • 委托代销视同买断会计分录怎么写?
  • 公司要交什么税个人卖给公司的二手车
  • 普通发票的开票规定
  • 企业所得税营业外收入
  • 小规模纳税人低于30万怎么填报申报表
  • vue docs
  • 最新windows11安装要求
  • thinkphp如何做微服务
  • 收到工程款怎么做凭证
  • 企业所得税汇算清缴扣除标准2023
  • 开收据可以列收入吗
  • python socket连接后发送数据被强行终止
  • sql语句字符串比较大小
  • 银行存款调节表调整后的银行存款余额
  • 购买债券的利息会计分录
  • 多付的账款计入什么科目
  • 用友t3的操作流程
  • 存货发出的计价方式有哪些
  • 工会经费计提比例是应发工资还是实发工资
  • 进口报关费入什么科目
  • 房地产企业怎么交房产税
  • 其他应收款项
  • 电子税务局申报比对异常
  • 增值税的专用发票的相关规定
  • 缴纳工会经费如何记账
  • excel格式变了怎么办
  • fedora linux安装教程
  • 开机蓝屏怎么回事
  • ubuntu14.04 LTS 下vsftpd安装与配置教程详解
  • dvd rom drive bbs priorities
  • win10系统怎么设置不锁屏和休眠
  • win7系统连接蓝牙音箱
  • linux拉起进程
  • jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
  • [置顶]从lv2开始开挂的原勇者候悠闲的异世界生活
  • listview安卓
  • bat批处理命令大全
  • Nodejs+Socket.io实现通讯实例代码
  • unity3d性能优化工具
  • python视频下载
  • radio js取值
  • 跟踪子弹
  • android studio怎么清除缓存
  • 电子税务局打印发票提示本机未检测到
  • 金米财税不退款怎么办
  • 即征即退的留抵税额是否可以抵一般计税的税额
  • 地税局属于市直单位吗
  • 北京地税查询官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设