2016年Web前端开发技术总结

上传人:xmg****18 文档编号:122344000 上传时间:2020-03-04 格式:DOC 页数:14 大小:38.02KB
返回 下载 相关 举报
2016年Web前端开发技术总结_第1页
第1页 / 共14页
2016年Web前端开发技术总结_第2页
第2页 / 共14页
2016年Web前端开发技术总结_第3页
第3页 / 共14页
2016年Web前端开发技术总结_第4页
第4页 / 共14页
2016年Web前端开发技术总结_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《2016年Web前端开发技术总结》由会员分享,可在线阅读,更多相关《2016年Web前端开发技术总结(14页珍藏版)》请在金锄头文库上搜索。

1、2016年Web前端开发技术总结前言2016 年马上过去了,像过去六年中的每一年一样,Web前端领域又产生了“面目全非”而又“耳目一新”的变化,不但旧事物持续不断地被淘汰,新事物也难保坐久江山,大有岌岌可危之势。开源界如群雄逐鹿,不断生产新的概念、新的框架、新的工具,去年中一些流行的技术今年大多得到了进一步的演进和升级,活跃度非常高,却仍然不能保证前端的未来属于它们。在今年整体资本市场冷却的大环境下,to B的创业公司显现出了较强的生命力,这种类型的业务也给Web前端的工作带来了明显的差异性,工程师整体技能方向也展露出一丝不一样的分支。一、更新的网络与软件环境1.1 HTTP/2 的持续普及今

2、年中,几乎所有的现代桌面浏览器都已经支持了HTTP/2协议,移动端依靠降级为SPDY依旧可以覆盖几乎所有平台,这样使得从协议上优化页面的性能成为了可能。同时,前端静态资源打包的必要性成为了一定程度上的争论焦点,打包合并作为传统的前端性能优化方案,它的存留对前端工程化影响极大,Facebook公司著名的静态资源动态打包方案的优越性也会被弱化。社区上多篇文章纷纷发表对HTTP/2的性能实验数据,却不尽相同。在2017年,我相信所有大型站点都会切换HTTP/2,但依旧不会放弃对静态资源打包合并的依赖。而且,对于Server Push等高级特性,也不会有太多的应用。1.2 Internet Explo

3、rer 8三年前还在考虑兼容IE6的前端技术社区,在前不久天猫宣布不再支持IE8后又引起了一股躁动。IE8是Windows XP操作系统支持的最高IE版本,放弃IE8意味着放弃了使用IE的所有XP用户。其实在2016年的今天,前端社区中框架、工具的发展早已不允许IE8的存在,Angular 早在1.3版本就果断放弃了IE8,React 也在年初的v15版本上宣布放弃。在PC领域,你依旧可以使用像Backbone.js一样的其他框架继续对IE进行支持,但无论是从研发效率上还是从运行时效率上,放弃它都是更好的选择。由于对HTML5兼容性不佳,在2017年,相信IE9也会逐渐被社区放弃,以取得更好的

4、性能、更少的代码体积。二、如何编写(Java)Script2.1 ES2016?ES2017?Babel!去年定稿的ES2015(亦称ES6)带来了大量令人激动的新语言特性,并快速被V8和SpiderMonkey所实现。但由于浏览器版本碎片化问题,目前编写生产环境代码仍然以ES5为主。今年年中发布的ES2017带来的新特性数量少的可怜,但这正好给了浏览器厂商消化ES2015的时间,在ES2017到来之前喘口气是的,明年的ES2017势必又会带来一大波新特性。JS解释引擎对新特性的支持程度并不能阻碍狂热的开发者使用他们,在接下来的很长时间,业界对Babel的依赖必然有增无减。Babel生态对下一

5、代ECMAScript的影响会进一步加大,人们通过先增加新的Babel-plugin,后向ECMA提案的方式成为了ECMAScript进化的常态。开发者编写的代码能直接运行在浏览器上的会越来越少。但使用Babel导致的编译后代码体积增大的问题并没有被特别关注,由于polyfill可能被重复引入,部署到生产环境的代码带有相当一部分冗余。2.2 TypeScript作为ECMAScript语言的超集,TypeScript在今年取得了优异的成绩,Angular 2放弃了传说中的AtScript,成为了TypeScript的最大客户。人们可以像编写Java一样编写JavaScript,有效提升了代码的

