Vue
也是基于状态改变渲染页面,Vue
相对于React
要好上手一点。有两种使用Vue
的方式,可以直接导入CDN
,也可以直接使用CLI
创建项目,我们先使用CDN
导入,学一些Vue
的基本概念。
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
new Vue参数解析
我们在实例化Vue这个对象的时候,会传入一些参数,例如
代码语言:javascript复制var app = new Vue({
el: '#app', // 需要挂载的节点
data: { // 在页面中使用的模版变量对应的都是data里面的数据, 注意:如果使用data里面的数据,必须在挂载的节点里面才能使用,否则无效
},
methods: {
method1: function() {
// methods里面放的是函数 可以给事件使用 也可以相互调用
}
},
watch: {
// 监听data里面的数据改变并可以做出响应
},
components: {
// 设置一些局部组件
},
filters: {
// 定义过滤器 通过 `|` (管道符号) 过滤器从左往右执行 前一个的返回会作为第二个函数的参数传递
},
computed: {
// 计算属性
// 我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。
}
});
指令
携带v-前缀的都叫做指令
- v-if
条件判断,和正常流程语句是一样的 可以写表达式 例如:
v-if="a b === 3"
- v-else-if
- v-else
v-else-if
和v-else
必须跟在v-if
之后
v-show
根据条件展示元素,和v-if
有一些区别
v-show小结:
v-show
仅仅控制元素的显示方式,通过display
属性的none
,节点还是保存的- 当我们需要经常切换某个元素的显示/隐藏时,使用v-show会更加节省性能上的开销
v-if小结:
v-if
会控制这个DOM
节点的存在与否。直接删除掉DOM
- 如果在运行时条件很少改变,则使用
v-if
较好。
- v-bind
绑定节点的属性 如果希望节点属性是变量 或者 通过什么条件才拥有属性,可以正常编写表达式。也可以进行简写
v-bind:src 或者 :src
。 例如<div :id="id=== 2 ? 'test-aoppp.com' : 'aoppp.com'">
- v-model
这个指令比较牛,Vue的核心指令之一,我们到时候再细讲一下,主要是用来在
input
、select
、textarea
、checkbox
、radio
等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。 例如:<input type="text" v-model="text">
- v-for
循环遍历 例如:
v-for="item in arrays"
- v-on:event
添加事件 例如:
v-on:click="method1"
也可以简写成@click
- v-html
可以添加
html
代码解析
组件化开发
代码语言:javascript复制<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app-2">
<todo-item
v-for="item,index in todos"
v-bind:s="item" // s 对应的就是props 也就是这个是可以随意命名的 只要对应上声明组件的props即可
v-bind:key="index"
>
</todo-item>
</div>
</body>
<script>
// 声明一个全局组件 组件的名称:todo-item
Vue.component('todo-item', {
props: ['s'], // 组件的props属性
template: '<li>{{s.name}}</li>' // 变量直接就是获取的props里面的
});
var app = new Vue({
el: '#app-2',
data: {
todos: [
{name: '李四'},
{name: '王五'},
{name: '赵六'},
]
}
});
</script>
</html>
组件的声明周期
总的来说可以分为四大类: 创建 、挂载、更新、卸载
- 创建:
beforeCreate
和created
- 挂载:
beforeMount
和mounted
- 更新:
beforeUpdate
和update
- 卸载:
beforeDestroy
和destroy
附上生命周期图