前端框架概览
作者:EGOISTIAN
原文地址:https://egoistian.com/2016/03/21/front-end-frameworks/
前端框架在近来是非常流行的词(Buzz word),我现在就来介绍一下其中主流的框架,并且帮你区分什么是真正的「前端框架」。
流行词汇
一说起前端框架你就会听到一些看似很高深的词汇,比如 mvvm、vdom、view layer、unidirection等等,以及这些人们所谓的「框架」:
- Bootstrap
- jQuery
- BackBone
- AngularJS
- React
- Vue
框架大乱战
Bootstrap
Bootstrap 是一个框架吗? 是的,就算它只是一系列常用 CSS 和 jQuery plugin 的集合,它还是一个框架。不过它更多的是一个常用代码片段的集合,而不是一个那种能带来设计模式的框架。
Bootstrap 带给你的是栅格系统,是预置的按钮、表单、列表、导航、响应式等等样式,它在你独立开发的时候非常有用,因为能节约用来「设计网页」的时间,而且这套预置的样式本身「也不丑」,自然是受很多公司「前期快速开发」的青睐了。
我更愿意把 Bootstrap 称为一个 UI library,就像与之类似的 purecss、 Foundation 一样。当然最近比较火的微信移动端使用的 UI 库 weui 自然也属于这个范畴。
jQuery
jQuery 是一个现象,它重新定义了 dom 操作这一行为。
从某种意义讲,jQuery 是一个 framework,因为它让直接操作 dom 来进行 UI 交互成为了一种设计模式(笑)。这是个玩笑, jQuery 更多只能看做一个更抽象的 DOM API,弥补的原生 DOM API 的不足,并增加了很多常用的 helper。
常见的 Web 设计模式就是 MVC 和 MVVM,它们和 jQuery 之间另一个不同就是对于数据的处理。用 jQuery 写的代码常常直接用 dom 来和 data 打交道,需要「手动地」更新页面。反之 MVC 和 MVVM 通常把数据存储在 model 这个 layer 上,通过一定的绑定机制实施更有效率的页面渲染和更新。
BackBone
BackBone 经常和 jQuery 一起用, MVC 模式 + 一个高度抽象的 DOM API 曾经征服了很多开发者的心。
然而 BackBone 经常被人诟病为「不是 MVC」的 MVC,原因在于你很难把用 jQuery 写出的代码合理地用 MVC 模式来进行归纳,在我看来,这是因为没有一个规范的 View layer 来组织 dom 相关的代码。
Angular/Vue/React
详见 http://cn.vuejs.org/guide/comparison.html
我的选择
在我看来 Vue 和 React 是更现代的选择,Angular 2 的学习曲线看起来十分陡峭,让我望而生畏,有爱好者也可以尝试一下。
Vue 和 React 最大的区别就是社区的活跃度和成熟度。
React 社区看似活跃和成熟但是所谓的 best practice 层出不穷,有时候 一个东西 换了一个名字就能拿出来卖弄一番,扰乱视听。
Vue 社区则看起来更加专制,现状是各路菊苣为 小右 马首是瞻。这不是不好,非常好,正确的东西有很多人追随这没有不对的。而且现在社区也在蓬勃发展,小右本人也开始全职开发 Vue 和相关生态组件。
如何学习一个框架
基础
首先熟悉这个框架是最基本的,通过阅读官方的一些 guide 并且自己动手操作比较好的做法,比如在JSbin 上试试 Vue。这方面 Vue 的 官方教程 由浅入深、面面俱到堪称业界典范。
生态
一个没有生态的框架是活不长的,生态的重要性之一是节省了开发者重复劳动的时间。所以你下一步就是广泛了解相关生态,比如你会用 React 做 todomvc 之后可以去看看 awesome-react,通常那里也会有一些前人写的指南。
持续学习
我自认为作为开发者的一个好习惯就是「凡事尽量自己解决」,有些东西即使别人一次给你说清了,你没有自己解决的经验下次再遇到类似的问题很难触类旁通。
「自己解决」不是指自己做个伸手党,而是指能 Google 就绝不百度,能百度就绝不提问,能提问就尽量描述清楚,能描述清楚就想想能不能通过 Google 解决。