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

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

  • 小米wifi怎么连接路由器(小米wi-fi怎么连)

    小米wifi怎么连接路由器(小米wi-fi怎么连)

  • 华为p40pro可以支持NFC吗(华为p40pro可以支持无线充电吗)

    华为p40pro可以支持NFC吗(华为p40pro可以支持无线充电吗)

  • 华为手机充电线是一样的吗(华为手机充电线突然不能快充了)

    华为手机充电线是一样的吗(华为手机充电线突然不能快充了)

  • 微信视频没图像怎么回事(微信视频没图像 但是相机有)

    微信视频没图像怎么回事(微信视频没图像 但是相机有)

  • switch底座灯不亮(switch底座插上去没反应)

    switch底座灯不亮(switch底座插上去没反应)

  • iphonex偶尔无故重启(苹果x偶尔自动重启正常吗)

    iphonex偶尔无故重启(苹果x偶尔自动重启正常吗)

  • qq账号在哪里看得到(qq官方网站登录)

    qq账号在哪里看得到(qq官方网站登录)

  • 钉钉直播老师能看到学生分屏吗(钉钉直播老师能看到谁没参加吗)

    钉钉直播老师能看到学生分屏吗(钉钉直播老师能看到谁没参加吗)

  • 号码已过期再充话费的话能用吗(号码过期充值还有用吗)

    号码已过期再充话费的话能用吗(号码过期充值还有用吗)

  • 华为mate30怎样设置24小时(华为mate30怎样设置两个地区的天气)

    华为mate30怎样设置24小时(华为mate30怎样设置两个地区的天气)

  • 哪一款ipad支持无线充电(哪一款ipad支持120帧)

    哪一款ipad支持无线充电(哪一款ipad支持120帧)

  • 连续转文字失败怎么办(转文字失败怎么解决)

    连续转文字失败怎么办(转文字失败怎么解决)

  • 阻止此来电对方知道吗(阻止此来电对方能发短信吗)

    阻止此来电对方知道吗(阻止此来电对方能发短信吗)

  • nova4e能分屏吗(nova4e可以分屏不?)

    nova4e能分屏吗(nova4e可以分屏不?)

  • vivos5怎么安装flash插件(vivo手机怎么安装flash插件)

    vivos5怎么安装flash插件(vivo手机怎么安装flash插件)

  • 大麦买票需要填2个人吗(大麦买票填错电话号码怎么办)

    大麦买票需要填2个人吗(大麦买票填错电话号码怎么办)

  • 荣耀v20带nfc功能吗(荣耀v20nfc功能用不了)

    荣耀v20带nfc功能吗(荣耀v20nfc功能用不了)

  • 抖音作品显示审核中(抖音作品显示审核中,会影响播放量吗)

    抖音作品显示审核中(抖音作品显示审核中,会影响播放量吗)

  • 华为8x如何使用公交卡(华为8x怎样)

    华为8x如何使用公交卡(华为8x怎样)

  • 新手机跑电快是什么原因(新手机跑电快是什么原因造成的)

    新手机跑电快是什么原因(新手机跑电快是什么原因造成的)

  • vivox9计算器怎么调(vivo手机计算器功能)

    vivox9计算器怎么调(vivo手机计算器功能)

  • 微信自动收款功能在哪(微信自动收款功能怎么开启)

    微信自动收款功能在哪(微信自动收款功能怎么开启)

  • DXEnum.exe是什么进程  DXEnum进程是什么病毒(电脑dwm.exe是什么)

    DXEnum.exe是什么进程 DXEnum进程是什么病毒(电脑dwm.exe是什么)

  • 装卸费属于什么费用
  • 报废的机器设备怎么处理
  • 增票未抵扣丢失怎么处理
  • 附加税计提多了怎么调整税额
  • 发票几个月内可以红冲作废
  • 合作社需要办什么证件
  • 收购公司财务如何管理
  • 先分后合是什么意思
  • 职工工资保险费账务处理怎么做?
  • 金税三期个人所得税税率
  • 公司租赁的车辆发生的费用都可以报销吗?
  • 实收资本未认缴资本还用填写吗
  • 物流快递代收货款怎么退
  • 个人发票增值税
  • 水利基金计提比例
  • 内账的成本结转含税还是不含税?
  • 红字增值税专用发票信息表能作废吗
  • 何时进行文化事业建设
  • 为外国公司提供境内服务
  • 汇算清缴已退税的还可以作废吗
  • 财产清查中固定资产盘亏
  • 生产成本属于什么会计要素
  • 施工企业代甲方购材料的账务处理?
  • 备用金借款单怎么写
  • 商贸公司进项税额大
  • 可引导的macos
  • 腾讯电脑管家网络修复
  • 费用票可以抵扣什么税
  • 企业类型主要有
  • 如何在windows11上安装动态壁纸
  • 盈余公积的提取基数
  • 补缴增值税滞纳金天数
  • 路由器和交换机用什么线连接
  • 退回以前年度多交增值税
  • 进口的增值税票能抵扣吗
  • 部署文档
  • 伊吕波赛道
  • php7安装教程详解
  • thinkphp框架入门
  • 低值易耗品是怎样的
  • input输入框限制输入数字范围
  • php16进制
  • 建信融通e信通贴现几天到账
  • 如何使用vue
  • 帝国cms配置数据库
  • 小规模普票免税的会计分录
  • 商业流通企业
  • 商户待清算账户是什么
  • 二手车交易账务处理
  • python中字典的键有何要求
  • kppw源码
  • 在建工程转固定资产摘要怎么写
  • 个税手续费返还计入哪个科目
  • 在Windows平台上不属于命令ar-d的作用是
  • 结转收入及成本费用
  • 最新出口退税申报需要哪些资料
  • 超市返利账务处理
  • 外经证如何缴税
  • 报关代理费进成本吗
  • 应收票据及应收账款怎么算
  • 季节性停工计入成本吗
  • 律师咨询费计入什么科目
  • 购销业务活动包括哪些
  • 发票开商品类别可以报销吗
  • 公司员工还款会计分录
  • 滞留专票会有什么风险
  • 如何审核原始凭证的正确性
  • win7 bug
  • Windows 7 64位系统手动添加Editplus到鼠标右键的方法
  • win7环境变量在哪打开啊
  • “explorer.exe”进程文件
  • Win10 Mobile Build 10572 其它未记录更新内容汇总
  • openoffice使用
  • Node.js中的什么模块是用于处理文件和目录的
  • vue移动端app开发流程
  • shell脚本怎么进入指定目录
  • javascript 性能
  • android布局教程
  • python 字符串
  • 组织收入原则三个务必
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设