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

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

  • 营业税金及附加计算公式
  • 两个日期连在一起怎么写
  • 退回以前年度的增值税账务处理
  • 工程会计和工业会计进销项区别是什么
  • 房地产开发的会计处理
  • 进项税发票留抵
  • 股东分红是净利润还是毛利润
  • 服务类公司没有营业执照
  • 如何查发票是否被红冲
  • 房地产企业交纳所得税吗
  • 境内企业借外债最新政策出台
  • 个人独资企业法人承担什么责任
  • 携程电子发票可以发到QQ邮箱吗
  • 税务审计什么时候进行
  • 显示器件属于什么设备
  • 建安发票税率是多少2011年
  • 公积金超过本地怎么办
  • 办理税务登记与办理法人企业有何区别?
  • 报销差旅费抵扣进项税分录
  • 银行承兑贴现到哪里去了
  • 汇算清缴纳税调整项目明细表怎么填
  • 房屋出租何时缴纳房产税?
  • 进料加工分配率是什么意思
  • 电脑系统还原步骤
  • 如何修改鼠标指示灯颜色
  • 加工费计入成本怎么计算所得税
  • 异地项目不预缴税款可以开票吗
  • 其他货币资金包括哪些内容
  • 所得税如何做帐
  • 公司收入算认缴出资吗
  • mac休眠模式
  • 服务,不动产和无形资产怎么填小规模
  • php获取开始与结束的函数
  • super命令linux
  • flip函数
  • 工程结算 增值税
  • 工会经费计提的会计分录
  • 上个月的留底税这个使用,会计分录
  • mongodb进阶与实战下载
  • sqlserver数据类型转换函数
  • Discus X 3 门户改造熊掌号网页教程
  • 非营利组织增值税怎么处理
  • 营业账簿印花税申报流程
  • 检查记账凭证的内容包括
  • 计提存货跌价准备计算公式
  • 长期待摊费用的摊销期限应该是
  • 增加固定资产原值后折旧
  • 长期股权投资会计实训心得
  • 资产减值损失年报怎么调整
  • 利润分配未分配利润账务处理
  • 往来账目
  • 跨年的社保,账务怎么处理?
  • 银行本票的使用仅限于
  • sql 查询效率
  • mysql动态sql语句赋值
  • Windows 10 与 MySQL 5.5 安装使用及免安装使用详细教程(图文)
  • win10 rs5
  • Windows 10 PC/Mobile Build 14965预览版推送:改进PC端
  • winxp文件夹选项
  • WinXP系统建立VPN连接虚拟专用网络连接的途径
  • ps1是什么文件
  • win8一直配置更新
  • javascript基于什么的语言
  • javascript entries
  • [置顶]bilinovel
  • js的document.getelembyid
  • jquery animate源码
  • unity3d改变物体坐标系
  • for循环取数据
  • unity操作教程
  • [置顶]津鱼.我爱你
  • android菜鸟教程
  • Qt for Android - ANT_HOME is set incorrectly or ant could not be located
  • Android android.support.v4.widget.SlidingPaneLayout 侧滑示例
  • 怎么在手机开数据那里看用了多少流量
  • 北京增值税普通发票图片
  • 黄金手镯可以卖出去吗
  • 自己建造房屋
  • 税局签三方
  • 税法普法宣传
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设