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

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

  • 微信错发1小时后怎么撤回(微信发错了超过2分钟了怎么办)

    微信错发1小时后怎么撤回(微信发错了超过2分钟了怎么办)

  • 夸克账号怎么退出登录(夸克会员怎么退订)

    夸克账号怎么退出登录(夸克会员怎么退订)

  • 高德地图如何上传自己的店铺位置(高德地图如何上报路况)

    高德地图如何上传自己的店铺位置(高德地图如何上报路况)

  • 淘宝客pid怎么获取(如何获得淘宝客pid)

    淘宝客pid怎么获取(如何获得淘宝客pid)

  • 华为手机吊绳孔在哪里(华为手机吊带怎么装上去的)

    华为手机吊绳孔在哪里(华为手机吊带怎么装上去的)

  • r17屏幕多大尺寸(oppor17屏幕多大尺寸)

    r17屏幕多大尺寸(oppor17屏幕多大尺寸)

  • 苹果6sa1700是什么版本(苹果6s是a1700吗)

    苹果6sa1700是什么版本(苹果6s是a1700吗)

  • 苹果外包装序列号在哪(苹果外包装序列号未激活)

    苹果外包装序列号在哪(苹果外包装序列号未激活)

  • 华为手表gt运动版和时尚版区别(华为手表gt运动版)

    华为手表gt运动版和时尚版区别(华为手表gt运动版)

  • 快手里面点关注要钱吗(快手里面关注的人在哪里取消)

    快手里面点关注要钱吗(快手里面关注的人在哪里取消)

  • mac地址通常存在计算机的(mac地址通常存在计算机的哪里)

    mac地址通常存在计算机的(mac地址通常存在计算机的哪里)

  • 微信仅聊天看不到朋友圈吗(微信仅聊天看不到视频号吗)

    微信仅聊天看不到朋友圈吗(微信仅聊天看不到视频号吗)

  • 造成计算机中存储数据丢失的主要原因是(造成计算机存储)

    造成计算机中存储数据丢失的主要原因是(造成计算机存储)

  • 手机qq怎么查看屏蔽的人(手机qq怎么查看别人撤回的消息)

    手机qq怎么查看屏蔽的人(手机qq怎么查看别人撤回的消息)

  • iphone11pro max双卡吗(iphone11promax双卡吗)

    iphone11pro max双卡吗(iphone11promax双卡吗)

  • 苹果11什么时候开始售卖(苹果11什么时候出来几年了)

    苹果11什么时候开始售卖(苹果11什么时候出来几年了)

  • coaxial是音频还是视频(alac是什么音频格式)

    coaxial是音频还是视频(alac是什么音频格式)

  • 青桔单车定位装置在哪(青桔电单车定位装置在哪)

    青桔单车定位装置在哪(青桔电单车定位装置在哪)

  • 芒果tv怎么退出登录(芒果TV怎么退出自动续费)

    芒果tv怎么退出登录(芒果TV怎么退出自动续费)

  • vivoz5x支持人脸识别吗(vivoz5x支持人脸解锁吗)

    vivoz5x支持人脸识别吗(vivoz5x支持人脸解锁吗)

  • 手机腾讯文档能导出吗(手机腾讯文档能设置隐藏吗)

    手机腾讯文档能导出吗(手机腾讯文档能设置隐藏吗)

  • oppor17多少克(oppor17有多大)

    oppor17多少克(oppor17有多大)

  • 闲鱼设置隐藏动态(隐藏闲鱼里的动态)

    闲鱼设置隐藏动态(隐藏闲鱼里的动态)

  • 图片收藏了在手机哪里(图片收藏了在手机相册里找不到)

    图片收藏了在手机哪里(图片收藏了在手机相册里找不到)

  • 【学vue跟玩一样】快速学会常用指令及如何理解生命周期(vue好不好学)

    【学vue跟玩一样】快速学会常用指令及如何理解生命周期(vue好不好学)

  • openAI api 生产最佳实践(open api平台)

    openAI api 生产最佳实践(open api平台)

  • 税务登记如何注销
  • 个人所得税累计收入
  • 未休年假补助
  • 季度申报残保金怎么填写
  • 视同销售销售额的确定方法
  • 善意接受虚开发票只能自认倒霉么
  • 债权重组会计分录大全
  • 融资租赁营改增时间
  • 非财政补助支出
  • 挂账留底税额如何抵扣?
  • 出口供货企业
  • 雇主责任险是否属于财产保险
  • 外贸公司发票过期怎么办
  • 银行贷款的纳税申报表指的所得税还是增值税
  • 注册资金印花税是资金账簿吗
  • 可以抵扣的增值税计入什么科目
  • 财税2009年59号解读
  • 垫资的利息的合法区间
  • 总分机构类型怎么选
  • 申报表作废后怎么显示的是已申报,不能重新申报
  • 吊装费和吊车费是一样的不?
  • 年薪制与月薪制的优与劣
  • 事业单位事业收入和经营收入要上缴财政
  • 工程发票需要进项吗
  • 向人力资源公司辞职怎么说
  • 厂房转让会计分录
  • 房地产开发企业的土地使用权计入哪里
  • 库管和车间工人哪个好
  • 结转进项税销项税额的分录怎么写
  • deepin 20 wifi
  • 资产减值损失汇算清缴需要调增嘛?
  • 个人独资所得税税率表最新
  • 已经认证抵扣的发票,发生冲红,要怎么处理
  • 企业信用贷款账户是什么
  • 工程竣工结算资料存档几年
  • 应交消费税影响当期损益吗
  • 企业购进固定资产其入账成本应包括
  • MySQL高级查询
  • 时点数和时期数 订单量 库存量点击量
  • vue自学
  • 面试官问:mysql 的自增 id 用完了,怎么办?
  • addr指令
  • php中&&什么意思
  • 财务章和公章下面数字一样吗
  • 个税申报需要什么资料
  • 国有资产无偿划转的会计处理
  • 工资表中可以出现减号的情况吗
  • 公司车辆退保进哪个科目
  • 销售费用和管理费用占比多少合理
  • 个体工商户转企业政策
  • 承兑汇票贴现的利率
  • 撤销税务局
  • 对方给我们等额的钱
  • 主营业务收入净额在哪个报表里面
  • 定额备用金与非备用金
  • 以他人名义投资该签订什么协议
  • 发票隔年还能做账吗
  • 用友t6生成常用凭证
  • 保险公司的返点能要吗
  • 积分中的换元怎么使用
  • sql server如何
  • win7系统怎么把桌面文件放到d盘
  • windows xp的设备管理器在哪
  • centos7关闭kdump
  • Win10系统如何开启全部权限
  • 全自怎么安装方法
  • ubuntu系统应用
  • 无线网络连接上但上不了网
  • win7系统开机无限重启
  • win8怎么系统重装系统
  • win8 设置
  • win10wifi打开后自动关闭
  • node.js安装教程详细
  • 纹理烫男
  • Android中Strings.xml使用占位符示例
  • 税务总局机关
  • 四川纳税互动平台app
  • 房产税的计税依据及税率
  • 税务总局广西
  • 重庆市大学生田径锦标赛
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设