一、入门学习
1. 普通插值{{}}
- let:变量 ----- const:常量;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue第一个页面</title>
</head>
<body>
<!--1. 如果为class,则下面为 " . "
2. 如果为id,则下面为 " # " -->
<div class = "first">
{{name}} {{age}} {{address}}
</div>
<div id = "second">
{{name}} {{age}} {{address}}
</div>
<!--1. 引入Vue.js-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
/* 1.1 第一个模块变量*/
// Vue对象: 名称必须是Vue
const firstModule = new Vue({
el: ".first",
data: {
name: "舒展",
age: "27",
address: "陕西富平",
}
})
/*1.2 第二个模块变量,不同模块的名字必须不同*/
const secondModule = new Vue({
el: "#second",
data: {
name: "路西",
age: "24",
address: "湖南长沙",
}
})
</script>
</body>
</html>
2 .列表展示(v-for)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>第二个案例</title>
</head>
<body>
<div class="first">
<!--1. 无序列表,其中name可以换为其他任意字段-->
<ul>
<li v-for = "name in names">{{name}}</li>
</ul>
<!--2. 有序列表-->
<ol>
<li v-for = "item in names">{{item}}</li>
</ol>
<!--3. 控制台:
可以通过module.names.push('jerry')向数组中添加元素,
并且页面数据会动态变化 -->
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
let module = new Vue({
el: ".first",
data: {
/*数组*/
names : ['Tom','Jack','Lucy'],
address: "陕西富平",
}
})
</script>
</body>
</html>
3. 计数器(v-on:click)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>计数器</title>
</head>
<body>
<div class = "first">
<!-- 0. h系列标签带自动换行功能,button标签不自动换行,用br换行-->
<h2>计数器:{{counter}}</h2>
<!-- 1. 简单的逻辑-->
<!-- v-on: 代表监听事件; 2. click代表点击事件-->
<button v-on:click = "counter++">+</button><br>
<button v-on:click = "counter--">-</button><br>
<!--2. 复杂的逻辑: 用函数-->
<!--@click是v-on:click的语法糖-->
<button @click="plus">+</button><br>
<button @click="minus">-</button><br>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
let module = new Vue({
el: ".first",
data:{
counter: 0,
},
methods:{
/*this代表的是module这个对象,不加的话会在该script中去取全局变量*/
/*console.log: 在浏览器页面打印日志*/
plus:function (){
this.counter++;
console.log("加函数执行")
},
minus:function (){
this.counter--;
console.log("减函数执行")
}
}
})
</script>
</body>
</html>
4. Mustache语法
- {{}};
- v-pre;
- v-once;
- v-text ;
- v-html;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="first">
<!--1. {{}} 插值显示-->
{{firstName}}<br> <!--单独显示-->
{{firstName}}{{lastName}}<br> <!--组合显示-->
{{firstName}}{{lastName}}你好啊<br> <!--组合显示-->
{{firstName + ":" + lastName}}<br> <!--字符串拼接-->
{{age*2+1}}<br> <!--简单计算-->
<!-- 2. v-pre: 不解析,直接显示firstName-->
<h2>{{firstName}}</h2><br>
<h2 v-pre>{{firstName}}</h2><br>
<!--3. 一般的,页面控制台修改后变化,
v-once根据元素和组件只渲染一次,-->
<h2>{{firstName}}</h2><br>
<h2 v-once>{{firstName}}</h2><br>
<!--4. 覆盖: 用address的值将字面覆盖掉,页面显示陕西-->
<h2>湖南</h2><br>
<h2 v-text="address">湖南</h2><br>
<!--5. v-html: 解析-->
<h2>{{url}}</h2><!--页面显示:<a href="https://www.baidu.com">百度一下</a>-->
<h2 v-html="url"></h2><!--将拿到的a标签解析成html的链接-->
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
let module = new Vue({
el: ".first",
data:{
firstName: "舒",
lastName: "展",
age: 18,
address: "陕西",
url:"<a href=\"https://www.baidu.com\">百度一下</a>",
}
})
</script>
</body>
</html>
5. v-cloak
页面延迟显示;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--样式写在head里面-->
<!--带有v-cloak的标签不展示-->
<style>
[v-cloak]{
display: none;
}
</style>
</head>
<body>
<div id="first">
<!--vue解析前,div中包含v-cloak属性-->
<!--vue解析后,div中没有v-cloak属性-->
<!--页面延迟显示-->
<h2 v-cloak>{{name}}</h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
/*让js代码睡眠2分钟*/
setTimeout(function () {
let app = new Vue({
el:"#first",
data:{
name:"张三"
}
})
},2000)
</script>
</body>
</html>