最近在思考如何写出一个灵活容易拓展的前端组件。
回想刚开始给sf重构写组件的时候,评论是比较早开发的一个组件。评论这块都有那些需求呢?
评论整体的功能还是很多的,但初期并没有想这么多,而且刚学jq不久,特别容易陷入事件带动代码,不是说这样不好,而是到后期加功能的时候会发现不那么容易拓展。
什么是事件带动代码?
刚学jq的时候,我特别容易写出 用户触发了什么事件,然后选中哪些标签然后再干嘛干嘛。
重构后期写组件的时候,比如设置页面和邀请别人回答的邀请用户的自动完成组件中,把用户事件和组件的状态分开,把组件需要的一些自定义事件当成状态,让用户事件去处罚这些组件。比如这个自动完成的组件,我把他分成了init,show,select,insert四个状态,onload对应init,用户focus对应show,用户输入对应select,用户选择了需要填充的相对应insert。这个时候,这个组件相比之前的组件具有了更好的灵活性。
而之后,在接触了angular和react之后,发现这个自动完成组件还是有些不完善的地方。尤其是对于数据展示这块,我只是简单的把数据的数组直接插入select标签中,而没有做一些优化,后面如果重构这个自动完成组件会参考这两个框架的思路,把需要展示的数据插入一个新的数组中,再更新展示的标签。