vue 动态注册组件,vue全局注册

  vue 动态注册组件,vue全局注册

  本文主要介绍了Vue自动注册全局组件脚本,有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

  

目录

  全局组件自动注册代码vue组件注册全局注册使用require.context实现前端工程自动化(js脚本实现全局组件自动注册)基本思路和使用场景

  

自动化注册全局组件

  今天有一个想法,vue的一些组件,可能是全球通用的。我觉得应该用main.js写

  Vue.component(名称,实例)

  然后是势在必行,写出来也不好看。我认为,可以有一个功能,例如,可以指定组件下文件的加载,并自动完成全局注册。想起来很帅。

  

放代码

  导出函数autoLoadingGlobalComponent() {

  const require component=require . context(

  //其组件目录的相对路径

  ./组件,

  //查询其子目录?

  假的,

  //与vue后缀文件名匹配的文件

  /\.vue$/

  )

  //遍历得到的文件名,依次全局注册。

  requireComponent.keys()。forEach(文件名={

  //获取组件配置(实例)

  const component config=require component(文件名)

  //获取组件的PascalCase名称(例如:MYHeader)

  const componentName=_。上层优先(

  //获取驼峰命名

  _.茶包(

  //剥掉`。/`开头和扩展名例如:文件名末尾的/food-header.vue-foodheader。

  fileName.replace(/^\.\/(.*)\.\w $/, $1 )

  )

  )

  //全局注册组件

  组件(

  组件名,

  //如果此组件选项通过导出默认值导出,

  //然后`。将首先使用默认值,

  //否则退回到用法模块的根。

  componentConfig.default 组件配置

  )

  })

  }

  

vue组件注册全局注册

  

使用require.context实现前端工程自动化(实现全局组件自动化注册的js脚本)

  vue的组件注册分为全局注册和局部注册,使用上的基本区分如下:

  本脚本参考了vue官网文档,并在js脚本代码和注释上做了一些调整,便于阅读理解和使用。因为官网文档总是很珍贵,有些地方不那么好理解和使用,所以这篇文章可以算是官网的进化版。

  全局注册:注册后全球通用。您可以直接使用它,而无需导入组件和向component注册组件。如果注册的全局组件未被使用,webpack在打包时仍会打包组件的内容。(个人在这里,如果不使用组件,为什么要注册呢?所以很多时候,这个装箱单是可以忽略的。当然,如果保留组件以备后用,也可以在本地注册)。

  局部注册:编写vue文件中需要使用的组件。需要使用时,导入文件。Component注册组件,并在使用时命名组件,然后就可以像使用标签一样使用组件了。(本地注册和全局注册的区别在于,如果您没有使用本地注册的组件,则在打包webpack时,文件不会被打包。如果项目中还有组件,但以后可能会用到,那么可以使用本地注册。)

  事不宜迟,开始代码;前面一段是对这个脚本使用的基本介绍,实用方可以跳过(建议大家都了解一下)。

  

基本思路

  一个webpack api,通过执行require.context函数获得特定的上下文,主要用于实现模块的自动导入。在前端项目中,如果从一个文件夹中导入很多模块,可以使用这个api,它会遍历文件夹中的指定文件,然后自动导入,这样就不需要每次都显式调用导入模块。

  

使用场景

  以前需要全局导入注册组件时,使用require.context函数进行批量注册,使得组件注册自动化。也就是说,新的组件需要全局注册,只有在自定义文件夹中创建它们才能全局使用。但是,在创建它们时,您应该注意自己的自动化文件中搜索文件的匹配规则,否则,如果它们不符合自定义的搜索规则,则无法自动注册为全局组件。

  注意:* *所有需要全局注册的组件都必须在指定的文件夹中,否则脚本无法遍历你的组件,所以无法自动注册使用。

  当项目为webpack打包时,使用自动全局注册会更友好:

  基本代码如下:

  从“vue”导入vue

  constraquirecomponent=require . context(//Web Pack的api,函数方法,匹配文件。//查看当前目录下的文件(找到所需文件的相对路径)

  False,//不查看子文件

  /.vue$///匹配正则表达式的方式,只查看带后缀的文件。vue。

  )

  console.log(必需组件)

  //循环获取的文件,循环过程中可以处理文件名。

  requireComponent.keys()。forEach((文件名)={

  console.log(1)

  //获取组件配置(组件模板)

  const component config=require component(文件名)

  //要注册的组件的名称,获取的组件文件名将被处理。

  const componentName=文件名。replace(/^\.\/_/, )。替换(/\。\w $/,)。拆分(。/)。联接(“”)

  Console.log(componentName,“基本组件文件获取测试”)

  //将组件注册到循环中的全局,

  Vue.component(componentName,//根据文件名处理后将注册到全球的组件名。

  component config . default component config

  })

  当文件正确打印出处理后的组件名时,意味着自动组件注册基本完成,然后将自动组件注册的js文件引入main.js

  从“vue”导入Vue

  从导入应用程序。/App.vue

  从导入路由器。/路由器

  从导入存储。/商店

  从“element-ui”导入ElementUI

  导入 element-ui/lib/theme-chalk/index . CSS

  “导入”。/components/component/_ globals //通过直接向全球引入共享,可以实现组件的自动注册。

  Vue.config.productionTip=false

  Vue.use(ElementUI)

  新Vue({

  路由器,

  店,

  render: h=h(App)

  }).$ mount(“# app”)

  注意:在团队中工作时,您应该注意自动化文件中指定的组件文件夹以及匹配文件名的规则。

  以下是具体文件位置和使用效果截图:

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: