回顾过去,继续前行
编程技术及生态发展的三个阶段 1 补全API,完善语言和底层基础设施 2 开发语言模式,简化工程组织,开发工具 3 MVC MVVM工程架构,自动化测试,团队协作,达到工程化
观念的变化
1 现在前端开发面向更多的是Web App而不是Web Page,以至于逐渐趋同于过去的传统模式客户端开发,再加上一些前端独有的特性(免安装、Write Once Use More),前端工程更趋于复杂。
框架和类库的变化
1 React + Redux + React Router + React Native(Android & iOS) 2 优点:基于虚拟DOM,整体驱动更新。同整个生态系统非常完全,支持强大。 3 Vue + Vuex + Vue Router + Weex(Vue Native) 4 优点:轻量精巧,易学易用,优异的性能,组件化开发。 5 Angular2
标准&语言的变化
ES6带了许多革命性的新语法,具备了开发大型应用的基本要素:原生的模块加载,引入Class类。从目前es的进化速度来看,es后面应该会变成一个个的feature发布而不是像以前那样大版本号的方式,所以现在官方推荐 ES+年份这种叫法而不是 ES+版本。
2015年11月,ES标准委员会宣布将历时3年研究的Object.observe从草案中移除,官方的解释是,前端变化太快,React引入的Immutable Object盛行,这让基于可变对象变得尴尬,而且性能上还存在一定问题。
ES2016的相关草案中值得期待的两个Features,目前转译器Babel对ES2015/ES2016支持非常良好。
1 async/await:协程,同步的写法写异步 2 decorator:装饰器
WebAssembly
V8中引入JIT(即时编译,即在程序运行前一刹那,偷偷编译)技术,JIT技术的问题:
1. JIT 基于运行期分析编译,而 Javascript 是一个没有类型的语言,大部分时间,JIT 编译器其实是在猜测 Javascript 中的类型. 2. 有很多的情况下,JIT 编译器都无法生成代码,比如异常, 比如 for in , 这个基本上是实现难度引起的.
虽然大大提升了JS性能,但是对于性能的要求总是无尽的。
继续提升的思路:
1 一种是 Typescript, Dart, JSX 为代表的,基本思想:语言是强类型的. 2 另一种是火狐的 Asm.js 为代表的, 做一个 javascript 子集, 同时试图利用标注的方法,加上变量类型.
WebAssembly是一种更激进的方案,编译过程前移(AOT),提供工具将各种语言转换成特定的字节码,浏览器直接面向字节码编译程序。
技术选型和架构
1 组件化:在工程上会大大提升项目的可维护性及拓展性,以及可复用性。组件化的指导策略一定是分治而不是复用,分治的目的是为了使得组件之间解耦,而如果以复用为指导原则,代码将变得臃肿庞大,不易维护。 2 工程化:合理开发流程和规范,自动化检测,系统部署,性能优化。
工具链的变化
构建工具 Gulp Webpack browserify
面向未来的包管理 Jspm(Http2.0已发布)
总之,近年前端发展太快,影响了新产品的技术选型,谁也说不准,现在的最佳实践是否是以后的反模式。前端的乱世也意味着更多的挑战和更多的可能,希望自己迎风而上,不落潮巅,加油。
此文为读点击这里有感整理.