一、Vue概述
1.1 Vue是什么
Vue (读音 /vjuː/) 是一套用于构建用户界面的渐进式框架。基于js动态操作html标签的js库,Vue 也完全能够为复杂的单页应用提供驱动。火爆的前端js框架
1.2 Vue初体验
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue初体验</title>
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<!-- 定义 显示标签 -->
<div id="dv01">
次数: {{ counter }}
<h1>{{msg}}</h1>
</div>
<script>
//定义数据函数对象--Model
const data = {
data() {
return {
counter: 10,
msg:"学习Vue,真开心!"
}
}
}
//将数据函数和标签对应绑定
Vue.createApp(data).mount('#dv01');
</script>
</body>
</html>
使用步骤:
1.引入vue的js库
2.绘制标签div
通过{{属性名}}:文本插值,双大括号法
3.准备js代码
1.数据函数,返回值也就是数据
const 变量名= {
data() {
return {
属性名: 属性的值
}
}
}
2.实现数据函数和标签的绑定关系
Vue.createApp(变量名).mount(‘#标签的id名称’);
1.3 Vue特性
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的标签,分离和实时渲染,数据是响应式:数据只要改变,页面标签的内容也跟着一起改变。
a.数据响应式
b.文本插值,格式: {{属性名}}
c.属性绑定,格式: v-bind:属性名=”Vue中data的属性名”
d.事件绑定,格式: v-on:事件名=”Vue中函数名称”
e.双向绑定,格式:v-model=”Vue中data的属性名” ,注意:表单标签,比如input 、select、 textarea
f.分支语法,格式:v-if
g.循环语法,格式:v-for=”变量名 in Vue中data的属性名”
二、Vue基础
2.1 文本插值
- 数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值
- 无论何时,绑定的组件实例上属性 发生了改变,插值处的内容都会更新。响应式
- 通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新
- 双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,你需要使用v-html指令
对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue特性</title>
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<div id="dv01">
<h1>当前时间:{{ctime}}</h1>
<h1 v-once>第一次的时间:{{ctime}}</h1>
<button v-on:click="show">更新时间</button>
<div v-html="str1"></div>
<div><h1>你的性别:{{sex==1?'男':'女'}}</h1></div>
<div>{{str2.length>0?str2:'默认内容'}}</div>
</div>
<script>
//定义数据对象
const params={
data(){//数据源
return {
ctime:new Date().toLocaleTimeString(),
str1:"<h1>看看我,快点!</h1>",
sex:1,
str2:""
}
},
methods:{//函数集
show(){
this.ctime=new Date().toLocaleTimeString();
}
}
}
//实现绑定和渲染
Vue.createApp(params).mount('#dv01');
</script>
</body>
</html>
2.2 属性绑定
Mustache 语法不能在 HTML attribute 中使用,然而,可以使用 v-bind指令
- 格式: v-bind:属性名=”Vue中data的属性名”
v-bind:属性名 简称 :属性名 ```html <!DOCTYPE html>
<a name="SFebY"></a>
### 2.3 事件绑定
- 使用 v-on 指令 (通常缩写为 @ 符号) 来监听 DOM 事件,并在触发事件时执行一些 JavaScript
- 常用事件: click dblclick change keyup
- 在监听键盘事件时,Vue 允许为 v-on 或者 @ 在监听键盘事件时添加按键修饰符
- 事件处理程序中可以有多个方法,这些方法由逗号运算符分隔
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://unpkg.com/vue@next"></script>
<style>
.dv2{
width: 30px;
height: 30px;
background-color: red;
position: relative;
left: 10px;
top: 10px;
}
</style>
</head>
<body>
<div id="dv01">
<h1 :style="style1" @click="crandom">你的幸运数字:{{num}}</h1>
<div><input v-model="name" @change="showName"></div>
<h1 @dblclick="sj">双击6666</h1>
<input @keyup.down="xy" @keyup.up="sy" @keyup.left="zy" @keyup.right="yy" class="dv2" :style="dvposition"></input>
<button @click="xy(),yy()">动起来</button>
</div>
<script>
function randomHexColor() { //随机生成十六进制颜色
var hex = Math.floor(Math.random() * 16777216).toString(16); //生成ffffff以内16进制数
while (hex.length < 6) { //while循环判断hex位数,少于6位前面加0凑够6位
hex = '0' + hex;
}
return '#' + hex; //返回‘#'开头16进制颜色
}
//定义数据函数对象--Model
const params = {
data() {
return {
num: 0,
style1:"background-color:red",
name:"",
lnum:10,
tnum:10,
dvposition:"left: 10px;top:10px"
}
},
methods:{
crandom(){
this.num=Math.floor(Math.random()*10);
this.style1="background-color:"+randomHexColor();
},
showName(){
alert(this.name);
},
sj(){
this.name="双击成功:"+new Date().toLocaleTimeString()
},
sy(){
this.tnum-=10;
this.dvposition="left: "+this.lnum+"px;top:"+this.tnum+"px";
},
xy(){
this.tnum+=10;
this.dvposition="left: "+this.lnum+"px;top:"+this.tnum+"px";
},
zy(){
this.lnum-=10;
this.dvposition="left: "+this.lnum+"px;top:"+this.tnum+"px";
},
yy(){
this.lnum+=10;
this.dvposition="left: "+this.lnum+"px;top:"+this.tnum+"px";
}
}
}
//将数据函数和标签对应绑定
Vue.createApp(params).mount('#dv01');
</script>
</body>
</html>
2.4 双向绑定
用 v-model 指令在表单 、