html中批量导入功能,vue如何批量引入组件、注册和使用详解

本文介绍如何使用webpack的require.context功能,一次性批量引入和注册Vue组件,避免重复代码,并演示了如何将组件名从中横线转换为驼峰命名法。通过实例展示了HTML模板使用、JS配置和CSS代码,方便开发者优化开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

组件是我们非常常用的东西,很多人使用组件都是通过一个一个文件去引用和注册。这篇文章就来介绍下vue批量引入组件、注册和使用的方法。

一、使用场景

在日常开发中,经常会有这样一种情况:

import A from 'components/A'

import B from 'components/B'

import C from 'components/C'

import D from 'components/D'

遇到这种重复的代码,就在想,是否可以进行以下优化,一次性全部引入。于是就找到了webpack的api,通过调用require.context来进行处理,具体代码如下:

二、使用步骤

涉及到:

组件名称为带中横线规范,最后要转为驼峰命名法的功能;

component的is属性;

具体详解都在代码中:

1.文件目录

e58df7a996e60e3262118a165610a25a.png

2.HTML代码

v-for="item in tabList"

:key="item.key"

:tab="item.tab"

>

3.js代码

语法:require.context(directory, useSubdirectories, regExp)

directory: 要查找的文件路径

useSubdirectories: 是否查找子目录

regExp: 要匹配文件的正则

返回值:两个方法一个属性

keys(): 返回匹配成功模块的名字组成的数组

resolve(): 接受一个参数request,request为test文件夹下面匹配文件的相对路径,返回这个匹配文件相对于整个工程的相对路径

id:执行环境的id,返回的是一个字符串,主要用在module.hot.accept,应该是热加载

// 中横线转驼峰

var camelCase = function (s) {

return s.replace(/-\w/g, function (x) {

return x.slice(1).toUpperCase();

});

};

// 批量引入子组件 重点,语法见上

const allComponents = require.context("./comp", false, /\.vue$/);

console.log(allComponents.keys())

// ["./tem-a.vue", "./tem-b.vue", "./tem-c.vue", "./tem-d.vue"]

console.log(allComponents.id)

//./src/views/tempManage/comp sync \.vue$

//制作组件数组,在下方components中注册使用

let resComponents = {};

allComponents.keys().forEach(comName => {

let name = camelCase(comName);

const comp = allComponents(comName);

resComponents[name.replace(/^\.\/(.*)\.\w+$/, "$1")] = comp.default;

});

export default {

name: "WaterQuery",

components: resComponents,

data() {

return {

activeComponent: "temA",

tabList: [

{

key: "temA",

tab: "A组件",

},

{

key: "temB",

tab: "B组件",

},

{

key: "temC",

tab: "C组件",

},

{

key: "temD",

tab: "D组件",

},

],

};

},

created() {

if (this.$route.query["val"]) {

this.activeComponent = this.$route.query["val"];

}

},

methods: {

// 切换tab栏

tabChangeHandle(val) {

const {path} = this.$router;

this.$router.push({

path,

query: {val},

});

this.activeComponent = val;

},

},

};

4.css代码(可不看,写出来只是为了代码完整性,拿来可以直接运行展示)

.water-analysis {

height: 100%;

overflow: auto;

}

.content-box {

height: 100%;

}

.tab-pane-box {

height: calc(100% - 62px);

}

三、总结

到此这篇关于vue如何批量引入组件、注册和使用的文章就介绍到这了,更多相关vue批量引入组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值