组件编写的反思01
在编写单个组件时,有些内容,不管暂时用不用上,顾及之后的拓展,都是必不可少的。
这次的反思,是基于最近,使用vue.js制作的单页面应用。
组件生命周期
构建,是一开始就留意的的周期,但一个完整的组件,有几个周期,是必不可少的:
1. 初次构建 -> onMounted
如 vue 组件的 ready 事件,主要针对组件级的初始化,单次的配置
2. 当组件展示时 -> onShow
在单页面应用,往往一开始,会漏掉此周期。
往往会在此周期内,做组件的重置,或重要参数的初始化
3. 组件隐藏时 -> onHide
也是会被忽略的周期,在此周期内,做数据的清理,有时也是必要的
4. 组件销毁 -> onDestroy
如果对内存,有严格控制的需求,此周期可以作为考虑,建议构建时,就考虑上
5. 组建重新进入视窗,但是没有被展示时 -> onEnter/onInit
业务中,就有这么一个场景,
父组件依赖了子组件的功能,但是因为子组件是按条件触发而展示并初始化,
如果子组件不被触发,就使用不了子组件的重新初始化,对应依赖子组件的生成的数据,也不能得到正确的值。
此时,如果组件拥有此声明周期,将会节省大量的初始化问题。
可能会认为每个组件,都拥有独立的生命周期,有些多次一举,
好的设计,往往决定后续的拓展性。
一个赏心悦目的组件
在项目中,因为业务的复杂度,每个组件,往往好几百行,虽然同事没哼声,也没说什么,
但是个人就是觉得老不爽了!!!
虽然没有对每个文件的长度,有严格的要求,但是,个人有个洁癖,如非特殊情况,内容超过2页,
就看着浑身不自在。
下面说说“分尸”代码的一些心得:
1. 如果依赖fis或模块加载器,
__inline/require/import将是我们的好助手,尽量将代码划分为各个模块,往外扔吧,少年们!
2. 能子组件话的代码,就组件化
如果遇到父子组件交互的问题,使用的框架实在没有办法解决,考虑事件的交互
3. 组件的继承很重要、很重要、很重要
这次项目,编写了一大堆相似的代码,好想死...
没有继承,创造条件,也要玩起,
不用继承,还可以拼装、拓展、原型等,无所不用其极的删掉重复代码
4. 依赖框架的,先去了解一下框架的相关插件吧,事半功倍
这次开发,就是没有事先去了解插件,几乎全部插件,都自己重新开发,
白白耗费了宝贵的时间
5. 没有好的设计,请别玩单页面应用
光是样式的命名、页面名字,防止重复等问题,都够喝一壶的了
虽然看同事的大神,竟然使用“约定”的方式,来简化代码,可以去借鉴,
不过要留好文档,考虑清楚错误处理
名字老重要
回顾组件中的方法命名,自己都有种想跳崖的冲动了。
const component = {
createXXX() {},
saveXXX() {}, // 我会不知道你的save是保存神马吗?
initXXXByYYY() {}, // 在参数体现 YYY 就很好啊!
getZZZ() {}, // 最痛恨get了!!什么鬼啊。getData, getList, getXXXData... 要疯啦
};
表示“动词+名词”这种方法,在多组件时,确实有点难记,
在名字上,估计要重新修炼一番才行
要当一头“牛掰”的单页面程序熊,还是任重道远啊