组件优化的两三事(一):动态注册组件

组件优化的两三事(一):动态注册组件

最近在研究组件,现研究心得是组件最基本的优化是使它可以做到可延展性。
关于可延展性,我认为就是当一个组件已经做好,后期可以可以不断加功能,加功能的前提使不会影响前期功能,并且希望加功能所涉及的到问文件尽可能的少,最好做到我们只需要加上一个新的文件用来实现新功能,其他不做改动。

所以说,若要做到上述的要求,首先一个问题就是组件的注册。
新功能的组件若想加到已有组件中,必须要在已有组件中组册该新组件,但每次增加一个新功能组件就要注册一个的话,需要修改的文件数目就会增多,所以动态注册,是一个极好的办法。

动态注册

关于动态注册组件,其实在vue教程文档中已明细讲述:基础组件的自动化全局注册
下面是我的个人理解与使用:

优点:
1、自动注册组件,不需要一一添加
2、可规定组件的命名格式
3、全局动态注册可使所有组件可以使用

缺点:
1、只可用于全局注册
2、非组件范围内代码,每次项目引用需全局配置

使用:

需动态注册的组件目录:
需动态注册的组件目录
配置的全局注册代码(配置在应用入口文件,如 main.js 中):

// 获取目录下的所有文件,通过正则进行筛选
const requireComponent = require.context(
	// 其组件目录的相对路径
	'./page/selfTest/autoForm/formItem',
	// 是否查询其子目录
	false,
	// 匹配基础组件文件名的正则表达式
	/\w+\.(vue|js)$/
)

// 遍历所有符合要求的文件(拿到的是组件的相关路径)
requireComponent.keys().forEach(fileName => {
	// 获取组件配置
	const componentConfig = requireComponent(fileName)

	// 获取组件名,除去目录及文件后缀
	let str = fileName.split('./');
	const componentName = str[1].replace(/\.(vue|js)$/, '')

	// 全局注册组件
	Vue.component(
		componentName,
		// 如果这个组件选项是通过 `export default` 导出的,
		// 那么就会优先使用 `.default`,
		// 否则回退到使用模块的根。
		componentConfig.default || componentConfig
	)
})

大概就是上述这样了,使用的前提,我想应该把你的组件设计好,后续才可以更好的优化和扩展

我最希望的是可以把自动注册的代码放在租价内部,有方法的朋友,请多多指教
若上述理解或代码有问题,也请多多指教

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章