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

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

  • iphone13pro怎么旋转屏幕(ios13如何旋转屏幕)

    iphone13pro怎么旋转屏幕(ios13如何旋转屏幕)

  • 虎牙如何设置多屏同看(虎牙怎么多开直播间)

    虎牙如何设置多屏同看(虎牙怎么多开直播间)

  • 华为nova5i可以只换外屏吗(华为nova5可以用两张卡吗)

    华为nova5i可以只换外屏吗(华为nova5可以用两张卡吗)

  • 手机停机充值老是退款(手机停机充值老卡怎么办)

    手机停机充值老是退款(手机停机充值老卡怎么办)

  • 广域网通信中什么不是包交换机的任务(广域网以什么通信为主要目的)

    广域网通信中什么不是包交换机的任务(广域网以什么通信为主要目的)

  • 拼多多怎么筛选发货地(拼多多怎么筛选快递)

    拼多多怎么筛选发货地(拼多多怎么筛选快递)

  • 计算机网络物理安全策略是指(计算机网络物理层特性)

    计算机网络物理安全策略是指(计算机网络物理层特性)

  • siri应用建议怎么删除(siri应用建议怎么设置)

    siri应用建议怎么删除(siri应用建议怎么设置)

  • 华为p20红外线功能怎么开启(华为p20红外线功能)

    华为p20红外线功能怎么开启(华为p20红外线功能)

  • qqvip到期了个性装扮还有吗(qq超级会员过期了个性装扮还在吗)

    qqvip到期了个性装扮还有吗(qq超级会员过期了个性装扮还在吗)

  • 苹果6p无法检查更新(苹果6无法检查更新是什么情况)

    苹果6p无法检查更新(苹果6无法检查更新是什么情况)

  • ipad pro 9.7是第几代(ipad pro 9.7属于第几代)

    ipad pro 9.7是第几代(ipad pro 9.7属于第几代)

  • 收款到账通知已迁移到本公众号是什么意思(收款到账通知已迁移到本公众号会影响银行卡余额吗)

    收款到账通知已迁移到本公众号是什么意思(收款到账通知已迁移到本公众号会影响银行卡余额吗)

  • 蓝盘和黑盘的差别大吗(蓝盘和黑盘的差别)

    蓝盘和黑盘的差别大吗(蓝盘和黑盘的差别)

  • 小米9sedc调光怎么开启(小米cc9edc调光)

    小米9sedc调光怎么开启(小米cc9edc调光)

  • 苹果3手表可以打电话吗(苹果3手表可以有微信吗)

    苹果3手表可以打电话吗(苹果3手表可以有微信吗)

  • 快手主页怎么添加电话(快手主页怎么添加群聊)

    快手主页怎么添加电话(快手主页怎么添加群聊)

  • docx文件怎样打开(docx文件怎样打开手机)

    docx文件怎样打开(docx文件怎样打开手机)

  • iphone 11 pro和max区别(iphone11pro和max哪个值得买)

    iphone 11 pro和max区别(iphone11pro和max哪个值得买)

  • 老人机怎么打字母(老人机怎么打字母出来)

    老人机怎么打字母(老人机怎么打字母出来)

  • 小米8有多重(小米 8 重量)

    小米8有多重(小米 8 重量)

  • v1838a是什么型号(v18311是什么型号)

    v1838a是什么型号(v18311是什么型号)

  • 笔记本电脑发烫(笔记本电脑发烫怎么解决)

    笔记本电脑发烫(笔记本电脑发烫怎么解决)

  • Win7系统无法记住网络访问的凭据的解决方法(win7无法记忆文件保存路径)

    Win7系统无法记住网络访问的凭据的解决方法(win7无法记忆文件保存路径)

  • python中ndarray与list转换的方法(numpy array ndarray区别)

    python中ndarray与list转换的方法(numpy array ndarray区别)

  • 织梦dedecms搜索结果不显示自定义字段解决方法(织梦系统)

    织梦dedecms搜索结果不显示自定义字段解决方法(织梦系统)

  • 个人所得税跨区域可以申报吗
  • 外籍人士如何在中国办理延长签证
  • 土地增值税税率2023
  • 税控系统的清单
  • 企业所得税退抵税费申请(汇算清缴)怎么撤销
  • 资产的企业所得税怎么算
  • 出售股权账务处理
  • 飞机票改签费用怎么算1000块
  • 第三方付款会计分录
  • 企业所得税需要调整的有什么科目
  • 小规模纳税人设备税率
  • 污泥处置中心所得税优惠政策
  • 纳税人首次办税补充信息表怎么填
  • 税控盘抵增值税表怎么填
  • 发票查验平台查询官网手机版App
  • 在PDF里怎么将A4缩小转换为一半打印出来
  • 土地增值税哪些可以抵扣
  • 搅拌站需要什么土地
  • 个人独资企业股权能出让吗
  • 500元以下不需要发票
  • 注册资本变更需要去税务局吗
  • 出售使用过的固定资产如何开票
  • 资产负债中应交税费怎么算
  • ios路由设计
  • 委托代销商品的代销费用
  • 补税的分录
  • edge浏览器about:flags
  • thinkphp整合layuiadmin
  • 银行询证函费用减免
  • php stomp
  • web自动化测试平台
  • iframe之间通信
  • torch.nn.Conv3d
  • windows刻录cd
  • 增值税进项税抵扣凭证
  • 财政补助收入分录
  • 应收利息会计分局
  • 现金流是什么意思举例
  • 一般纳税人和小规模
  • 网商贷企业贷款条件
  • 企业员工福利包括哪些内容
  • php 操作mongodb
  • 公司购入的发明产品
  • 公司月报和季报
  • 一般纳税人什么情况可以开3%的发票
  • 现金流量表编制格式
  • 2021年股权变更要怎么办理?
  • 房产税的计算方式
  • 咨询费如何缴税
  • 物流辅助服务属于
  • 异地建筑服务开全电发票
  • 这个营业外支出怎么算
  • 培训费发票可以抵扣吗
  • 民办幼儿园的经费投入
  • 公司买的车如何入账举例说明
  • 原材料的合理损耗计入入账成本吗
  • 企业年度财务报告的保管期限为
  • 增值税专用发票和普通发票的区别
  • 发票邮寄到家
  • 旅游业餐饮业
  • 债务人以低于债务账面价值的现金清偿某项债务
  • sql2008数据库mdf文件 恢复
  • linux系统基本指令
  • xp系统的ie浏览器无法打开该网页怎么办
  • 多台电脑ip地址设置
  • redhat常用命令总结
  • win7 win8.1
  • mac迅雷不限速
  • window10光驱
  • windows8ip地址怎么设置
  • python win32print
  • unity learn premium
  • 游戏开发u3d
  • 开通局域网共享工具
  • 网页布局设计的一般步骤
  • (转)Unity3D NGUI在UI上显示3D模型
  • 深入理解新发展理念
  • android开发—01开发环境的搭建
  • javascript字符类型
  • jQuery插件开发
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设