felix-cao / Blog

A little progress a day makes you a big success!
31 stars 4 forks source link

大前端已经进入工程化开发阶段 #99

Open felix-cao opened 5 years ago

felix-cao commented 5 years ago

目前,前端工程化(front-end engineering)并没有一个标准的概念,本人根据自己的经验和理解尝试给出一个定义

前端工程化(front-end engineering)就是将软件工程的方法应用在前端开发的过程中,以达到高效开发、有效协同、质量可控的目的。

从本质上讲,所有Web应用都是一种运行在网页浏览器中的软件,这些软件的图形用户界面(Graphical User Interface,简称GUI)即为前端。

一、软件工程(software engineering)

与其说软件工程是一门科学,不如说它更偏向于管理学和方法论。

北大西洋公约组织(NATO)在1968年举办了首次软件工程学术会议,并于会中提出“软件工程”来界定软件开发所需相关知识,并建议“软件开发应该是类似工程的活动”。软件工程自1968年正式提出至今,这段时间累积了大量的研究成果,广泛地进行大量的技术实践,借由学术界和产业界的共同努力,软件工程正逐渐发展成为一门专业学科。

关于软件工程的定义,在 GB/T11457-2006《信息技术 软件工程术语》中将其定义为"应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、和维护的工程或进行研究的学科"。

二、前端为什么需要工程化

2.1 技术的发展

近些年来随着前端技术的不断发展,越来越多复杂的业务放在了前端,前端不再是简单的 jquery 操作 DOM 了。尤其是移动互联网技术的发展, 前端开发已经由以 Web Page 模式为主转变为以 Web App 模式为主了。

2.2 前端工程越来越复杂

前端工程越来越复杂,工程复杂了就会产生许多问题,比如:如何进行高效的多人协作?如何保证项目的可维护性?如何提高项目的开发质量?

2.3 前端特点--免安装

前端又不同于传统的 CS 模式(客户端软件/后端)的软件,因为前端应用具备“免安装”、“增量安装”等特性。也“得益”于这些特性,前端应用会遭遇客户端应用不可能碰到的资源管理问题,这也是前端最容易引起工程问题的点。

前端工程本质上是软件工程的一种,前端工程化是前端架构中重要的一环,主要就是为了解决上述大部分问题的。

三、前端工程化

前端工程化大概包括模块化、组件化、规范化、自动化四个“化”。

3.1 前端模块化

模块化的开发方式可以提高代码复用率,方便进行代码的管理。通常一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数。目前流行的js模块化规范有CommonJS、AMD、CMD以及ES6的模块系统。请阅读以下文章:

--- To Be Continue

Reference