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

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

  • 新浪微博营销常见的方法和技巧(微博营销的内容有哪些)

    新浪微博营销常见的方法和技巧(微博营销的内容有哪些)

  • 并不是所有企业都适合微信营销的,为什么?(并不是所有企业都需要f ssc)

    并不是所有企业都适合微信营销的,为什么?(并不是所有企业都需要f ssc)

  • 抖音怎么调整左右镜像(抖音怎么设置往左滑)

    抖音怎么调整左右镜像(抖音怎么设置往左滑)

  • 抖音视频投稿功能封禁怎么办(抖音视频投稿功能已封禁怎么解除)

    抖音视频投稿功能封禁怎么办(抖音视频投稿功能已封禁怎么解除)

  • 手机视频压缩怎么弄(手机视频压缩怎么压缩)

    手机视频压缩怎么弄(手机视频压缩怎么压缩)

  • 惠普3636加墨后检测不到墨盒(惠普3636加墨后无法打印东西)

    惠普3636加墨后检测不到墨盒(惠普3636加墨后无法打印东西)

  • 闲鱼资金保护中要几天(闲鱼资金保护中怎么申诉)

    闲鱼资金保护中要几天(闲鱼资金保护中怎么申诉)

  • 华为换苹果数据迁移(华为换苹果数据中断)

    华为换苹果数据迁移(华为换苹果数据中断)

  • 去实体店买手机要注意什么(去实体店买手机好还是网上买好)

    去实体店买手机要注意什么(去实体店买手机好还是网上买好)

  • ipad2支持办公软件吗(ipad2可以用办公软件吗)

    ipad2支持办公软件吗(ipad2可以用办公软件吗)

  • 怎么用函数公式从身份证号里提出出生日期(怎么用函数公式提取其他表中的名称与本表中没有的名称)

    怎么用函数公式从身份证号里提出出生日期(怎么用函数公式提取其他表中的名称与本表中没有的名称)

  • 如何申请微信服务号(如何申请微信服务二维码)

    如何申请微信服务号(如何申请微信服务二维码)

  • 手机黑边变宽怎么修复(手机黑边宽度)

    手机黑边变宽怎么修复(手机黑边宽度)

  • 链家app如何预约看房(链家网上签约怎么签约的)

    链家app如何预约看房(链家网上签约怎么签约的)

  • oppoa9应用加密在哪里(oppo a79应用加密)

    oppoa9应用加密在哪里(oppo a79应用加密)

  • 哈罗单车关锁在哪里(哈罗单车关锁怎么关)

    哈罗单车关锁在哪里(哈罗单车关锁怎么关)

  • 抖音道具不支持当前设备什么情况(抖音为啥道具不可用)

    抖音道具不支持当前设备什么情况(抖音为啥道具不可用)

  • 爱奇艺截图保存在哪里(爱奇艺截图保存不能截图太多吗)

    爱奇艺截图保存在哪里(爱奇艺截图保存不能截图太多吗)

  • 重装系统后出现一堆字母(重装系统后出现ctrl+alt+del)

    重装系统后出现一堆字母(重装系统后出现ctrl+alt+del)

  • 【香港回归22周年】 (© ViewStock/Getty Images)(2020香港回归23年)

    【香港回归22周年】 (© ViewStock/Getty Images)(2020香港回归23年)

  • JavaScript 获取 input 输入框内容的方法(javascript获取input的值并计算)

    JavaScript 获取 input 输入框内容的方法(javascript获取input的值并计算)

  • 智能驾驶ADAS算法设计及Prescan仿真(1): 前向碰撞预警FCW算法设计与simulink仿真(智能驾驶adas概念股龙头)

    智能驾驶ADAS算法设计及Prescan仿真(1): 前向碰撞预警FCW算法设计与simulink仿真(智能驾驶adas概念股龙头)

  • Vue中JSX的基本用法(vue中使用jsx语法)

    Vue中JSX的基本用法(vue中使用jsx语法)

  • 国家税务总局操作指引
  • 餐饮业厨房设备专票可以抵税吗
  • 金税四期对纳税的影响
  • 增值税专用发票抵扣税额是什么意思
  • 新车检测费能入什么科目
  • 公司注销后持股要交税吗
  • 对母公司的其他说法
  • 总公司签合同发票由分公司开可以吗
  • 餐饮业加计递减怎么算
  • 个体户银行开户是开公户还是私户
  • 预存1000送100促销活动方案
  • 增值税需要结转到本年利润吗
  • 存货非正常损失的纳税筹划
  • 4s店收取的金融服务费用
  • 床位周转率计算公式
  • 以前多计提了应付职工薪酬怎么平账?
  • 原材料什么时候结转成本
  • 加油的时候可以开发票吗
  • 预缴所得税需要结转吗
  • 作废发票如何管理
  • 往来款可以作为投资款吗
  • 跨年度的费用发票做错了怎么办
  • 公司办事处人员配置标准最新
  • 购买少数股东权益的会计处理
  • 应纳税所得额计算个税
  • 出口企业进项税额转出怎么理解
  • 保险公司买保险和银行买保险有什么区别
  • 处置股权后相应债权坏账损失怎么处理?
  • 销售商品结转成本会计分录
  • WIN10显示缩略图
  • svhost.exe - svhost是什么进程 有什么作用
  • 会计分录错误用什么方法更正
  • php处理的图片格式是什么
  • 企业在弥补亏损和提取法定盈余公积前一般不得分配利润
  • 域名怎么交费
  • 查补以前年度企业所得税的申报处理
  • fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
  • 分公司能不能独立法人
  • nrm报错
  • 长期待摊费用与预付账款的区别
  • vue的自定义指令怎么用
  • ts基础
  • 日期选择器的()属性表示选择器的粒度
  • css选择器权重
  • 创建ftp软件
  • cpu power management设置
  • phpcms怎么用
  • 一般纳税人销售自行开发的软件产品
  • 销售时的赠品怎么做账
  • 新建账簿的具体步骤
  • 房产公司业务招待费扣除政策
  • 企业税金及附加包括什么
  • 调减加计抵减额什么意思
  • 医疗器械和医疗耗材是一回事吗
  • 咨询费收入成本怎么算
  • 2020年申报期截止时间
  • 工人发生工伤的责任划分
  • 支票存根联可以涂改吗
  • 费用利润率计算公式是怎样的?
  • 周转材料计入现金流量表
  • 如何填写社会保障卡信息
  • 无偿使用期限
  • 应收账款如何做平
  • 收不回来的账怎么处理
  • 所有者权益的概念和特征
  • windows7问题解决方案
  • Linux操作系统分为
  • windows7的使用方法
  • OpwareSE2.exe - OpwareSE2是什么进程 有什么用
  • js设计模式有什么用
  • perl中sub
  • js中cookie
  • dos批处理实例800例
  • 设计师的悲哀
  • 播放一个灵异电影
  • Ubuntu修改用户名
  • word文件排序乱怎么恢复
  • javascript教程 csdn
  • android背景图片透明度alpha
  • 西安市地方税务局高新技术产业开发区分局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设