6、表述性和类型安全性。但凡事有两面,TypeScript的特性也在不断升级,在生产环境中,你可能需要一套规范来约束开发者,防止滥用导致的不兼容,这反而增加了学习成本、应用复杂性和升级安全性。个中优劣,仍需有大量的工程实践去积累经验。此外,TypeScript也可以看做一种转译器,与Babel有着类似的新特性支持。在2017年,我们期待TypeScript与Babel会发展成怎样的一种微妙关系。2.3 promise、generator 与 async/await在回调地狱问题上,近两年我们不断被新的方案乱花了眼。过去我们会利用async来简化异步流的设计,直到“正房”Promise的到来。但它们

7、只是callback模式的语法糖,并没有完全消除callback的使用。ES2015带来的generator/yield似乎成为了解决异步编程的一大法宝,虽然它并非为解决异步编程所设计的。但generaor的运行是十分繁琐的,因此另一个工具co又成为了使用generator的必备之选。Node.js社区的Koa框架初始就设计为使用generator编写洋葱皮一样的控制流。但昙花一现,转眼间async/await的语法,配合Promise编写异步代码的方式立即席卷整个前端社区,虽然async/await仍然在ES2017的草案中,但在今天,不写async/await立刻显得你的设计落后社区平均水

8、平一大截。在Node.js上,v7已经支持在harmony参数下的async/await直接解释,在明年4月份的v8中,将会正式支持,届时,Koa 2的正式版也会发布,几乎完全摒弃了generator。2.4 fetch受到回调问题的影响,传统的XMLHttpRequest有被fetchAPI 取代之势。如今,成熟的polyfill如whatwg-fetch、node-fetch、isomorphic-fetch在npm上的每日下载量都非常大,即便对于兼容性不好的移动端,开发者也不愿使用繁琐的AJAX。借助async/await的语法,使用fetch API能让代码更简洁。三、Node.js服

9、务与工具Koa 2Koa与流行的Express属于“同根生”的关系,它们由同一团队打造。相比Express,新的Koa框架更轻量、更灵活。但Koa的设计在短时间内曾经出现了较大的变动,这主要受到了async/await语法对异步编程的影响。在v2版本中,Koa的middleware抛弃generator转而支持async,所有第三方middleware实现,要么自行升级,要么使用Koa-convert进行包装转换。目前Koa在Node.js社区的HTTP服务端框架中受到关注度比较高,不过其在npm上latest目前仍处于1.x阶段,预计在2017年4月份发布Node.js v8后,就会升级到2

10、.x。Koa的轻量级设计意味着你需要大量第三方中间件去实现一个完整的Web应用,目前鲜有看到对Koa的大规模重度使用,因此也就对其无从评价。相信在明年,越来越多的产品应该会尝试部署Koa 2,届时,对第三方资源的依赖冲突也会尖锐起来,这需要一个过程才能让Koa的生态完备起来。预计在2018年,我们会得到一个足够健壮的Koa技术栈。这会促进Node.js在服务端领域的扩展,轻量级的Web服务将会逐渐成为市场上的主流。四、框架纷争4.1 jQuery已死?今年六月份jQuery发布了3.0版本,距离2.0发布已经有三年多的时间,但重大的更新几乎没有。由于老旧浏览器的逐渐放弃和升级,jQuery需要

11、处理的浏览器兼容性问题越来越少,专注于API易用性和效率越来越多。随着如Angular、React、Ember、Vue.js等大量具备视图数据单双向绑定能力的框架被普及,使用jQuery编写指令式的代码操作DOM的人越来越少。早在2015年便有人声称jQuery已死,社区中也进行了大量雷同的讨论,今天我们看到确实jQuery的地位已大不如前,著名的sizzle选择器在今天已完全可由querySelector原生方法替代,操作DOM也可以由框架根据数据的变动自动完成。明年jQuery在构建大型前端产品的过程中的依赖会被持续弱化,但其对浏览器特性的理解和积淀将对现有的和未来的类Angular的MV

