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

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

  • 梦幻西游pt怎么加点(梦幻西游pt怎么样)

    梦幻西游pt怎么加点(梦幻西游pt怎么样)

  • 为啥子微信推不了自己名片(微信推荐好友为什么推荐不了)

    为啥子微信推不了自己名片(微信推荐好友为什么推荐不了)

  • 钉钉位置修改能发现吗(钉钉 位置修改)

    钉钉位置修改能发现吗(钉钉 位置修改)

  • mate30耳机接触不好(mate30耳机接触不良怎么办)

    mate30耳机接触不好(mate30耳机接触不良怎么办)

  • 百家号阅读量多少才有收益(百家号阅读量多少可以上热搜啊)

    百家号阅读量多少才有收益(百家号阅读量多少可以上热搜啊)

  • 手机直播有哪些平台(手机直播有哪些设备)

    手机直播有哪些平台(手机直播有哪些设备)

  • Word为怎么在页脚里加一条直线(word文档怎么在一页里显示)

    Word为怎么在页脚里加一条直线(word文档怎么在一页里显示)

  • ae预览视频为啥不能播放全部(为什么ae突然预览播放不了)

    ae预览视频为啥不能播放全部(为什么ae突然预览播放不了)

  • 短信内容不在屏幕显示(短信不在屏幕上显示)

    短信内容不在屏幕显示(短信不在屏幕上显示)

  • 抖音两个账号能合并吗(抖音两个账号能发同样的作品吗)

    抖音两个账号能合并吗(抖音两个账号能发同样的作品吗)

  • 苹果ios13.4.1有什么新功能(ios13.4.1bug有哪些)

    苹果ios13.4.1有什么新功能(ios13.4.1bug有哪些)

  • 华为手机耳机模式怎么关闭(华为手机耳机模式关不掉)

    华为手机耳机模式怎么关闭(华为手机耳机模式关不掉)

  • 给别人点赞取消了别人能看到吗(给别人点赞取消了别人能看到吗抖音)

    给别人点赞取消了别人能看到吗(给别人点赞取消了别人能看到吗抖音)

  • 华为笔记本保修多久(华为笔记本保修两年吗)

    华为笔记本保修多久(华为笔记本保修两年吗)

  • vivo手机定时关机在哪(vivo手机定时关机)

    vivo手机定时关机在哪(vivo手机定时关机)

  • windosxp属于系统软件吗

    windosxp属于系统软件吗

  • 华为曲屏手机容易摔碎吗(华为曲屏的屏幕容不容易碎)

    华为曲屏手机容易摔碎吗(华为曲屏的屏幕容不容易碎)

  • Airpods pro怎么查看固件版本(airpodspro怎么查看电池健康)

    Airpods pro怎么查看固件版本(airpodspro怎么查看电池健康)

  • 华为自带booking是什么(华为自带booking是干什么用的)

    华为自带booking是什么(华为自带booking是干什么用的)

  • f检验与t检验的区别与联系(t检验和f检验有何不同)

    f检验与t检验的区别与联系(t检验和f检验有何不同)

  • 网络版微信如何登录(微信网络版如何用手机退登)

    网络版微信如何登录(微信网络版如何用手机退登)

  • 如何自定义win10通知中心的快捷按钮(如何自定义win10开机音乐)

    如何自定义win10通知中心的快捷按钮(如何自定义win10开机音乐)

  • 【线性回归类算法的建模与评估】(线性回归csdn)

    【线性回归类算法的建模与评估】(线性回归csdn)

  • 增值税销项进项什么意思
  • 购买办公用品属于会计对象吗
  • 小规模减免增值税要交企业所得税吗
  • 房产税从租和从价
  • 三代手续费怎么申请返还
  • 厂房设计费计入在建工程吗
  • 五月份有啥节日2020
  • 预缴增值税项目编号填写错误怎么办
  • 形式发票怎么写
  • 子公司固定资产移到母公司
  • 房地产自有资金投入
  • 小企业销售材料计入什么科目借方记什么
  • 一般纳税人注销需要多少钱
  • 采购商品未入库的会计分录
  • 合并报表时抵消内部交易包含的未实现损益的影响有哪些
  • 预付费用计入当期费用吗
  • 税率与征收率有关系吗
  • 如何异地缴纳个人医保
  • 水利基金按含税还是不含税申报
  • 并购重组中需要哪些条件
  • 特殊行业会计公司排名
  • 固定资产停止折扣
  • 公司为员工交的五险一金到底是怎么回事
  • 承兑到期了怎么办
  • 研发费用直接投入占比过高税务预警
  • 2020年餐饮行业免税政策
  • 应收出租包装物的租金计入
  • 危废处置怎么收费
  • window10拖动窗口的手势
  • macbook如何安装
  • 合并报表长投和所有者权益抵消的原理
  • 简易计税分包抵减
  • 股东分红的会计科目怎么做
  • 000.exe病毒
  • 债权转增资本公积账务处理
  • 传递优化的作用
  • 行政事业单位预算由收入预算、支出预算组成
  • 小规模纳税人按季度申报
  • php框架的作用
  • auto.js 教程
  • 增值税专票跨月怎么冲红
  • css+html
  • 公司抽奖奖品怎么做账
  • 无票收入如何报税
  • 13%和17%税率
  • 定额的个体户怎么交税
  • 企业非正常损失如何处理
  • 承租人融资租赁会计账务处理
  • 委托代销业务的会计分录
  • 住房公积金的账户状态是封存是什么意思
  • 接待客户的旅游活动
  • 应交税费借方如何计算
  • 测距仪计入什么科目
  • 培训费产生的差额是什么
  • 小规模现金流量表年报不填可以吗
  • 带折扣的发票如何开具
  • 航天信息开票软件客服
  • 私企的会计都做什么
  • 删除一组数据中的指定数据
  • sql server 复制表中行数据
  • xp系统为什么网页打不开了
  • xp系统怎么取消用户登录
  • instmsiw.exe进程简介
  • linux网络不可用
  • lnmp php
  • win10系统语言包安装方法
  • js let语句
  • linux如何启动tomcat
  • cocos2dx怎么用
  • js跨域解决方案有哪些
  • 基于python的推荐系统
  • js简单代码
  • linux中的tree
  • cs1-u和cs1-f的区别
  • echarts图表
  • android shareuid
  • 浅谈JQuery+ajax+jsonp 跨域访问
  • 企业安置几级残疾人
  • 出口退税网上申报流程
  • 酒精税收分类编码查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设