这是我参与「第五届青训营 」笔记创作活动的第5天
如果你喜欢用模板搭建应用(或者有这个想法),请选择Vue
Vue应用的默认选项是把markup放在HTML文件中。数据绑定表达式采用的是和Angular相似的mustache语法,而指令(特殊的HTML属性)用来向模板添加功能。
如果你喜欢简单和“能用就行”的东西,请选择Vue
一个简单的Vue项目可以不需要转译直接运行在浏览器中,所以使用Vue可以像使用jQuery一样简单。当然这对于React来说在技术上也是可行的,但是典型的React代码是重度依赖于JSX和诸如class之类的ES6特性的。
Vue的简单在程序设计的时候体现更深,让我们来比较一下两个框架是怎样处理应用数据的(也就是state)。
React中的state是不可变(immutable)的,所以不能直接改变,需要使用API中的setState方法:
如果你想要你的应用尽可能的小和快,请选择Vue
当应用程序的状态改变时,React和Vue都将构建一个虚拟DOM并同步到真实DOM中。两者都有各自的方法优化这个过程。
Vue核心开发者提供了一个benchmark测试,可以看出Vue的渲染系统比React的更快。
如果你打算构建一个大型应用程序,请选择React
像文章开头那种同时用Vue和React实现的简单应用程序,可能会让一个开发者潜意识中更加倾向于Vue。这是因为基于模板的应用程序第一眼看上去更加好理解,而且能很快跑起来。但是这些好处引入的技术债会阻碍应用扩展到更大的规模。模板容易出现很难注意到的运行时错误,同时也很难去测试,重构和分解。
相比之下,Javascript模板可以组织成具有很好的分解性和干(DRY)代码的组件,干代码的可重用性和可测试性更好。Vue也有组件系统和渲染函数,但是React的渲染系统可配置性更强,还有诸如浅(shallow)渲染的特性,和React的测试工具结合起来使用,使代码的可测试性和可维护性更好。
与此同时,React的immutable应用状态可能写起来不够简洁,但它在大型应用中意义非凡,因为透明度和可测试性在大型项目中变得至关重要。
如果你想要一个同时适用于Web端和原生APP的框架,请选择React
React Native是一个使用Javascript构建移动端原生应用程序(iOS,Android)的库。它与React.js相同,只是不使用Web组件,而是使用原生组件。如果你学过React.js,很快就能上手React Native,反之亦然
如果你想要最大的生态系统,请选择React
毫无疑问,React是目前最受欢迎的前端框架。它在NPM上每个月的下载量超过了250万次,相比之下,Vue是22.5万次。
总结一下
我们发现的,Vue的优势是:
- 模板和渲染函数的弹性选择简单的语法和项目配置更快的渲染速度和更小的体积
React的优势是:
- 更适合大型应用和更好的可测试性Web端和移动端原生APP通吃更大的生态系统,更多的支持和好用的工具。
然而,React和Vue都是很优秀的框架,它们之间的相似之处多过不同之处,并且大部分的优秀功能是相通的:
- 用虚拟DOM实现快速渲染轻量级响应式组件服务端渲染集成路由工具,打包工具,状态管理工具的难度低优秀的支持和社区。