1.与React对比
相似之处
- Virtual DOM
- 提供了响应式(Reactive)和组件化(Composable)的视图组件
- 将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库。
不同之处
- React拥有更丰富的生态系统
- Vue渲染过程自动追踪,每个组件自动获得了
shouldComponentUpdate - React使用JSX Vue推荐模板。 对比来说,前者优点在于开发工具支持好,开发语言单一高效;后者使得基于HTML的模板迁移更容易,开发效率在一定条件下也有提升。
CSS方面
- CSS 作用域在 React 中是通过 CSS-in-JS 的方案实现
- Vue 设置样式的默认方法是单文件组件里类似<
style scoped>的标签。 - Vue 的单文件组件里的样式设置是非常灵活的。通过vue-loader,你可以使用任意预处理器、后处理器,甚至深度集成CSS Modules——全部都在
<style>标签内。
扩展方面
- 脚手架层面Vue CLI可以在项目生成时进行配置,提供模板,可通过插件扩展运行依赖同时也可以预设模板。
- React Native跨平台开发更强,Vue和Weex合作在积极发展。
2.特性
1.声明式渲染 响应式更新
2.指令
- v-bind 绑定
- v-if 判断
- v-for 遍历
- v-on 事件监听
- v-model 表单输入和应用状态之间的双向绑定
3.组件
组件注册
1 | <div id="app-7"> |
1 | Vue.component('todo-item', { |
3.实例
创建
1 | var vm = new Vue({ |
数据与方法
1 | new Vue({ |
4.实例生命周期钩子

5.模板语法
1 | <!-- 完整语法 --> |
6.计算属性和侦听器
计算属性的getter函数没有副作用
计算属性是基于它们的响应式依赖进行缓存
7.Class与Style绑定
对象语法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34data: {
isActive: true,
hasError: false
}
<div
class="static"
v-bind:class="{ active: isActive, 'text-danger': hasError }"
></div>
#绑定计算属性
<div v-bind:class="classObject"></div>
data: {
isActive: true,
error: null
},
computed: {
classObject: function () {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}
//内联样式
data: {
activeColor: 'red',
fontSize: 30
}
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>数组语法
我们可以把一个数组传给
v-bind:class,以应用一个 class 列表
1 | <div v-bind:class="[activeClass, errorClass]"></div> |