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

今天有一个idea,vue一些组件,可能会全局都用到,我觉得在main.js写

Vue.component(name, instance)

然后很命令式,写着也不好看,想着能够有一个函数可以指定加载比如components下的文件,自动完成全局化注册,想起来就很帅

放代码:

export function autoLoadingGlobalComponent() {
  const requireComponent = require.context(
    // 其组件目录的相对路径
    ‘../components‘,
    // 是否查询其子目录
    false,
    // 匹配vue后缀文件名的文件
    /\.vue$/
  )
  // 遍历获取到的文件名,依次进行全局注册
  requireComponent.keys().forEach(fileName => {
    // 获取组件配置(实例)
    const componentConfig = requireComponent(fileName)
    // 获取组件的 PascalCase 命名(eg: MYHeader)
    const componentName = _.upperFirst(
      // 获取驼峰式命名
      _.camelCase(
        // 剥去文件名开头的 `./` 和结尾的扩展名 eg: ./food-header.vue -> foodHeader
        fileName.replace(/^\.\/(.*)\.\w+$/, ‘$1‘)
      )
    )
      // 全局注册组件
    Vue.component(
      componentName,
      // 如果这个组件选项是通过 `export default` 导出的,
      // 那么就会优先使用 `.default`,
      // 否则回退到使用模块的根。
      componentConfig.default || componentConfig
    )
  })
}

原文地址:https://www.cnblogs.com/sefaultment/p/10354038.html

时间: 2024-08-30 15:27:12

Vue自动化注册全局组件脚本的相关文章

vue 注册全局组件

注册全局组件有啥好处呢? 提高代码的复用性:哪里需要写哪里,贼方便,就写一个标签:减少代码量:可以再配合slot一起使用,咦~~,舒服 为了让整个项目的可读性,我创建一个文件统一存放全局组件 1.创建common文件夹,文件夹用来存放我们所需要的注册的全局组件 此时我们需要一个index.js文件.上代码 [脑补]我已经再common文件夹下创建好了我引入的这两个文件 这里值得注意的是tabs.name 和 tabItems.name 是啥玩意呀! 诶呀  就是组件命名呗   嗯?需要注意吗?

vue 复习篇. 注册全局组件,和 组件库

初篇 ============================================================== 1. 编写loading组件(components/Loading/index.vue) <template> <div>loading</div> </template> <script> export default { name: 'loading' } </script> 2.注册为全局组件 (c

vue中的全局组件和局部组件的应用

1全局组件 vue框架: https://www.vue-js.com/?tab=all 组件树 solt 内置分发组件 应用见局部组件 2局部组件 2.1局部组件的使用:生子 - 挂子 - 用子 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> &l

Vue.js中全局组件和局部组件的编写差异和注意事项

全局组件的编写方式: <div id='app'> <runoob></runoob> </div> <script> Vue.component('runoob',{ template:'<h1>Hello World!</h1>' }) new Vue({ el:'#app', }) </script> 局部组件的编写方式: <div id='app'> <runoob></r

优雅的处理vue注册全局组件

使用情景: 有频繁使用的组件 需要进行全局注册 可以将这些组件都放在components下同一个文件夹下,在此文件夹中建立 一个js文件 代码如下: import Vue from 'vue'; // 修改文件名首字母大写 function changeComponentName (str) { return str.charAt(0).toUpperCase() + str.slice(1); } // 获取当前文件夹下的的组件 // require.context 三个参数 第一个表示读取文

vue构造器注册UI组件

1 import ConfirmComponent from '../../components/confirm/index' 2 import { mergeOptions } from '../pluginHelper' 3 4 function plugin (Vue) { 5 if (plugin.install) { 6 return 7 } 8 const Confirm = Vue.extend(ConfirmComponent) 9 let $vm = new Confirm({

vue.js注册引用全局消息组件

1 注册 在 src/components 下新建 index.js 文件,复制贴入以下代码: 注册全局组件需要使用 Vue.component,第一个参数 'Message' 是组件名称,第二个参数 Message 是一个对象或者函数,我们这里是一个对象.(vue-cli模板下) import Message from './Message' Vue.component('Message', Message) 2 引用 打开 src/main.js 文件,引入 ./components: im

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

1 <template> 2 <div id="app"> 3 <!--<img alt="Vue logo" src="./assets/logo.png">--> 4 <!--<HelloWorld msg="你妹的是你吗?"/>--> 5 <mtmp></mtmp> 6 <h1>{{ title}}</h1&

详解vue全局组件与局部组件使用方法

这篇文章主要为大家详细介绍了vue全局组件与局部组件的使用方法,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. vue全局/局部注册,以及一些混淆的组件main.js入口文件的一些常用配置, 在入口文件上定义的public.vue为全局组件,在这里用的是pug模版 .wraper 的形式相当于<div class=wraper></div> -main.js文件 **main.js入口文件的内容** import Vue from 'vue' im