Vue基本代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
</head>
<body>
<div id="app">
<p>{{ msg }}</p>
</div>
<script>
var vm = new Vue({
el:'#app',
data: {
msg: '欢迎学习vue'
}
})
</script>
</body>
</html>
基本指令
v-cloak 解决插值表达式闪烁
<style>
[v-cloak]{
display: none;
}
</style>
v-text 没有闪烁问题,覆盖元素中原本内容,但是插值表达式只会替换自己的占位符,不会清空整个内容
v-html 会覆盖元素中内容,但会解析html内容
v-bind 属性绑定机制 简写: (可以写合法的js表达式)
v-on 事件绑定机制 简写@
v-model 双向数据绑定
v-if 每次都会重新删除或创建元素,有较高的切换性能消耗
v-show 每次不会进行DOM的删除和创建操作,只是切换了元素的display:none 样式,有较高的初始渲染消耗
注:v-bind 和v-model 区别
v-bind 只能实现数据的单向绑定,从M自动绑定到V
v-model 只能运用在表单元素中 例如 input(radio,text,address,email…) checkbox…
注:v-on 事件修饰符:
.stop 阻止冒泡
.prevent 阻止默认行为
.capture 实现捕获
.self 实现只有点击当前元素才会触发事件处理函数
.once 事件只触发一次
.self 只会阻止自己身上冒泡行为的触发,并不会阻止像stop阻止其他。
跑马灯
HTML代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
</head>
<body>
<div id="app">
<input type="button" value="浪起来" @click="lang">
<input type="button" value="低调">
<h4>
{{msg}}
</h4>
</div>
</body>
JS代码
var vm = new Vue({
el:'#app',
data:{
msg:'猥琐发育,别浪~~',
intervalId = null
},
methods:{
lang(){
if(this.intervalId != null) return 0;
this.intervalId = setInterval( ()=>{
var start = this.msg.substring(0,1);
var end = this.msg.substring(1);
this.msg = end + start;
} ,400)
},
stop(){
clearInterval(this.intervalId);
this.intervalId = null;
}
}
})
注:setInterval()函数
setInterval(代码串/函数,时间间隔(ms))
返回一个ID,可以将这个ID传递给clearInterval() ,clearTimeout() 以取消执行。
简易的计算器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>6</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="n1">
<select v-model="opt">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" v-model="n2">
<input type="button" value="=" @click="calc">
<input type="text" v-model="result">
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
n1: 0,
n2: 0,
result: 0,
opt: '+',
},
methods: {
calc() {
switch (this.opt) {
case '+':
this.result = parseInt(this.n1) + parseInt(this.n2);
break;
case '-':
this.result = parseInt(this.n1) - parseInt(this.n2);
break;
case '*':
this.result = parseInt(this.n1) * parseInt(this.n2);
break;
case '/':
this.result = parseInt(this.n1) / parseInt(this.n2);
break;
}
}
},
});
</script>
</body>
</html>
|