前端工程化

一、描述

在软件开发的领域当中,一些工程化的东西是必不可少,它可以把我们的效率,质量,还有团队合作,维护方面更加的轻松。

1、什么是工程化
定义
  • 工程化即系统化、模块化、规范化的一个过程。
  • 如果说计算机科学要解决的是系统的某个具体问题,或者更通俗点说面向编码的,那么工程化要解决的是如何提高整个系统生成效率。
  • 与其说软件工程是一门科学,不如说它更偏向于管理学和方法论。
    解决什么问题
  • 工程化解决的问题是,如何提高编码、测试、维护阶段的生产效率。

二、必要性

在一些简单的项目当中,例如,邀请函H5项目等,这种纯展示的,没有什么业务逻辑,不涉及数据库的项目当中,其实是没什么必要性的,因为花费一大堆时间搭起webpack,gulp,grunt,parcel,这些打包编译工具,只会增加你的成本。打个比方,在生活当中,我们有时候会接到一些私单,可能就纯粹的HTML页面,或者就类似于PPT式的展示项目,我们的目录结构,其实就很简单,可以搭建成以下。

三、工程化的发展

1.古老时代

在很早的时候,还没出现Vue、React、Angular这些利用组件开发和ajax实现页面和与后端交互的时候,我们一般小公司,采取都是PHP或者Java等后端语言的模版引擎进行开发,也就是什么意思呢,如下图。

图片.png

从此图可以看出,最辛苦的是PHP和JAVA,为什么呢?假设我的产品哥哥和小姐姐需要迭代某一个功能和页面,又要前端重新的弄下一个按钮的样式啊之类的,弄完之后,又把静态页面给了我们苦逼的后端人员,那时候的后端人员,本人觉得才叫全栈工程师,为什么呢,因为模版引擎通常只有后端人员才会使用,以前的前端切图仔只负责还原UI设计图和血一些简单的交互,而且在这过程中,我们一般都会使用jquery,这里有一个不好的地方,一般对于没什么经验的后端人员来说,通常很喜欢,前端给了的页面,直接使用上面的class名,来操作元素,但是这有个很恶心的问题带来了,就是前端人员修改了样式,删了这个class名,这时候,测试发现了bug,点不了,或者报错,这又到了后端人员找来bug了,找了老半天可能才发现,前端人员原来修改样式的时候把class名删了,这时候前端后端大家一起推卸责任,这样的开发效率大大的减少。

这个时期,由于整个项目几乎都是由后端人员进行开发完成交付,因此前后端的代码经常混杂在一起。例如,php的娃娃们就很喜欢使用他们的模版符号""在页面中嵌入后端代码,从而实现数据交互。 一个简单的php使用场景代码如下:

这显然来说长期的项目迭代更新和维护,是十分困难的。

2.铜器时代

这个阶段就是开始有一些组件化的思想和异步加载的实现在项目里面。

“组件化”是指不再把所有代码都放到一个文件里面,而是通过一些iframe和frameset的标签来进行页面的组织,把Javascript代码放到“.js”文件里面,通过外部链接引入到页面去。

异步加载,就要提到Ajax,这个技术帮助了开发者提升网站性能,优化用户的体验,利用局部加载,使得页面加载速度更快,用户更加快速的看到页面。也正因为ajax的出现,一些前端框架也慢慢的兴起。

3.农业时代

在“铜器时代”出现的一些框架,让开发者更好的组织代码,从而提高代码的可读性,增加维护性。

随着产品项目越来越大,越来越复杂,代码量也越来越多,大大降低了页面加载的速度,影响了用户体验。为了解决这个问题,一些模块加载的规范就衍生出来了,主要分成两种,就是我们在别人口中听到的AMD(Asynchronous Module Definition)和CMD(Common Module Definition)。

在实现AMD的规范的框架中,用得最多就是RequireJS,下面是一个依赖于Jquery来实现js代码的RequireJS框架下的写法:

4.工业时代

在这个阶段当中,互联网产品越来越复杂,交互也越来越多,为了降低开发难度和成本,一些前端的MVC、MVVM框架就诞生了,一般统称MV*,用得最多就是Backbone,AngularJS、React、Vue等。本人最喜欢其实就是Backbone和React。

这些框架的好处分别有:

前后端分离,不再有后端语言的依赖。

分层明确,代码单一原则化,降低复杂度。

同时,就是这些框架的出现,为了更加提高团队的效率,出现了一大堆的打包工具,例如Gulp,Grunt,webpack等。更加灵活的使用它们做一些代码压缩混淆,编译,单元测试,打包发布等重复性的任务,来降低开发者的工作。

前端工程化要解决什么

1、制定各项规范,让工作有章可循

1、统一团队成员的编码规范,便于团队协作和代码维护

目录结构,文件命名规范
编码规范:eslint,stylelint

2、开发流程的规范

使用敏捷,增强开发进度管理和控制
应对各项风险,需求变更等
code review 机制
UAT 提升发布的需求的质量

3、前后端接口规范,其他文档规范

2. 使用合适的前端技术和框架,提高生产效率,降低维护难度

目标: 职责分离、降低耦合,增强代码的可读性、维护性和测试性。

采用模块化的方式组织代码

JS 模块化:AMD、CommonJS、UMD、ES6 Module
CSS 模块化:less、sass、stylus、postCSS、css module
采用组件化的编程思想,处理 UI 层

react、vue、angular
将数据层分离管理

redux、mbox
使用面向对象或者函数编程的方式组织架构

3. 提高代码的可测试性,引入单元测试,提高代码质量

4. 通过使用各种自动化的工程工具,提升整个开发、部署效率

原文链接:http://kuaibao.qq.com/s/20180331G02REF00?refer=cp_1026
https://yq.aliyun.com/articles/574270?utm_content=m_45413

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 每一种技术的出现都是为了解决某一特定的问题,而一种技术的流行兴起除了天时地利便是因为它较好的解决了工程师们普遍都...
    前端憨憨在路上阅读 546评论 0 3
  • 前端工程本质上是软件工程的一种。软件工程化关注的是性能、稳定性、可用性、可维护性等方面,注重基本的开发效率、运行效...
    黎贝卡beka阅读 9,579评论 1 7
  • 保持不被外界干扰是种能力
    默斯阅读 170评论 0 0
  • 人类在从蒙昧走向文明的过程中不仅只有文字,还有幼儿的行为,在原始时期,人类之间的斗争不断,如果说孩子之间的...
    angell20043阅读 102评论 0 1
  • 第九章 他们 “恩怡!” “哎。” “陪我去个地方。” “好。” 八月的清晨,蝉...
    阑珊妍阅读 336评论 0 1