da宗熊

当前位置: 首页 / 笔记

组件编写的反思01

07-05,2016 / da宗熊

Tags: 组件 反思

在编写单个组件时,有些内容,不管暂时用不用上,顾及之后的拓展,都是必不可少的。
这次的反思,是基于最近,使用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... 要疯啦
  };

表示“动词+名词”这种方法,在多组件时,确实有点难记,
在名字上,估计要重新修炼一番才行


要当一头“牛掰”的单页面程序熊,还是任重道远啊

@2022 da宗熊
Email: 1071093121@qq.com