前端开发在移动浪潮的到来中,越演越烈,在web app的强势驱动下,在native化交互的硬需求下,前端的需求从原先的操作操作dom,来个小动画,转变成了全数据流的末尾处理端。前端再也不是什么ui,再也不是一个bootstrap+jquery就可以解决所有问题的领域。在数据处理的下垂之中,如何在最短的时间内处理用户的交互数据,用户的统计数据,用户的分析数据,成为了前端数据链当中的重中之重。如何处理这些数据,如何处理这些数据和native交互的链接,成为了前端必须要解决的问题。而,由此带来的前端人员的增加,工具的增加,如何有效,有质量的解决这些问题的工程化思维被提上了历史的舞台。
从ui到数据链处理
很久之前,我们pp图,写写html,写写css,写写jquery,觉得前端如此美好,数据由CGI处理,我们不用担心,调用就好,3个人可以解决前端的所有问题。但是,突然,有一天,数据的高墙被推倒,我们看到了墙外面的世界,原来,墙的外面真的有巨人。
是前端,但不仅仅是前端
这里所说的前端,并不是单单指的是前端,而是以前端为代表的ui开发。整个ui开发,其实是一体的,很长时间以来,在整个软件工程体系当中,ui开发一直得不到足够的重视,协议层,数据层的东西才被认为是软件工程的核心,但是当UX越来越被重视,协议层和数据层的发展遇到瓶颈,前端工程才重新被认知和重视,而此时的前端,已经不当当是当初那个写写xml/html接口集,写写css样式集,写写javascript/java/OC/swift脚本的前端,而是一个要求处理数据末端处理的工作流的前端。数据的高墙被推倒之后,前端要怎么去处理呢?
数据才是程序存在的根本要义
那么,我们为什么要把数据放入到前端开发的范畴中来呢,这样是不是有意义的呢?事情是很清楚的,最重要的原因是,数据是程序存在的根本要义。没有人花时间在程序上面,只是为了看代码运行完之后的success,哦,除了程序员。
交互需求是数据存在的根本缘由
而数据的来源又是因为人对机器发出的指令,也就是我们所说的交互需求。换句话来说,前端开发决绝不是什么简单ui处理,而是一个完整的交互开发,一个人与数据处理的开发。
那么,从这个角度出发,前端工程完全是一个独立的软件工程范畴。我们来讨论下工程化,这个问题。
工程化
所谓工程化,表达出来的是,如何将一个看起来简单的事情做的更好。很多时候,我们或许并不关心这样做的根本原因,这样做的理论依据,这样做的专业性知识,但是,我们绝逼会这样去做,因为此,才可能把事情做好呀,这不就是工程师要做的嘛?
工具化
由于前端任务的繁重,所以出现了大量的工具来处理一些人来很容易犯错的任务,比如说合并文件,混淆文件,压缩文件,标注md5码。等等。。。将工作细分,然后引入工具去处理一些问题,成为趋势。各种gulp/grunt/webpack的插件可以说明问题。
模块化,组件化
在以往的前端,一个页面大多都是一个循环生成的。:D,但是现在,不单单是一个个循环可以解决的啦,越来越细小的业务需求,导致我们必须对每个业务有很清晰的是认识,但是,一个人的精力是有限的,人员的增加和代码复用的需求,导致了模块化的出现,而模块化的出现,导致了功能组合和复用的需求,资源和寻求的组合,这就是一个单独的交互的组件。webpack,seajs,requirejs,AMD,CMD以及react,vue是前端模块化组件化的先驱
自动化
工具化的应用和模块化的思维,使得自动化成为了可能。管道的处理方式,和node带来的系统级数据处理能力,导致了前端自动化成为了一个不可阻挡的大趋势。gulp,grunt这类工具是自动化的代表。
标准化
自动化的应用,给前端带来的是对标准化的需求。没有规矩不成方圆。如何处理css module,js module,这些组件要怎么组合,一个组件应该要具备什么基本的要素,这些都是前端标准化的过程。浏览器对ECMAscript标准的统一和对html5,css3标准的统一,也使得前端的开发变的有章可循。
可预测化
工程化带来的,是我们可以很明白的知道,数据的input和output的直接关联。function从一个Object变成一个factory。react的实际做法,就是将pre-function引入到DOM render当中来处理,使得DOM render变的可以预见,可以处理。
流水可处理
前面的这一切,为流水化工业生产打下的理论基础。也就是说,前端的代码编写变的更加的平民化,和普及化。同时,前端的开发效率会有一个质的提示。
可控的前端
所有的这一切,最终的目的,是为了一个高效开发,高可控的前端。而可控的前端,包括了下面的方面。而正是这些需求,促成了函数式编程在前端开发的领域越来越被重视。同时数据上报也成为了末端数据开发的重要部分。
数据可控
在开发阶段,你能知道你要什么样的数据,你得到了什么样的数据。
在部署阶段,你能知道数据哪里错了。
错误可控
发生了什么错误,哪些错误是高频发生的,这些错误是怎么发生的,在什么场景下发生的。错误发生之后,对业务的直接影响是什么。
反馈可控
我们能知道用户对产品的使用情况是如何的。这些产品自己会关心的。
开发可控
我们要知道,具体的代码执行情况,页面请求的时间,页面渲染的时间,首屏可见的时间,等等,这些开发想要的优化数据要可控,可见。而这些就要求,数据上报。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。