主流框架

1.前端框架的复杂度
- 我们可能在任何情况下都需要声明式的渲染功能,并希望尽可能避免手动操作,或者说是可变的命令式操作,希望尽可能地让DOM的更新操作是自动的,状态变化的时候它就应该自动更新到正确的状态;
- 我们需要组件系统,将一个大型的界面切分成一个一个更小的可控单元;
- 客户端路由——这是针对单页应用而言,不做就不需要,如果需要做单页应用,那么就需要有一个URL对应到一个应用的状态,就需要有路由解决方案;
- 大规模的状态管理——当应用简单的时候,可能一个很基础的状态和界面映射可以解决问题,但是当应用变得很大,涉及多人协作的时候,就会涉及多个组件之间的共享、多个组件需要去改动同一份状态,以及如何使得这样大规模应用依然能够高效运行,这就涉及大规模状态管理的问题,当然也涉及到可维护性。
- 还有构建工具。现在,如果放眼前端的未来,当HTTP2普及后,可能会带来构建工具的一次革命。但就目前而言,尤其是在中国的网络环境下,打包和工程构建依然是非常重要且不可避免的一个环节。
2.主流框架分析
- 纯模板引擎:最少的就是纯模板引擎,只管状态到界面的映射。
- React和Vue:其实这两者都是非常专注的只做状态到界面映射,以及组件。
- Backbone:它会给你多一些架构上指导,比如它会让你分层。
- Angular:它做的事情就更多,它有自己的路由,这些都会包含在里面。
- Ember:相比Angular,Ember做得就更加彻底,Ember信奉的是约定优于配置,它会将一切都帮你设计好打包好,你就开箱用就可以了。
- Meteor:Meteor只是一个极端,它是从前到后全都包含,从前端到数据层到数据库,全都帮你打包好
React和Vue有一个共同特点:
它们都有各自的配套工具,核心虽然只解决一个很小的问题,但它们有生态圈及配套的可选工具。
当你把他们一个一个加进来的时候,就可以组合成非常强大的栈,就可以涵盖其他的这些更完整的框架所涵盖的问题。