Vue 3 day1106
ok了家人们,这周学习vue前端框架,let’s go
一.Vue概述
-
Vue 是一套前端框架,用于免除原生 JavaScript 中的 DOM操作,简化书写。
-
基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。
- 官网: https://cn.vuejs.org/
二.Vue快速入门
1. 新建 HTML 页面,引入 Vue.js 文件2. 在 JS 代码区域,创建 Vue 核心对象,进行数据绑定3. 编写视图
- 新建 HTML 页面,引入 Vue.js文件
<script src="js/vue.js"></script>
- 在JS代码区域,创建Vue核心对象
<script>
// 创建Vue实例
const vm = new Vue({
el: '#app',//Vue应用实例接管的区域是'#app'
data: { //用来定义数据模型
username: 'zhangsan'
},
methods: { //用来定义函数
},
})
- 编写视图
<div id="app">
<h1>Hello {{username}}</h1>
<p>{{username}}</p>
</div>
- el的两种写法
$mount() 方法手动将 Vue 组件挂载到 DOM 元素上。在 Vue
3 中,通常通过 createApp().mount() 自动挂载,少数情况
下需要手动挂载。
<body>
<div id="app">
<h1>Hello {{username}}</h1>
<p>{{username}}</p>
</div>
<script src="js/vue.js"></script>
<script>
// 创建Vue实例
const vm = new Vue({
el: '#app',//Vue应用实例接管的区域是'#app'
data: { //用来定义数据模型
username: 'zhangsan'
},
methods: { //用来定义函数
},
})
setTimeout(function(){
vm.$mount('#app');
},3000);
</script>
</body>
- data的两种写法
<body>
<div id="app">
<h1>Hello {{username}}</h1>
</div>
<script src="js/vue.js"></script>
<script>
// 创建Vue实例
const vm=new Vue({
el:"#app", //Vue应用实例接管的区域
是'#app'
// data:{ //用来定义数据模型 对象
式
// username:"zhangsan"
// },
// data:function(){ //函数式
// return{
// username:"zhangsan"
// }
// },
//函数式 简写
data(){
return{
username:"zhangsan"
}
},
methods:{ //用来定义函数
}
});
</script>
</body>
三.插值语法
- 形式:{{ . . . }}
- 内容可以是:
-
变量: {{message}}
-
算术运算:{{10 + 20}}
-
三元表达式:{{message ? '有值':'没值'}}
-
函数调用:{{message.toUpperCase()}}
-
作用: {{}} 是 Vue 中定义的 插值表达式 ,在里面写数据模型,到时候会将该模型的数据值展示在这个位置。且可以直接读取到 data 中的所有属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<h1>Hello {{username}}</h1>
{{10+10}}--{{username=="zhangsan"?"是":"否"}}--{{username.toUpperCase()}}--{{getAge()}}
<p>{{username}}</p>
</div>
<script src="js/vue.js"></script>
<script>
// 创建Vue实例
const vm = new Vue({
el: '#app',//Vue应用实例接管的区域是'#app'
data: { //用来定义数据模型
username: 'zhangsan'
},
methods: { //用来定义函数
getAge:function(){
return 18
}
},
})
</script>
</body>
</html>
四.Vue指令
4.1 指令介绍
指令:
HTML
标签上带有
v-
前缀的特殊属性,不同指令具有
不同含义。例如:
v-if
,
v-for…
常用的指令有:
指令
| 作用 |
v-bind
|
为
HTML
标签绑定属性值,如设置
href , css
样
式等
|
v-model
| 在表单元素上创建双向数据绑定 |
v-on
| 为HTML标签绑定事件 |
v-if
|
条件性的渲染某元素,判定为
true
时渲染
,
否则
不渲染
|
v-else-if
|
条件性的渲染某元素,判定为
true
时渲染
,
否则
不渲染
|
v-else
| |
v-show
| 根据条件展示某元素,区别在于切换的是display属性的值 |
v-for
| 列表渲染,遍历容器的元素或者对象的属性 |
4.2 v-bind 与 v-model
指令
| 作用 |
v-bind
|
为
HTML
标签绑定属性值,如设置
href , css
样
式等
|
v-model
| 在表单元素上创建双向数据绑定 |
- v-bind
该指令可以给标签原有属性绑定模型数据。这样模型数据发生
变化,标签属性值也随之发生变化
例如:
<a v-bind:href = "url" > 百度一下 </a>
上面的v-bind:" 可以简化写成 : ,如下:
<!-- v-bind 可以省略 --><a :href = "url" > 百度一下 </a>
- v-model
该指令可以给表单项标签绑定模型数据。这样就能实现双向绑
定效果。例如:
<input type = "text" v-model = "username" >
- 代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<h1>Hello {{username}}</h1>
<a v-bind:href="url1">京东官网</a>
<a :href="url2">小米官网</a>
<hr/>
<input type="text" v-model="username"/>
</div>
<script src="js/vue.js"></script>
<script>
// 创建Vue实例
const vm = new Vue({
el: '#app',//Vue应用实例接管的区域是'#app'
data: { //用来定义数据模型
username: 'zhangsan',
url1:"https://www.jd.com",
url2:"https://www.mi.com"
},
methods: { //用来定义函数
getAge:function(){
}},
})
</script>
</body>
</html>
4.3 v-on
指令
| 作用 |
v-on
| 为HTML标签绑定事件 |
我们在页面定义一个按钮,并给该按钮使用
v-on
指令绑定单
击事件,
html
代码如下
<input type = "button" value = " 一个按钮 " v-on:click = "handle()" >
而使用
v-on
时还可以使用简化的写法,将
v-on:
替换成
@
,
html
代码如下
<input type = "button" value = " 一个按钮 " @click = "handle()" >
上面代码绑定的
handle()
需要在
Vue
对象中的
methods
属
性中定义出来
new Vue({el: "#app",methods: {handle:function(){alert("我被点了");}}});
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<input type="button" value="点我" v-on:click="method01()"/><br/>
<input type="button" value="点我试试" @click="method02()"/><br/>
<input type="button" value="不传参数" @click="method03"/><br/>
<input type="button" value="传递参数" @click="method04(10)"/>
</div>
<script src="js/vue.js"></script>
<script>
// 创建Vue实例
const vm = new Vue({
el: '#app',//Vue应用实例接管的区域是'#app'
data: { //用来定义数据模型
username: 'zhangsan',
url1:"https://www.jd.com",
url2:"https://www.mi.com"
},
methods: { //用来定义函数
method01:function(){
alert("点击了按钮1")
},
method02:function(){
alert("点击了按钮2")
},
method03:function(){
alert("点击了按钮3")
},
method04:function(num){
alert("点击了按钮"+num)
}
},
})
</script>
</body>
</html>
4.4 v-if 与 v-show
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<input type="text" v-model="money"/><br>
当前用户的工资等级为: {{money}} , 当前用户为:
<span v-if="money>=0 && money<=10000">工程师</span>
<span v-else-if="money>=10000 && money<=20000">高级工程师</span>
<span v-else>高收入</span>
<br/>
当前用户的工资等级为: {{money}} , 当前用户为:
<span v-show="money>=0 && money<=10000">
低收入</span>
<span v-show="money>10000 && money<20000">中收入</span>
<span v-show="money>=20000">高收入</span>
</div>
<script src="js/vue.js"></script>
<script>
// 创建Vue实例
const vm = new Vue({
el: '#app',//Vue应用实例接管的区域是'#app'
data: { //用来定义数据模型
money:10000
},
methods: { //用来定义函数
},
})
</script>
</body>
</html>
4.5 v-for
这个指令看到名字就知道是用来遍历的,该指令使用的格式如
下:
- 语法:v-for = "(item,index) in items"
-
参数:
-
items 为遍历的数组
-
item 为遍历出来的元素
-
index 为索引/下标,从0开始 ;可以省略,省略index语法: v-for = "item in items"
-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<p v-for="addr in address">{{addr}}</p>
<p v-for="(addr,index) in address">{{index+1}} : {{addr}}</p>
</div>
<script src="js/vue.js"></script>
<script>
// 创建Vue实例
const vm = new Vue({
el: '#app',//Vue应用实例接管的区域是'#app'
data: { //用来定义数据模型
address:["北京","上海","广州","深圳"]
},
methods: { //用来定义函数
}
},)
</script>
</body>
</html>
五.Vue的生命周期
vue 的生命周期:指的是 vue 对象从创建到销毁的过程。vue 的生命周期包含 8 个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法,这些生命周期方法也被称为钩子方法。
状态
| 阶段周期 |
beforeCreate
| 创建前 |
created | 创建后 |
beforeMount | 挂载前 |
mounted | 挂载完成 |
beforeUpdate | 更新前 |
updated | 更新后 |
beforeDestroy | 销毁前 |
destroyed | 销毁后 |
下图是 Vue 官网提供的从创建 Vue 到效果 Vue 对象的整个过程及各个阶段对应的钩子函数:
其中我们需要重点关注的是 mounted , 其他的我们了解即可。mounted :挂载完成, Vue 初始化成功, HTML 页面渲染成功。以后我们一般用于页面初始化自动的 ajax 请求后台数据
ok了家人们明天见byebye