博客地址:https://ainyi.com/105

批量注册路由的有个博客说到:https://ainyi.com/77

实际工作中,可能会遇到一个大页面里面有很多个模块,这些模块一般是需要拆分到单独的组件中,然后父组件再引入

我最近就遇到一个可以拆分成 10 个模块的大表单页面,拆分成局部组件后还是得一个个导入、声明,最后在 template 应用。作为一个程序员,我们怎么能写这么一大段重复的代码呢啊哈哈哈哈

所以就来搞搞局部组件批量注册和批量应用吧

如图,一个 Index.vue 文件中需要引入 modules 里面 10 个子组件

注册

先扫描读取目录下每个文件,如有需要过滤的组件标出,再批量注册

const requireComponent = require.context('./modules', false, /\w+\.(vue|js)$/)

const cmps = {}
// 这里我把 CreateHeader 组件排除,单独引入
const filterCmps = ['./CreateHeader.vue'] requireComponent.keys().forEach(fileName => {
let cmp = requireComponent(fileName).default
!filterCmps.includes(fileName) && (cmps[cmp.name] = cmp)
})
export default {
components: {
createHeader: () => import('./modules/CreateHeader'),
...cmps
},
data() {
return {
// 这里做了排序处理,每个组件的 name 命名为 xxx_${index}
componentList: Object.keys(cmps).sort(
(a, b) => a.split('_')[1] - b.split('_')[1]
)
}
}
}

应用

template 应用手写每个组件也几乎不可能了,太多了

上面 componentList 做了排序处理,按照原型图的顺序命名组件的 name:xxx_${index}

有顺序了,这里就可以使用 component、is 依次循环应用

如果每个组件的位置不是排列在一起的,那就单独一个个写吧

<template>
<div class="krry-appointment">
<create-header :active="active" :translate="translate"></create-header>
<div class="form-content">
<component v-for="ele in componentList" :key="ele" :is="ele"></component>
</div>
</div>
</template>

这样就大功告成,是不是简化了很多代码~

博客地址:https://ainyi.com/105

Vue 批量注册局部组件及应用的更多相关文章

  1. vue 自动注册全局组件

    vue 自动注册全局组件 vue 注册全局组件的方式 const plugins = { install(Vue) { const requireComponent = require.context ...

  2. VUE注册局部组件

    // 局部组件命名规范 /* 1文件夹名大驼峰 MyLocalBtn.vue 2 使用的时候 将驼峰转化为横杠 <my-local-btn></my-local-btn> */ ...

  3. Vue动态注册异步组件(非同一个工程的组件)

    前言:最近在掘金逛的时候,无意中看到前滴滴前端架构黄轶大佬,看到了大佬分享的一篇博客滴滴 webapp 5.0 Vue 2.0 重构经验分享 ,对于其中第5个问题(异步加载的业务线组件,如何动态注册? ...

  4. vue 中注册全局组件

    1  全局注册组件 建一个 js 文件, 注册全局组件, 并且暴露出去 然后再在 main.js  中引入       在页面就可以直接使用了    2 全局注册过滤器 建立文件, 包含所有过滤器方法 ...

  5. Vue自动化注册全局组件脚本

    今天有一个idea,vue一些组件,可能会全局都用到,我觉得在main.js写 Vue.component(name, instance) 然后很命令式,写着也不好看,想着能够有一个函数可以指定加载比 ...

  6. vue构造器注册UI组件

    import ConfirmComponent from '../../components/confirm/index' import { mergeOptions } from '../plugi ...

  7. Vue 全局注册逐渐 和 局部注册组件

    //定义一个名为 button-counter 的新组件 Script: Vue.component('button-counter',{//button-counter 这个是组件的名字 data: ...

  8. Vue 局部组件和全局组件的使用

    <template> <div id="app"> <!--<img alt="Vue logo" src="./ ...

  9. 38.VUE学习之-全局组件和局部组件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

随机推荐

  1. IO、NIO、BIO的区别

    我们首先得明白什么是同步,异步,阻塞,非阻塞,只有这几个单个概念理解清楚了,然后在组合理解起来,就相对比较容易了. IO模型主要分类: 同步(synchronous) IO和异步(asynchrono ...

  2. idea更改包名无法加载主类解决

    把工程下面的.idea目录下的workspace.xml里面的路径改成你最新的路径即可. <option name="SPRING_BOOT_MAIN_CLASS" valu ...

  3. CentOS7系统重置root密码

    https://blog.csdn.net/qq_42969074/article/details/88080821

  4. JQGrid 应用

    jqGrid 原理 jqGrid是典型的B/S架构,服务器端只是提供数据管理,客户端只提供数据显示.换句话说,jqGrid可以以一种更加简单的方式来展现你数据库的信息,而且也可以把客户端数据传回给服务 ...

  5. JavaScript快速上手

    引入JavaScript项目 在html中 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  6. 键盘--扫描码--ASCII码--显示器上的字符

    在上一篇,我讲了键盘操作会产生扫描码以及如何解析Pause键和Print Screen键的扫描码. 在这一篇,我会说清楚"键盘上的输入为什么会出现在显示器上". 极简版 我们敲击键 ...

  7. 开源项目renren-fast-vue开发环境部署(前端部分)

    开源项目renren-fast-vue开发环境部署(前端部分) 说明:renren-fast是一个开源的基于springboot的前后端分离手脚架,当前版本是3.0 开发文档需要付费,官方的开发环境部 ...

  8. Springboot项目启动后自动创建多表关联的数据库与表的方案

    文/朱季谦 在一些项目开发当中,存在这样一种需求,即开发完成的项目,在第一次部署启动时,需能自行构建系统需要的数据库及其对应的数据库表. 若要解决这类需求,其实现在已有不少开源框架都能实现自动生成数据 ...

  9. linuxc语言图形化编程包含gtk/gtk.h编译总是报错找不到该文件的解决方法

    在编译时输入gcc file.c `pkg-config --libs --cflags gtk+-2.0` 注意`不是单引号,和--前均有一个字符 这样问题就结局啦

  10. WERTYU_键盘错位(JAVA语言)

    package 第三章; import java.util.Scanner; /*  *  把手放在键盘上时,稍不注意就会往右错一位.这样,输入Q会变成输入W,输入J会变成输入K等.        输 ...