前端工程化的理解
目前来说,web业务日益复杂化和多元化,前端开发从WebPage模式为主转变为WebApp模式为主了。前端的开发工作在一些场景下被认为只是日常的一项简单工作,或只是某个项目的"附属品",并没有被当做一个"软件"而认真对待(无论是产品负责人还是开发者)。
在模式的转变下,前端都已经不是过去的拼几个页面和搞几个jq插件就能完成。当工程复杂就会产生许多问题,比如:
前端工程化 是使用软件工程的技术和方法来进行前端的开发流程、技术、工具、经验等规范化、标准化,其主要目的 为了提高效率和降低成本,即提高开发过程中的开发效率,减少不必要的重复工作时间 ,而前端工程本质上是软件工程的一种,因此我们应该从软件工程的角度来研究前端工程。
"前端工程化"里面的工程指 软件工程 ,和我们一般说的 工程 是两个完全不同的概念。
前端工程化就是为了让前端开发能够“自成体系”,个人认为主要应该从 模块化 、 组件化 、 规范化 、 自动化 四个方面思考。
从UI拆分下来的 每个包含模板(HTML)+样式(CSS)+逻辑(JS)功能完备的结构单元 ,我们称之为 组件 。
其实,组件化更重要是一种分治思想。
页面上所有的东西都是组件。页面是个大型组件,可以拆成若干个中型组件,然后中型组件还可以再拆,拆成若干个小型组件,小型组件也可以再拆,直到拆成DOM元素为止。DOM元素可以看成是浏览器自身的组件,作为组件的基本单元。
传统前端框架/类库的思想是先组织DOM,然后把某些可复用的逻辑封装成组件来操作DOM,是DOM优先;而组件化框架/类库的思想是先来构思组件,然后用DOM这种基本单元结合相应逻辑来实现组件,是组件优先。这是两者本质的区别。
其次,组件化实际上是一种按照模板(HTML)+样式(CSS)+逻辑(JS)三位一体的形式 对面向对象的进一步抽象。
所以我们除了封装组件本身,还要合理处理组件之间的关系,比如 (逻辑)继承 、 (样式)扩展 、 (模板)嵌套 和 包含 等,这些关系都可以归为 依赖 。
目前市面上的组件化框架很多,主要的有Vue、React、Angular。Vue文档中的对比其他框架一文已经讲得很详细了。
规范化其实是工程化中很重要的一个部分,项目初期规范制定的好坏会直接影响到后期的开发质量。
比如:
前端工程化的很多脏活累活都应该交给自动化工具来完成。需要秉持的一个理念是: