前端发展的这几年
O'Reilly Media、Battelle和MediaLive在2004年10月引导了第一个Web 2.0大会,web2.0时代开启,Blog,Wiki,RSS各种个人网站开始登陆大家的视野,同时,豆瓣,天涯这些符合2.0时代的产物开始在国内大行其道。我们有了第一波注重Web前端的软件开发师,同一时刻,米国诞生了FaceBook具有跨时代的产物,05年,校内网出现,前端们开始活跃起来了,06年8月,Jquery的第一个版本发布。
之后的几年间,前端基本都是围绕着各种类库如Mootools,Underscored,Prototype,Dojo,Jquery ,YUI开发页面。各大类库也是相互吸收优点,不断完善自身,但是本质没有太多变化。
智能手机开始普及,移动端大浪潮流势不可挡,web前端们开始为了移动端开发各种类库了Sencha Touch,Zepto.js,JQ Mobile,HTML5概念火热了起来,各种网页小游戏层出不穷,和Flash的争斗也到了水火不容的地步,Twitter也推出了Bootstrap这个引领风骚的CSS工具包。
随着系统硬件的提升,V8引擎性能的提升,整个网页的性能极大提高,大家开始纷纷开发出复杂的Web页面来,这种需求开始催生了前端们对开发的工程化思考,首当其冲的就是模块化加载的问题,AMD、CMD、UMD登上舞台,起衍生的产物Seajs,requirejs开始划分地盘。
这个时代还是服务端渲染为王的时代,包括很多模块或者组件上的拼接都是在服务端完成的,但同时也开启jquery + requirejs + template开发复杂页面的模式。(这个时间段,出现了重构工程师和JS工程师的划分。)
2012年之后,随着W3C规范和标准进一步推动,大家对Web页面复杂度进一步的加剧,人们不在满足于Jquery面条时的开发,出现了许多用于简化客户端开发的框架,诸如Backbone,Ember,AngularJS,Vue,Alavon,Knockout,React等等各种各样的MV*框架。
这是一个群雄割据的时代,如此多的框架涌出,每个开发者根据自己的喜好,业务的需求选择着不同框架来完成目标。
Node.js开始崛起,Express,Koa框架开始使用到各种生产项目中,PM2的服务管理,为企业解决了监控和稳定问题,同时,阿里开始探索Node.js中间层的开发道路,连续发声,提供前后端分离解决方案。
微信这个社交庞然大物已然崛起,微信公众号的玩法,让前端岗位开始火热了起来,也开始带来了Web和Native的争端。
2015年,Facebook在React.js Conf 2015大会上推出了基于JavaScript的开源框架React Native,一举将React推上了一个新的高度,learn once ,write everywhere。这一年是属于React的年份。
同时,构建工具也在不停的迭代,Grunt的辉煌已去,Gulp并未在王座上久呆,Webpack的风暴就席卷而来。
2016年,Webpack+ECMAScript6已经成为了前端打包构建的主流,Vue强势崛起,Ng2完成发布。前端在主流开发上基本形成了三国时代(React,Vue,Ng)。与此同时,移动端也形成了以混合开发为主的方式,Native嵌入Webview页面。
喜欢Vue的原因
个人评价,Vue兼具 Angular 和 React 的优点,并剔除它们的缺点。Vue 和 React 均使用 Virtual DOM,提供了响应式(Reactive)和组件化(Composable)的视图组件。在性能方面,Vue较优于React。 React 学习曲线陡峭。
本人曾基于Angular1.*,搭建了一套小框架。
1 实现页面嵌套路由;
2 考虑多人同时开发,使得多个controller.js,配合路由按需加载,提升页面响应速度;
3 添加$http(Angular 实现http请求的服务)全局拦截器,方便对http请求进行统一管理;
4 方便使用,写了几个service 和 factory。
5 自定义了几个常用的管理系统UI,由 Angular 指令实现。
完成以上5各部分,也算是对 Angular1.* 有了基本的了解,也发现了一些缺点,
1 service、factory和provider 区别并不明确,在实现功能上,可以互相代替;
2 组件化只能依赖于指令,指令与组件化概念不清,并且指令间通讯不便,跨controller之间的通讯更不舒服。
3 页面响应速度优于Jquery,但是并不理想。Angular 的 watcher 越来越多时会变得越来越慢,因为作用域内的每一次变化,所有 watcher 都要重新计算。并且,如果一些 watcher触发另一个更新,脏检查循环(digest cycle)可能要运行多次。
Angular2.0虽然已然发布,但是相对于1.0来说,基本上是推翻重写,完全是两个框架了。在语言上使用Typescript,再加上API的设计,使得学习曲线十分的陡峭,所以没有深入去了解。
说了太多其他框架的缺点,说说对Vue2.0实际使用评价。
1 轻量级框架,没有任何依赖。
2 API设计很清晰,简单易学,但凡使用过Angular1.*,上手Vue2.0相当容易。
3 Vue中指令和组件分得更清晰。指令只封装 DOM 操作,而组件代表一个自给自足的独立单元 优雅的组件化设计,组件间沟通简单方便。
4 生命周期明确,修复了 Vue 1.0 部分情况下生命周期钩子并不能调用等问题。
5 PC端和移动端均十分适用。配合Vuex,非超大型应用,均不会出现力不从心的现象。
6 Vue社区也迅速壮大,太多的第三方组件,方便完善你的项目。
总结
随着web技术的飞速发展,对页面效果和页面功能的要求也越来越多。虽然jQuery可以使你非常方便的操作DOM,但是已经越来越不能满足当前的需求。一套优雅的前端框架,是前端工程师的福音。
网络上一句话,“自从使用了Vue,我可以正常下班了” 。足以说明,Vue的优雅和便捷。