12、VM框架的开发依旧具有很大的借鉴意义。4.2 Angular 2好事多磨,Angular 2的正式版终于在今年下半年发布,相比于1.x,新的版本几乎是完全重新开发的框架,已经很难从设计中找到1.x的影子。陡峭的学习曲线也随之而来,npm、ES2015 Modules、Decorator、TypeScript、Zone.js、RxJS、JIT/AOT、E2E Test,几乎都是业界这两年中的最新概念,这着实给初学者带来了不小的困难。Angular 2也更面向于开发单页应用(SPA),这是对ES2015 Modules语法描述的模块进行打包(bundle)的必然结果,因此Angular 2也更依赖

13、于Webpack等“bundler”工具。虽然Angular 声称支持TypeScript、ECMAScript和Dart三种语言,不过显然业界对Dart没什么太大兴趣,而对于ECMAScript和TypeScript,两种语言模式下Angular 2在API和构建流程上都有着隐式的(文档标注不明的)差异化,这必然会给开发者以困扰。加上业界第三方工具和组件的支持有限,TypeScript几乎是现在开发者唯一的选择。此外,Angular团队已声明并没有完全放弃对1.x组件的支持,通过特有的兼容API,你可以在2.x中使用针对1.x开发的组件。鉴于不明确的风险,相信很少有团队愿意这样折腾。现在在产

14、品中使用Angular 2,在架构上,你需要考虑生产环境和开发环境下两种完全不同的构建模式,也就是JIT和AOT,这需要你有两套不一样的编译流程和配置文件。在不同环境下模块是否符合期望,可以用E2E、spec等方式来进行自动化测试,好的,那么Angular 2的测试API又可能成了技术壁垒,它的复杂度可能更甚Angular本身。可以确信,在业务压力的迫使下,绝大部分团队都会放弃编写测试。总之,Angular 2是一个非常具有竞争力的框架,其设计非常具有前瞻性,但也由于太过复杂,很多特性都会成为鸡肋,被开发者所无视。由于React和Vue.js的竞争,Angular 2对社区的影响肯定不如其前辈

15、1.x版本,且其更高级的特性如Server Render还没有被工程化实践,因此相信业界还会持续观望,甚至要等到下一个4.x版本的发布。4.3 Vue.js 2.0Vue.js 绝对是类MVVM框架中的一匹黑马,由作者一人打造,更可贵的是作者还是华人。Vue.js在社区内的影响非常之大,特别是2.0的发布,社区快速生产出了无数基于Vue.js的解决方案,这主要还是受益于其简单的接口API和友好的文档。可见作为提供商,产品的简单易用性显得尤为重要。在性能上,Vue.js基于ES5 Setter,得到了比Angular 1.x脏检查机制成倍的性能提升。而2.0在模块化上又更进一步,开发难度更低,维

16、护性更好。可以说Vue.js准确地戳中了普通Web开发者的痛点。在国内,Vue.js与Weex达成了合作,期待能给社区带来怎样的惊喜。4.4 React目前看来,React似乎仍是今年最流行的数据视图层解决方案,并且几乎已经成为了每名前端工程师的标配技能。今年React除了版本从0.14直接跃升至15,放弃了IE8以外,并没有更多爆发式的发展。人们对于使用JSX语法编写Web应用已经习以为常,就像过去十年间写jQuery一样。React的代码在维护性能上显而易见,如果JSX编写得当,在重渲染性能上也具备优势,但如果只部署在浏览器环境中,那么首屏性能将会受到负面影响,毕竟在现阶段,纯前端渲染仍然快不过后端渲染,况且后端具备天生的chunked分段输出优势。我们在业界中可以看到一些负面的案例,比如某新闻应用利用React全部改写的ca

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号