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

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

  • 华为matebook14触屏怎么打开(华为matebook14触屏可以关掉吗)

    华为matebook14触屏怎么打开(华为matebook14触屏可以关掉吗)

  • 华为nova5对比荣耀20青春版(华为nova5对比荣耀x30哪个好)

    华为nova5对比荣耀20青春版(华为nova5对比荣耀x30哪个好)

  • 苹果手机录屏功能在哪(苹果手机录屏功能怎么设置)

    苹果手机录屏功能在哪(苹果手机录屏功能怎么设置)

  • funplus是什么(funplus是什么公司)

    funplus是什么(funplus是什么公司)

  • iphone11呼叫转移设置不了(iphone11呼叫转移怎么关掉)

    iphone11呼叫转移设置不了(iphone11呼叫转移怎么关掉)

  • 苹果11来电铃声为什么拿起来声音就变小了(苹果11来电铃声怎么下载)

    苹果11来电铃声为什么拿起来声音就变小了(苹果11来电铃声怎么下载)

  • 哪些行为会被闲鱼降权(哪些行为会被征信)

    哪些行为会被闲鱼降权(哪些行为会被征信)

  • 平滑帧数速度什么意思(帧数平滑有什么用)

    平滑帧数速度什么意思(帧数平滑有什么用)

  • x30屏幕尺寸(荣耀x30屏幕尺寸)

    x30屏幕尺寸(荣耀x30屏幕尺寸)

  • oppo手机测距仪在哪里(oppo手机测距仪收费吗)

    oppo手机测距仪在哪里(oppo手机测距仪收费吗)

  • 网线闪橙色灯什么意思(网线橙灯闪烁)

    网线闪橙色灯什么意思(网线橙灯闪烁)

  • 抖音账号永久封禁怎么解开(抖音账号永久封禁多久能恢复正常)

    抖音账号永久封禁怎么解开(抖音账号永久封禁多久能恢复正常)

  • 一加六手机是什么手机(一加六手机什么时候出的)

    一加六手机是什么手机(一加六手机什么时候出的)

  • 微博移除粉丝会通知对方吗(微博移除粉丝会降权重吗)

    微博移除粉丝会通知对方吗(微博移除粉丝会降权重吗)

  • 华为p30pro可以反向充电吗(华为p30pro有反向充电吗?)

    华为p30pro可以反向充电吗(华为p30pro有反向充电吗?)

  • 手机私密相册在哪(手机私密相册在哪文件夹)

    手机私密相册在哪(手机私密相册在哪文件夹)

  • 华为mate30 5G版支持防水吗(mate30支持)

    华为mate30 5G版支持防水吗(mate30支持)

  • 华为手机保修期是多久(华为手机保修期多长时间)

    华为手机保修期是多久(华为手机保修期多长时间)

  • 华为怎么设置截图(华为怎么设置截屏方式)

    华为怎么设置截图(华为怎么设置截屏方式)

  • 小遛共享车费怎么退(小遛共享单车怎么计费)

    小遛共享车费怎么退(小遛共享单车怎么计费)

  • 快手添加商品审核要多久(快手添加商品审核之后就直接上架么)

    快手添加商品审核要多久(快手添加商品审核之后就直接上架么)

  • ipad怎么样刷机(ipad咋样刷机)

    ipad怎么样刷机(ipad咋样刷机)

  • ppt如何添加二级标题(ppt如何添加二级文本)

    ppt如何添加二级标题(ppt如何添加二级文本)

  • 3dmax怎么让棱边变圆滑(3dmax怎么让模型的棱角分明)

    3dmax怎么让棱边变圆滑(3dmax怎么让模型的棱角分明)

  • 怎么修改boot.ini文件(怎么修改boot启动项)

    怎么修改boot.ini文件(怎么修改boot启动项)

  • 番茄开发票属于蔬菜吗
  • 物业公司财务制度及核算方法
  • 企业出现亏损的原因有哪些
  • 房产税征税税率
  • 专用发票可以下账吗
  • 品种法在制造企业中的运用
  • 土地罚款可以计入成本吗?
  • 职工死去还有工资吗
  • 活动策划税费
  • 总分机构类型怎么选
  • 转让公司账本凭证都要移交吗
  • 清算汇缴报表填写模板
  • 银行对账单是否属于会计档案
  • 预收房屋租金如何交房产税
  • 职工食堂租赁费
  • 地方教育附加什么时候交
  • 临时设施需要验收吗
  • 小规模纳税人适用的增值税征收率
  • 个税申报时个人怎么填
  • 软件著作权认证查询
  • 网络销售平台优势有哪些
  • 报销差旅费如何报税
  • 印花税的征收项目
  • 公司收到拆迁补偿款要交税吗
  • Win11怎么隐藏底部
  • Linux系统中矢量图ai格式怎么打开?
  • 电脑机箱前面耳机的WIN10系统没有声音怎么办
  • 为员工购买商业保险的通知
  • asldrsrv.exe
  • fatal error: opencv/cv.h: 没有那个文件或目录 错误;fatal error: opencv2/contrib/contrib.hpp: 没有那个文件或目录,opencv多版本
  • 个体户不建账怎样处罚
  • 浏览器无痕浏览后警察能查到吗
  • 定额发票已验旧是什么意思
  • php 断点续传
  • token验证器
  • afn取消请求
  • 万能的python
  • 帝国cms是基于什么的
  • 礼品赠送纳税标准
  • 员工办理健康证需要什么材料
  • 座谈会费用报销明细怎么填写
  • 固定资产被替换的账面原值怎么算
  • mysql有几种
  • 网红产品的推广文案
  • 累计销售额怎么算
  • 个体户开票超过多少认定为小规模
  • 固定资产直接记入费用科目
  • 企业与债权人进行债务重组
  • 赠送给客户的商品怎么入账
  • sql server 防止表锁死
  • 私车公用发票去哪个税务局开
  • 捐赠 税收
  • 退休人员基本养老金包括哪些
  • 资产减值损失如何计提
  • 关于母子公司的关系的表述,正确的是( )
  • 参展企业收到展览费用
  • 应付账款转入营业外收入的证明
  • 电子发票上面的字体是什么字体
  • 合并两公司的帐务处理
  • sql server高级应用
  • 压缩sql数据库
  • 屏幕共享远程控制
  • 微软状态
  • cocos2dx schedule
  • 结构 类型
  • 铁嘴的故事
  • 使用jquery
  • js数据的基本类型有哪些
  • angular重新渲染组件
  • 弹簧设计软件手机版
  • javascript数组去重set方法
  • unity3d开发之对象池
  • Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
  • android 加载大量图片
  • 非正常户记录
  • 工行网银如何申请发票
  • 如何查询车辆购置税
  • 年税怎么扣
  • 江苏几个地级市几个县级市
  • 铜陵职业技术学院专业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设