网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
vue.js和react都是javascript的库,也就是框架,那么vue.js和react这两个框架哪个好呢?本篇文章就来通过对比vue.js框架和react框架来给大家说说react好还是vue.js好,有感兴趣的朋友可以看一看。
首先我们来简单看一下vue.js框架和react框架的概念:
Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。
React 是一个采用声明式,高效而且灵活的用来构建用户界面的框架。
vue.js和react这两个javascript框架的概念就是如上述所说,从概念的对比中并不能直观的看出react好还是vue.js好,那么,下面我们就从一下几个方面来进行vue.js和react的对比。
首先我们来看看vue.js和react数据绑定方面的对比
1、vue的数据绑定
在Vue中,View层中与数据绑定有关的有插值表达式、指令系统、Class和Style、事件处理器和表单控件,ajax请求和计算属性也和数据变化有关,下面我们就来分别简单看看这几个有关数据绑定的问题。
插值表达式:在Vue中,插值表达式和指令对于数据的操作又称为模板语法。
指令:vue中的指令很方便,指令 (Directives) 是带有 v- 前缀的特殊属性,Vue重的指令估计是从Angular那里学来的,有很多相似的地方,但是也不完全相同。
Class和Style:数据绑定的一个常见需求是操作元素的 class 列表和它的内联样式。因为它们都是属性 ,我们可以用v-bind 处理它们:只需要计算出表达式最终的字符串。不过,字符串拼接麻烦又易错。因此,在 v-bind 用于 class 和 style 时,Vue.js 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。
事件处理器:在Vue中我们可以通过v-on来给元素注册事件,完成事件注册,Vue中的事件处理和平时使用的事件处理不同之处就是,既可以绑定数据处理函数,也可以使用内联处理器
表单控件:你可以用v-model指令在表单控件元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。Vue中对于表单控件提供的v-model*指令非常的使用,可以方便的返回或者设置表单控件的信息。
ajax数据请求:vue2.0中数据请求推荐使用axios
计算属性:在Vue中引入了计算属性来处理模板中放入太多的逻辑会让模板过重且难以维护的问题,这样不但解决了上面的问题,而且也同时让模板和业务逻辑更好的分离。
2、react数据绑定
React中通过将state(Model层) 与View层数据进行双向绑定达到数据的实时更新变化,具体来说就是在View层直接写JS代码将Model层中的数据拿过来渲染,一旦像表单操作、触发事件、ajax请求等触发数据变化,则进行双向同步,所以说React的特点是组件化。
接着我们来看看vue.js和react组件的对比
1、react的组件与数据流
React中实现组件有两种方式,一种是createClass方法,另一种是通过ES2015的思想类继承React.Component来实现。
react组件之间有两种数据通信。第一种是父子组件之间的数据通信。第二种也就是非父子组件之间的数据通信。
父子组件之间的数据通信:
在React中,父与子之间的数据通信是通过props属性就行传递的;而子与父之间的数据通信可以通过父组件定义事件,子组件触发父组件中的事件时,通过实参的形式来改变父组件中的数据来通信。
非父子组件之间的数据通信:
嵌套不深的非父子组件可以使共同父组件,触发事件函数传形参的方式来实现;当组件层次很深的时候,在这里,React官方给我们提供了一种上下文方式,可以让子组件直接访问祖先的数据或函数,无需从祖先组件一层层地传递数据到子组件中。
react组件的生命周期:
construtor() //创建组件
componentWillMount() //组件挂载之前
componentDidMount() // 组件挂载之后
componentWillReceiveProps() // 父组件发生render的时候子组件调用该函数
shouldComponentUpdate() // 组件挂载之后每次调用setState后都会调用该函数判断是否需要重新渲染组件,默认返回true
componentDidUpdate() // 更新
render() //渲染,react中的核心函数
componentWillUnmount() //组件被卸载的时候调用,一般在componentDidMount注册的事件需要在这里删除
父子组件之间的数据通信是通过Prop和自定义事件实现的,而非父子组件可以使用订阅/发布模式实现(类似于Angualr中的非父子指令之间的通信),再复杂一点也是建议使用状态管理(vuex)。
每个 Vue 实例在被创建之前都要经过一系列的初始化过程。例如需要设置数据监听、编译模板、挂载实例到 DOM、在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,给予用户机会在一些特定的场景下添加他们自己的代码。
比如 created 钩子可以用来在一个实例被创建之后执行代码,也有一些其它的钩子,在实例生命周期的不同场景下调用,如 mounted、updated、destroyed。钩子的 this 指向调用它的 Vue 实例。
Vue 的路由库和状态管理库都是由官方维护支持且与核心库同步更新的;使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们。
vuex借鉴了 Flux、Redux、和 The Elm Architecture。与其他模式不同的是,Vuex 是专门为 Vue.js 设计的状态管理库,以利用 Vue.js 的细粒度数据响应机制来进行高效的状态更新。这使得它能够更好地和 Vue 进行整合,同时提供简洁的 API 和改善过的开发体验。
本篇文章到这里就全部结束了,关于react好还是vue.js好,如果你是初学者的话Vue简单一点,上手也快,React和全组件化思想以及高内聚,低耦合以及props是优点,但是玩的不转的话会被坑,玩得好的话项目大小没有问题,而且也有活跃的社区,工具链,最佳实践等等。当然了,最主要还是看你自己想学什么哪个适合自己。