干货!教大家如何选择Vue和React

两者之间的相同之处

同样是基于组件开发的轻量级框架,同样是专注于用户界面的视图view层。

如何选择

1.1 如果喜欢用

模板搭建应用

(或者有这个想法)选择

Vue

Vue应用默认的是把markup放在HTML中,数据绑定表达式和Angular一样,采用{{}}的形式,而指令(特殊的HTML属性)用来向模板中添加功能

{{ message }}

// JS new Vue({ el: '#app',data: { message: 'Hello Vue.js!' },methods: { reverseMessage: function () { this.message = this.message.split('').reverse().join(''); } } });

React使用的是JSX语法(在JavaScript中创建DOM),而不使用模板。

// JS (pre-transpilation) class App extends React.Component { constructor(props) { super(props); this.state = { message: 'Hello React.js!' }; } reverseMessage() { this.setState({ message: this.state.message.split('').reverse().join('') }); } render() { return (

{this.state.message}

) } } ReactDOM.render(App,document.getElementById('app'));

模板可以更好地把布局和功能分隔开,但是需要学习所有的HTML扩展语法,而渲染函数只需要标准的HTML和JavaScript。

注意:vue2.0提供使用模板和渲染函数的选项

1.2 想要

简单一点的语法,

更快的渲染速度

,选择

vue

使用Vue不需要转译,直接运行在浏览器中,但是React代码重度依赖于JSX和ES6语法。

1.2.1 两者处理数据的方式不一样

vue的数据可变,React的数据不可变

对于state的数据变化,Vue比React的重新渲染系统更快更有效率。

1.3 想要构建一个

大型的应用程序

,选择

React

模板的使用会阻碍应用扩展到更大规模,模板容易出现很难注意到的运行时的错误,同时也很难去测试,重构,分解。

1.4 想要一个

同时适用于web端和原生APP的框架

,选择

React

React Native 是一个使用JavaScript构建出移动端原生应用程序(ios Android)的库,与React。js相同,只是不使用web组件,而是使用原生组件,只要会其中一个,就会另一个, 这样无论是开发web端还是移动端都可以用。

1.5 要

最大的生态系统,最全面问题解决,更全的工具和插件

可以使用

React

数量统计,React在npm上的下载量为250万/月,vue为22.5万/月

React是facebook的,会得到全面的支持与维护,vue是尤雨溪

带领的小团队维护的。

总结

一下,我们发现的,Vue的优势是:

- 模板和渲染函数的弹性选择 - 简单的语法和项目配置 - 更快的渲染速度和更小的体积

React的优势是:

- 更适合大型应用和更好的可测试性 - Web端和移动端原生APP通吃 - 更大的生态系统,更多的支持和好用的工具 - 然而,React和Vue都是很优秀的框架,它们之间的相似之处多过不同- 之处,并且大部分的优秀功能是相通的: * 用虚拟DOM实现快速渲染 * 轻量级 * 响应式组件 * 服务端渲染 * 集成路由工具,打包工具,状态管理工具的难度低 * 优秀的支持和社区

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

相关文章

问题现象 elmentui的el-tree数据加载问题,导致第一次加载选中当前节点和高亮当前节点没有生效。 解决方...
因为刚打开文件,vscode默认是预览状态,如果编辑过之后,就不会有这个问题。 可以通过双击将预览状态接...
前言 上篇文章我们介绍了国产SM4加密算法的后端java实现方案。没有看过的小伙伴可以看一下这篇文章。 h...
在项目中引入动态路由时报错 写法: 报错: Module build failed (from ./node_modules/_eslint-loader@2...
问题产生 在使用babel编译es6时,遇到报错Uncaught ReferenceError: regeneratorRuntime is not define...
父组件的编写 <a:orgCode=orgCode ></a> 在data里面增加...