前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue模板语法

Vue模板语法

作者头像
别先生
发布2020-04-13 19:01:03
2.4K0
发布2020-04-13 19:01:03
举报
文章被收录于专栏:别先生别先生别先生

1、Vue,渐进式Javascript框架。

  渐进式的含义理解,从左到右递进关系,声明式渲染(最简单的模式)->组件系统(组件化)->客户端路由(局部更新,浏览器的历史回退功能)->集中式状态管理(Vuex做状态管理)->项目构建(大型项目,前后端分离)。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <!-- 
10          Vue的基本使用步骤
11          1)、需要提供标签用于填充数据。
12          2)、引入vue.js库文件。
13          3)、可以使用vue的语法做功能了。
14          4)、把vue提供的数据填充到标签。使用插值表达式{{}},作用就是将数据填充到指定的标签的位置。
15          -->
16         <!-- {{}}叫做插值表达式,将数据填充到html标签中,插值表达式支持基本的计算操作。-->
17         <div id="app">
18             <div>{{msg}}</div>
19             <div>{{'I love you ' + msg}}</div>
20             <div>{{1 + 2 + 3}}</div>
21         </div>
22 
23 
24         <script src="vue.js" type="text/javascript"></script>
25         <script type="text/javascript">
26             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
27             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
28             // Vue所做的工作也就是把数据填充把页面的标签里面。
29             var vm = new Vue({
30                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
31                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
32                 // data模型数据,值是一个对象。
33                 data: { // 用于提供数据。
34                     msg: 'hello Vue!'
35                 }
36 
37             });
38         </script>
39     </body>
40 </html>

2、Vue模板语法,默认语法的功能就是前端渲染,前端渲染即使把数据填充到html标签中。数据(来自服务器) + 模板(html标签) = 前端渲染(产物是静态html内容)。

前端渲染的三种方式。

  1)、原生js拼接字符串。基本上就是将数据以字符串的方式拼接到html标签中。缺点是不同开发人员的代码风格差别很大,随着业务的复杂,后期的维护变得逐渐困难起来。   2)、使用前端模板引擎。它拥有自己的一套模板语法规则。优点是大家都遵循同样的规则写代码,代码可读性明显提高了,方便后期的维护。缺点是没有专门提高事件机制。   3)、使用vue特有的模板语法。包含差值表达式、指令、事件绑定、属性绑定、样式绑定、分支循环结构。

3、Vue模板语法,什么是指令?

  1)、什么是自定义属性。自定义属性是区别于标准属性的,标准属性是标签自带的属性。   2)、Vue指令的本质就是自定义属性。   3)、Vue指令的格式,以v-开始,比如v-cloak。指令的名称取决于设计者。

4、Vue模板语法,v-cloak指令用法。

  1)、插值表达式存在的问题,就是闪动。   2)、如果解决该问题,使用v-cloak指令,可以解决闪动的问题。   3)、解决该问题的原理,先隐藏,替换好值之后再显式最终的值。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6 
 7         <style type="text/css">
 8             [v-cloak] {
 9                 display: none;
10             }
11         </style>
12     </head>
13     <body>
14 
15         <!-- 
16             v-cloak指令的用法。
17             1)、需要提高样式。
18                 [v-cloak] {
19                   display: none;
20                 }
21             2)、在插值表达式所在的标签中添加v-cloak指令。
22             3)、原理,先通过样式隐藏内容,然后在内存中进行值的替换,替换好之后再显式最终的结果,此时就不会显式{{}}这种闪动效果。
23         -->
24         <div id="app" v-cloak>
25             <div>{{msg}}</div>
26         </div>
27 
28 
29         <script src="vue.js" type="text/javascript"></script>
30         <script type="text/javascript">
31             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
32             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
33             // Vue所做的工作也就是把数据填充把页面的标签里面。
34             var vm = new Vue({
35                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
36                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
37                 // data模型数据,值是一个对象。
38                 data: { // 用于提供数据
39                     msg: 'hello Vue!'
40                 }
41 
42             });
43         </script>
44     </body>
45 </html>

5、Vue模板语法,v-text、v-html、v-pre数据绑定指令用法。

  1)、v-text填充纯文本。特点一、相比较插值表达式更加简洁。不存在闪动问题,比插值表达式好使的哦。   2)、v-html填充html片段。特点一、存在安全问题。特点二、本网站内部数据可以使用,来自第三方数据不可以用。   3)、v-pre填充原始信息。特点一、显式原始信息,跳过编译过程,分析编译过程。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <div>{{msg}}</div>
11             <!-- v-text没有闪动问题的,用户体验更好,比插值表达式更加好使 -->
12             <div v-text="msg"></div>
13             <!-- 内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译,在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击 -->
14             <div v-html="msg2"></div>
15             <!-- 显式原始信息,跳过编译过程(分析编译过程) -->
16             <div v-pre>{{msg}}</div>
17         </div>
18 
19 
20         <script src="vue.js" type="text/javascript"></script>
21         <script type="text/javascript">
22             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
23             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
24             // Vue所做的工作也就是把数据填充把页面的标签里面。
25             var vm = new Vue({
26                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
27                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
28                 // data模型数据,值是一个对象。
29                 data: { // 用于提供数据
30                     msg: 'hello Vue!',
31                     msg2: '<h1>hello Vue!</h1>', //可以使用v-html标签展示html代码。
32                 }
33 
34             });
35         </script>
36     </body>
37 </html>

6、Vue模板语法,数据响应式。

  1)、如何理解响应式。html5中的响应式(屏幕尺寸的变化导致样式的变化)、数据的响应式(数据的变化导致页面内容的变化)。   2)、什么是数据绑定。数据绑定就是将数据填充到标签中。   3)、v-once只编译一次。显式内容之后不再具有响应式功能。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <div>{{msg}}</div>
11             <!-- v-once只编译一次。显式内容之后不再具有响应式功能。 -->
12             <!-- v-once的应用场景,如果显式的信息后续不需要再修改,可以使用v-once指令,可以可以提高性能,因为Vue就不需要去监听它的变化了。 -->
13             <div v-once>{{info}}</div>
14         </div>
15 
16 
17         <script src="vue.js" type="text/javascript"></script>
18         <script type="text/javascript">
19             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
20             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
21             // Vue所做的工作也就是把数据填充把页面的标签里面。
22             var vm = new Vue({
23                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
24                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
25                 // data模型数据,值是一个对象。
26                 data: { // 用于提供数据
27                     msg: 'hello Vue!',
28                     info: 'hello world Vue !',
29                 }
30 
31             });
32         </script>
33     </body>
34 </html>

7、Vue模板语法,双向数据绑定。

MVVM设计思想,最只要的理念就是分治,把不同的功能代码放到不同的模块,通过特定的方式建立关联。   1)、M指的是Model,就是data里面的数据,提供数据的。Model通过VM的Data Bindings数据绑定View。   2)、V指的是View,就是所写的模板Dom元素,提供页面展示效果的。View通过VM的DOM Listeners事件监听Model。   3)、VM指的是View-Model,就是控制逻辑,实现控制逻辑将两者结合到一起。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <div>{{msg}}</div>
11             <!-- 主要是用于表单输入域中。 -->
12             <!-- 双向数据绑定分析,方向一、页面影响数据,方向二、数据影响页面。 -->
13             <!-- 用户修改页面内容数据会改变,数据改变了影响插值表达式的内容页面改变。 -->
14             <div>
15                 <input type="text" v-model="msg" />
16             </div>
17         </div>
18 
19 
20         <script src="vue.js" type="text/javascript"></script>
21         <script type="text/javascript">
22             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
23             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
24             // Vue所做的工作也就是把数据填充把页面的标签里面。
25             var vm = new Vue({
26                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
27                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
28                 // data模型数据,值是一个对象。
29                 data: { // 用于提供数据
30                     msg: 'hello Vue!',
31                 }
32 
33             });
34         </script>
35     </body>
36 </html>

8、Vue模板语法,事件绑定。

1)、 Vue如何处理事件?

  v-on指令用法:<input type="button" v-on:click="num++" />。   v-on简写形式,<input type="button" @click="num++"/>。 2)、事件函数的调用方式。

  直接绑定函数名称:<button v-on:click="add">加一</button>。不需要传递事件对象,默认携带事件对象。   调用函数:<button @click="reduce()">减一</button>。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <div>{{num}}</div>
11             <!-- 如果逻辑直接写到@click、v-on:click后面,不合理,随着业务量增多,这里变得十分冗余。 -->
12             <div>
13                 <input type="button" v-on:click="num++" value="加一" />
14                 <input type="button" @click="num--" value="减一" />
15 
16                 <br />
17                 <button v-on:click="add">加一</button>
18                 <button @click="reduce()">减一</button>
19             </div>
20         </div>
21 
22 
23         <script src="vue.js" type="text/javascript"></script>
24         <script type="text/javascript">
25             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
26             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
27             // Vue所做的工作也就是把数据填充把页面的标签里面。
28             var vm = new Vue({
29                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
30                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
31                 // data模型数据,值是一个对象。
32                 data: { // 用于提供数据
33                     // msg: 'hello Vue!',
34                     num: 1, // num初始化值为1
35                 },
36                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
37                     add: function() {
38                         this.num++; // 此处的this指的是vm即Vue的实例,通过vm可以访问到num。
39                     },
40                     reduce: function() {
41                         this.num--;
42                     }
43                 }
44 
45             });
46         </script>
47     </body>
48 </html>

3)、事件函数的参数传递。如果传参事件对象,固定格式$event。

普通的参数和事件对象:<button @click="say("hi",$event)">Say Hi</button>。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <div>{{num}}</div>
11             <!-- 如果逻辑直接写到@click、v-on:click后面,不合理,随着业务量增多,这里变得十分冗余。 -->
12             <div>
13                 <input type="button" v-on:click="num++" value="加一" />
14                 <input type="button" @click="num--" value="减一" />
15 
16                 <br />
17                 <!-- 
18                     事件绑定-参数传递。
19                     1)、如果事件直接绑定函数名称,那么默认会传递事件对象作为事件函数的第一个参数。
20                     2)、如果事件绑定函数调用,那么事件对象必须作为最后一个参数进行显式传递,并且事件对象的名称必须是固定的$event。
21                  -->
22                 <!-- v-on:click="add"不需要传递事件对象,默认携带事件对象。 -->
23                 <button v-on:click="add">加一</button>
24                 <!-- 这种情况是传递具体的参数 -->
25                 <button @click="reduce(2,3,4)">减二</button>
26 
27                 <!-- 传递事件对象,最后一个参数是事件对象,并且$event名称是固定的 -->
28                 <button @click="multip(2,3,$event)">乘二</button>
29             </div>
30         </div>
31 
32 
33         <script src="vue.js" type="text/javascript"></script>
34         <script type="text/javascript">
35             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
36             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
37             // Vue所做的工作也就是把数据填充把页面的标签里面。
38             var vm = new Vue({
39                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
40                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
41                 // data模型数据,值是一个对象。
42                 data: { // 用于提供数据
43                     // msg: 'hello Vue!',
44                     num: 1, // num初始化值为1
45                 },
46                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
47                     add: function() {
48                         console.log(event.target.tagName); // 通过event事件对象可以拿到触发事件的对象。
49                         console.log(event.target.innerHTML); // 通过event事件对象可以拿到内容。
50                         this.num++; // 此处的this指的是vm即Vue的实例,通过vm可以访问到num。
51                     },
52                     reduce: function(param1, param2, param3) {
53                         console.log(param1);
54                         console.log(param2);
55                         console.log(param3);
56                         this.num = this.num - param1;
57                     },
58                     multip: function(param1, param2, event) {
59                         console.log(param1);
60                         console.log(param2);
61                         console.log(event.target.tagName); // 通过event事件对象可以拿到触发事件的对象。
62                         console.log(event.target.innerHTML); // 通过event事件对象可以拿到内容。
63                         this.num = this.num * param1;
64                     },
65 
66                 }
67 
68             });
69         </script>
70     </body>
71 </html>

4)、事件修饰符,处理事件的特殊行为。

.stop阻止冒泡:<a v-on:click.stop="">跳转</a>。   .prevent阻止默认行为:<a v-on:click.prevent="">跳转</a>。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <div>{{num}}</div>
11             <!-- 冒泡行为,会执行这里的点击事件 -->
12             <div @click="add0">
13                 <!-- 
14                     事件绑定-参数传递。
15                     1)、如果事件直接绑定函数名称,那么默认会传递事件对象作为事件函数的第一个参数。
16                     2)、如果事件绑定函数调用,那么事件对象必须作为最后一个参数进行显式传递,并且事件对象的名称必须是固定的$event。
17                  -->
18                 <!-- v-on:click="add"不需要传递事件对象,默认携带事件对象。 -->
19                 <!-- .stop阻止了冒泡的发生 -->
20                 <button v-on:click.stop="add">加一</button>
21                 <!-- 这种情况是传递具体的参数 -->
22                 <button @click="reduce(2,3,4)">减二</button>
23 
24                 <!-- 传递事件对象,最后一个参数是事件对象,并且$event名称是固定的 -->
25                 <button @click="multip(2,3,$event)">乘二</button>
26 
27                 <!-- 阻止默认行为,典型应用是超链接,默认的时候会发生跳转,.prevent事件修饰符阻止默认行为 -->
28                 <a href="https://www.baidu.com/" @click.stop.prevent="stopBlank">百度</a>
29             </div>
30         </div>
31 
32 
33         <script src="vue.js" type="text/javascript"></script>
34         <script type="text/javascript">
35             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
36             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
37             // Vue所做的工作也就是把数据填充把页面的标签里面。
38             var vm = new Vue({
39                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
40                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
41                 // data模型数据,值是一个对象。
42                 data: { // 用于提供数据
43                     // msg: 'hello Vue!',
44                     num: 1, // num初始化值为1
45                 },
46                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
47                     // 通过点击事件的冒泡触发了该方法的执行。
48                     add0: function() {
49                         this.num++;
50                     },
51                     add: function() {
52                         console.log(event.target.tagName); // 通过event事件对象可以拿到触发事件的对象。
53                         console.log(event.target.innerHTML); // 通过event事件对象可以拿到内容。
54                         this.num++; // 此处的this指的是vm即Vue的实例,通过vm可以访问到num。
55 
56                         // 阻止冒泡行为,就不会发生冒泡的行为。可以拿到事件对象就可以阻止冒泡的。
57                         // stopPropagation此方法可以根据事件对象调用阻止冒泡的发生。
58                         // event.stopPropagation();
59 
60                     },
61                     reduce: function(param1, param2, param3) {
62                         console.log(param1);
63                         console.log(param2);
64                         console.log(param3);
65                         this.num = this.num - param1;
66                     },
67                     multip: function(param1, param2, event) {
68                         console.log(param1);
69                         console.log(param2);
70                         console.log(event.target.tagName); // 通过event事件对象可以拿到触发事件的对象。
71                         console.log(event.target.innerHTML); // 通过event事件对象可以拿到内容。
72                         this.num = this.num * param1;
73                     },
74                     stopBlank: function(event) {
75                         // 阻止默认跳转行为,原生Js的api,换成事件修饰符。
76                         // event.preventDefault();
77                     },
78 
79                 }
80 
81             });
82         </script>
83     </body>
84 </html>

5)、按键修饰符。

  .enter回车键:<input v-on:keyup.enter='submit'>。   .delete删除键:<input v-on:keyup.delete='handle'>。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <form action="">
11                 <div>账号:<input type="text" v-on:keyup.delete="clearContext" v-model="name" /></div>
12                 <!-- v-on:keyup.enter按键修饰符,通过回车就可以触发事件 -->
13                 <div>密码:<input type="text" v-on:keyup.enter="handleSubmit" v-model="password" /></div>
14                 <div><input type="button" v-on:click="handleSubmit" value="提交"></div>
15             </form>
16 
17         </div>
18         </div>
19 
20 
21         <script src="vue.js" type="text/javascript"></script>
22         <script type="text/javascript">
23             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
24             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
25             // Vue所做的工作也就是把数据填充把页面的标签里面。
26             var vm = new Vue({
27                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
28                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
29                 // data模型数据,值是一个对象。
30                 data: { // 用于提供数据
31                     name: '',
32                     password: ''
33                 },
34                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
35                     handleSubmit: function() {
36                         // 此时可以将表单的内容通过ajax提交到后台
37                         console.log(this.name, this.password)
38                     },
39                     clearContext: function() {
40                         // 按delete键的时候,清空用户名
41                         this.name = '';
42                         this.password = '';
43                     }
44                 }
45 
46             });
47         </script>
48     </body>
49 </html>

6)、自定义按键修饰符。

全局config.keyCodes对象:Vue.config.keyCodes.f1=112。 注释:keyCodes是一个对象,f1是自定义的,112是一个值,这个值是每一个按键的唯一标识,通过这个事件对象可以获取到这个唯一标识。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <input type="text" v-on:keyup="handle" v-model="info" />
11 
12             <!-- 13就是Enter的唯一标识,可以使用这种形式v-on:keyup.13,就不用自定义按键了,但是数值的形式不直观 -->
13             <input type="text" v-on:keyup.13="handle" v-model="info" />
14             <!-- 事件绑定,自定义按键修饰符,规则,自定义按键修饰符名字是自定义的,但是对应的值必须是按键对应的event.keyCode的值。-->
15             <input type="text" v-on:keyup.f1="handle" v-model="info" />
16         </div>
17         </div>
18 
19 
20         <script src="vue.js" type="text/javascript"></script>
21         <script type="text/javascript">
22             // 自定义按键修饰符,可以使用 `v-on:keyup.f1`
23             Vue.config.keyCodes.f1 = 112
24             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
25             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
26             // Vue所做的工作也就是把数据填充把页面的标签里面。
27             var vm = new Vue({
28                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
29                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
30                 // data模型数据,值是一个对象。
31                 data: { // 用于提供数据
32                     info: '',
33                 },
34                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
35                     handle: function() {
36                         // 可以通过event.keyCode获取到每一个按键的唯一标识
37                         console.log(event.keyCode)
38                     }
39                 }
40 
41             });
42         </script>
43     </body>
44 </html>

9、简单相加计算器。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <!-- 
11                 1)、通过v-model指令实现数值a和数值b的绑定。
12                 2)、给计算按钮绑定事件,实现计算逻辑。
13                 3)、将计算结果绑定到对应的位置。
14              -->
15 
16             <h1>简单计算器</h1>
17             <div>
18                 <span>数值A:</span>
19                 <span>
20                     <input type="text" v-model="a" />
21                 </span>
22             </div>
23             <div>
24                 <span>数值B:</span>
25                 <span>
26                     <input type="text" v-model="b" />
27                 </span>
28             </div>
29             <div>
30                 <button @click="handle">计算</button>
31             </div>
32             <div>
33                 <span>计算结果:</span>
34                 <span v-text="result"></span>
35             </div>
36         </div>
37         </div>
38 
39 
40         <script src="vue.js" type="text/javascript"></script>
41         <script type="text/javascript">
42             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
43             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
44             // Vue所做的工作也就是把数据填充把页面的标签里面。
45             var vm = new Vue({
46                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
47                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
48                 // data模型数据,值是一个对象。
49                 data: { // 用于提供数据
50                     a: '',
51                     b: '',
52                     result: ''
53                 },
54                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
55                     handle: function() {
56                         // 实现计算结果,默认获取得到的是字符串,这里需要先转换成整数
57                         this.result = parseInt(this.a) + parseInt(this.b);
58                     }
59                 }
60 
61             });
62         </script>
63     </body>
64 </html>

10、Vue模板语法,属性绑定。

1)、Vue如何动态处理属性。

  v-bind指令用法:<a v-bind:href='url'>跳转</a>。   缩写形式:<a :href='url'>跳转</a>

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <a href="https://www.baidu.com">百度</a>
11 
12             <!-- v-bind指令用法,使用外部的url来填充访问链接 -->
13             <a v-bind:href="url">百度</a>
14             <a :href="url">百度</a>
15             <button @click="handle">切换</button>
16 
17         </div>
18 
19 
20         <script src="vue.js" type="text/javascript"></script>
21         <script type="text/javascript">
22             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
23             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
24             // Vue所做的工作也就是把数据填充把页面的标签里面。
25             var vm = new Vue({
26                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
27                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
28                 // data模型数据,值是一个对象。
29                 data: { // 用于提供数据
30                     url: 'https://www.baidu.com'
31                 },
32                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
33                     handle: function() {
34                         // 修改url地址
35                         this.url = 'https://cn.vuejs.org/';
36                     }
37                 }
38 
39             });
40         </script>
41     </body>
42 </html>

2)、v-model的底层实现原理分析,v-model用于实现双向数据绑定。v-model底层用到的是属性绑定和事件绑定的组合。<input v-bind:value="msg" v-on:input="msg=$event.target.value" />

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <div v-text="msg"></div>
11             <!-- 通过v-on:input实现,修改数据影响模型中的数据,当input输入框发生变化,触发input事件 -->
12             <input v-bind:value="msg" v-on:input="handle" />
13             <!-- 简化形式,通过v-on:input="msg=$event.target.value"可以获取到最新值,将最新值赋值给v-on:input里面的msg -->
14             <input type="text" v-bind:value="msg" v-on:input="msg=$event.target.value" />
15             <!-- v-model="msg"数据双向绑定 -->
16             <input type="text" v-model="msg" />
17         </div>
18 
19 
20         <script src="vue.js" type="text/javascript"></script>
21         <script type="text/javascript">
22             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
23             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
24             // Vue所做的工作也就是把数据填充把页面的标签里面。
25             var vm = new Vue({
26                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
27                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
28                 // data模型数据,值是一个对象。
29                 data: { // 用于提供数据
30                     msg: 'hello'
31                 },
32                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
33                     handle: function(event) {
34                         // 通过拿到event对象就可以操作元素的值
35                         // 覆盖原来的值,影响模型中的数据,而模型中数据改变了进而应该视图中的数据,这就是双向绑定。
36                         // 使用输入域中的最新的数据覆盖原来的数据。
37                         this.msg = event.target.value;
38                     }
39                 }
40 
41             });
42         </script>
43     </body>
44 </html>

11、Vue模板语法,样式绑定。

1)、通过class样式进行处理,处理标签的属性。

  对象语法:<div v-bind:class="{active:isActive}"></div>。对象形式的。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6         <style type="text/css">
 7             .active {
 8                 border: 1px solid red;
 9                 width: 100px;
10                 height: 100px;
11             }
12 
13             .error {
14                 background-color: orange;
15             }
16         </style>
17     </head>
18     <body>
19 
20         <div id="app">
21             <!-- 传统方式是操作dom的class属性,Vue使用的v-bind:class="{}"来操作属性即可 -->
22             <!-- 对象形式:v-bind:class="{}"的大括号里面是一个对象,对象是键值对形式的,键是类名,值是属性,控制是否显式 -->
23             <div v-bind:class="{active : isActive}">哈哈哈</div>
24 
25             <!-- 对象形式:多个对象 -->
26             <div v-bind:class="{active : isActive,error : isError}">呵呵呵</div>
27             <!-- 切换,可以切换是否展示 -->
28             <button @click="handle">切换</button>
29         </div>
30 
31         <script src="vue.js" type="text/javascript"></script>
32         <script type="text/javascript">
33             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
34             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
35             // Vue所做的工作也就是把数据填充把页面的标签里面。
36             var vm = new Vue({
37                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
38                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
39                 // data模型数据,值是一个对象。
40                 data: { // 用于提供数据
41                     isActive: 'true', // true默认是展示的,isActive其中is开头的一般是标志位,要么是true,要么是false。
42                     isError: 'true', // true显式,false不显示
43                 },
44                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
45                     handle: function() {
46                         // 控制isActive的值,在true和false之间进行切换,使用!取反来操作
47                         this.isActive = !this.isActive;
48                         this.isError = !this.isError;
49                     }
50                 }
51 
52             });
53         </script>
54     </body>
55 </html>

  数组语法:<div v-bind:class="[activeClass, errorClass]"></div>。数组形式的。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6         <style type="text/css">
 7             .active {
 8                 border: 1px solid red;
 9                 width: 100px;
10                 height: 100px;
11             }
12 
13             .error {
14                 background-color: orange;
15             }
16         </style>
17     </head>
18     <body>
19 
20         <div id="app">
21             <!-- 数组形式,绑定样式 -->
22             <div v-bind:class="[activeClass, errorClass]">哈哈哈</div>
23 
24             <!-- 切换,可以切换是否展示 -->
25             <button @click="handle">切换</button>
26         </div>
27 
28         <script src="vue.js" type="text/javascript"></script>
29         <script type="text/javascript">
30             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
31             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
32             // Vue所做的工作也就是把数据填充把页面的标签里面。
33             var vm = new Vue({
34                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
35                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
36                 // data模型数据,值是一个对象。
37                 data: { // 用于提供数据
38                     activeClass: 'active', // activeClass表示的是类名称
39                     errorClass: 'error', // 
40                 },
41                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
42                     handle: function() {
43                         this.activeClass = ''; // 直接将类名置空,就可以去掉这个样式
44                         this.errorClass = '';
45                     }
46                 }
47 
48             });
49         </script>
50     </body>
51 </html>

2)、样式绑定相关语法细节。

  a、对象绑定和数组绑定可以结合使用。   b、class绑定的值可以简化操作。   c、默认的class如何处理。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6         <style type="text/css">
 7             .active {
 8                 border: 1px solid red;
 9                 width: 100px;
10                 height: 100px;
11             }
12 
13             .error {
14                 background-color: orange;
15             }
16 
17             .colors {
18                 color: blue;
19             }
20 
21             .base {
22                 font-size: 28px;
23             }
24         </style>
25     </head>
26     <body>
27 
28         <div id="app">
29             <!--
30                 样式绑定相关语法细节。
31                 1、对象绑定和数组绑定可以结合使用。
32                 2、class绑定的值可以简化操作。
33                 3、默认的class如何处理。
34              -->
35             <!-- 数组形式和对象样式组合使用,绑定样式,但是如果样式过多,可读性变差 -->
36             <div v-bind:class="[activeClass, errorClass, {colors: isColor}]">哈哈哈</div>
37 
38             <!-- 数组形式的简化写法 -->
39             <div v-bind:class="arrClasses">嘿嘿嘿</div>
40 
41             <!-- 对象形式的简化写法 -->
42             <div v-bind:class="objClass">呵呵呵</div>
43 
44             <!-- 默认的class如何处理,默认的class不会被覆盖,而是结合到了一起 -->
45             <div class="base" v-bind:class="objClass">哼哼哼</div>
46 
47 
48             <!-- 切换,可以切换是否展示 -->
49             <button @click="handle">切换</button>
50         </div>
51 
52         <script src="vue.js" type="text/javascript"></script>
53         <script type="text/javascript">
54             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
55             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
56             // Vue所做的工作也就是把数据填充把页面的标签里面。
57             var vm = new Vue({
58                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
59                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
60                 // data模型数据,值是一个对象。
61                 data: { // 用于提供数据
62                     activeClass: 'active', // activeClass表示的是类名称
63                     errorClass: 'error', // 
64                     isColor: true,
65                     arrClasses: ['active', 'error'], // 简化数组形式
66                     objClass: { // 对象形式的简化
67                         active: true,
68                         error: true,
69                     }
70                 },
71                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
72                     handle: function() {
73                         this.isColor = !this.isColor; // 
74                         this.objClass.error = !this.objClass.error; // 对象形式修改样式
75                     }
76                 }
77 
78             });
79         </script>
80     </body>
81 </html>

3)、style样式处理,也称为内联样式。

对象语法:<div v-bind:style="{color: activeColor,fontSize: fontSize}"></div>。直接写了css样式。 数组语法:<div v-bind:class="[baseStyles, overridingStyles]"></div>。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <!-- 对象形式,如果样式较多,可读性不好 -->
11             <div v-bind:style="{border: borderStyle, width: widthStyle, height: heightStyle}">哈哈哈</div>
12             <!-- 对象形式简化用法,通过使用对象形式的一组样式来展示 -->
13             <div v-bind:style="objStyles">哈哈哈</div>
14 
15             <!-- 数组语法,里面存放的多个对象的形式 -->
16             <div v-bind:style="[objStyles, overwiteStyles]"></div>
17 
18             <!-- 切换,可以切换是否展示 -->
19             <button @click="handle">切换</button>
20         </div>
21 
22         <script src="vue.js" type="text/javascript"></script>
23         <script type="text/javascript">
24             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
25             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
26             // Vue所做的工作也就是把数据填充把页面的标签里面。
27             var vm = new Vue({
28                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
29                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
30                 // data模型数据,值是一个对象。
31                 data: { // 用于提供数据
32                     borderStyle: '1px solid red', //
33                     widthStyle: '100px', // 
34                     heightStyle: '200px',
35                     objStyles: {
36                         border: '1px solid red', //
37                         width: '200px', // 
38                         height: '100px',
39                     },
40                     overwiteStyles: {
41                         border: '3px solid orange', //
42                         width: '100px', //
43                         height: '200px',
44                         backgroundColor: 'pink',
45                     }
46                 },
47                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
48                     handle: function() {
49                         this.heightStyle = '100px'; // 
50                         this.objStyles.width = '100px'; // 可以修改对象里面的属性的样式值
51                         this.overwiteStyles.height = '100px'; // 可以修改对象里面的属性的样式值
52                     }
53                 }
54 
55             });
56         </script>
57     </body>
58 </html>

12、Vue模板语法,分支循环结构。

1)、分支结构,v-if、v-else、v-else-if、v-show。

  v-if和v-show的区别,v-if控制元素是否渲染到页面。v-show控制元素是否显式(已经渲染到了页面)。如果一个元素频繁的显式和隐藏就使用v-show,如果一个元素渲染出来之后变化的比较少的话就用v-if,控制的是dom元素的增加或者删除。。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <input v-model="score" />
11             <!-- 分支结构,渲染出来的只有一个div,区别于v-show -->
12             <div v-if="score>= 90">优秀</div>
13             <div v-else-if="score< 90 && score >= 80">良好</div>
14             <div v-else-if="score< 80 && score > 70">一般</div>
15             <div v-else-if="score< 70 && score > 60">及格</div>
16             <div v-else>不及格</div>
17 
18             <br />
19             <!-- v-show的原理,控制元素样式是否显式,就是display:none或者display:block; -->
20             <!-- 分支结构,v-show,当为false的时候,页面不展示,但是浏览器源码是展示的,false的样式是style="display: none;" -->
21             <div v-show="flag">测试v-show</div>
22             <!-- 切换 -->
23             <button @click="handle">切换</button>
24         </div>
25 
26         <script src="vue.js" type="text/javascript"></script>
27         <script type="text/javascript">
28             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
29             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
30             // Vue所做的工作也就是把数据填充把页面的标签里面。
31             var vm = new Vue({
32                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
33                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
34                 // data模型数据,值是一个对象。
35                 data: { // 用于提供数据
36                     score: '',
37                     flag: true,
38                 },
39                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
40                     handle: function() {
41                         this.flag = !this.flag;
42                     }
43                 }
44 
45             });
46         </script>
47     </body>
48 </html>

2)、分支循环结构,循环结构。

a)、v-for遍历数组:<li v-for="item in list">{{item}}</li>。     <li v-for="(item, index) in list">{{item}} + '---' + {{index}}</li>。   b)、key的作用,帮助vue区分不同的元素,从而提高性能。     <li :key='item.id' v-for="(item,index) in list">{{item}} + '---' + {{index}}</li>。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <span>水果列表:</span>
11             <!-- 循环遍历 -->
12             <!-- 使用v-text进行展示,可以避免闪动现象发生 -->
13             <li v-for="item in fruit" v-text="item"></li>
14             <!-- 使用插值表达式,可能出现闪动 -->
15             <!-- <li v-for="item in fruit">{{item}}</li> -->
16 
17             <br />
18             <span>水果列表:</span>
19             <!-- 展示的索引和元素,使用空格隔开 -->
20             <li v-for="(item,index) in fruit">{{index + " " + item}}</li>
21             <!-- 展示形式和上面的一致 -->
22             <li v-for="(item,index) in fruit">{{index}} {{item}}</li>
23 
24             <br />
25             <span>水果列表:</span>
26             <!-- 复杂的数组对象结构 -->
27             <li v-for="item in cfruit">
28                 <!-- 通过点来获取数组对象的属性值 -->
29                 <span>{{item.ename}} {{item.cname}}</span>
30             </li>
31 
32             <br />
33             <span>水果列表:</span>
34             <!-- key的作用,帮助vue区分不同的元素,从而提高性能。Vue在处理Dom元素的时候,需要区分兄弟节点之间彼此是不一样的,给每个兄弟节点标注一个唯一标识 -->
35             <!-- 使用唯一标识,方便区分是那一个元素 -->
36             <li :key='item.id' v-for="(item,index) in cfruit">
37                 <!-- 通过点来获取数组对象的属性值 -->
38                 <span>{{item.ename}} {{item.cname}}</span>
39             </li>
40         </div>
41 
42         <script src="vue.js" type="text/javascript"></script>
43         <script type="text/javascript">
44             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
45             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
46             // Vue所做的工作也就是把数据填充把页面的标签里面。
47             var vm = new Vue({
48                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
49                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
50                 // data模型数据,值是一个对象。
51                 data: { // 用于提供数据
52                     fruit: ['apple', 'orange', 'banana'],
53                     cfruit: [{
54                         id: 1,
55                         ename: 'apple',
56                         cname: '苹果',
57                     }, {
58                         id: 2,
59                         ename: 'orange',
60                         cname: '橘子',
61                     }, {
62                         id: 3,
63                         ename: 'banana',
64                         cname: '香蕉',
65                     }, ]
66                 },
67                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
68 
69                 }
70 
71             });
72         </script>
73     </body>
74 </html>

3)、分支循环结构,循环结构。

  a)、v-for遍历对象:<div v-for='(value, key, index) in object'></div>。   b)、v-if和v-for结合使用:<div v-if='value == 12' v-for='(value, key, index) in object'></div>。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6     </head>
 7     <body>
 8 
 9         <div id="app">
10             <!-- v-for遍历对象 -->
11             <div v-for="(value, key, index) in object">
12                 {{index}} {{key}} {{value}}
13             </div>
14             
15             <br />
16             <!-- v-if和v-for结合使用 -->
17             <div v-if="value == 22" v-for="(value, key, index) in object">{{index}} {{key}} {{value}}</div>
18         </div>
19 
20         <script src="vue.js" type="text/javascript"></script>
21         <script type="text/javascript">
22             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
23             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
24             // Vue所做的工作也就是把数据填充把页面的标签里面。
25             var vm = new Vue({
26                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
27                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
28                 // data模型数据,值是一个对象。
29                 data: { // 用于提供数据
30                     object: {
31                         name: '张三三',
32                         age: 22,
33                         gender: '男性',
34                     }
35                 },
36                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
37 
38                 }
39 
40             });
41         </script>
42     </body>
43 </html>

13、Tab选项卡。

1)、实现静态ui效果,用传统的方式实现标签结构和样式。   2)、基于数据重构ui效果,将静态的结构和样式重构为基于Vue模板语法的形式,处理事件绑定和js控制逻辑。   3)、总结,Vue模板 + Js控制逻辑 = Vue实例对象,实现前端功能。

  4)、声明式编程,模板的结构和最终显示的效果基本一致。

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>hello world</title>
 6         <style>
 7             .tal ul{
 8                 overflow: hidden;
 9                 padding: 0;
10                 margin: 0;
11             }
12             .tab ul li{
13                 box-sizing: border-box;
14                 padding: 0;
15                 float: left;
16                 width: 100px;
17                 height: 45px;
18                 line-height: 45px;
19                 list-style: none;
20                 text-align: center;
21                 border-top: 1px solid black;
22                 border-right: 1px solid black;
23                 cursor: pointer;
24             }
25             .tab ul li:first-child{
26                 border-left: 1px solid black;
27             }
28             .tab ul li.active{
29                 background-color: orange;
30             }
31             .tab div{
32                 width: 500px;
33                 height: 300px;
34                 display: none;
35                 text-align: center;
36                 font-size: 30px;
37                 line-height: 300px;
38                 border: 0px solid black;
39                 border-top: 0px;
40             }
41             .tab div.current{
42                 display: block;
43             }
44         </style>
45     </head>
46     <body>
47 
48         <div id="app">
49             <!-- Tab选项卡。 -->
50             <div class="tab">
51                 <!-- 展示tab栏 -->
52                 <ul>
53                     <li v-on:click="change(index)" v-bind:class="currentIndex == index ? 'active':''" :key='item.id' v-for="(item,index) in list">{{item.title}}</li>
54                 </ul>
55                 <!-- 展示图片 -->
56                 <div v-bind:class="currentIndex == index ? 'current':''" :key='item.id' v-for="(item,index) in list">
57                     <!-- <img v-bind:src="item.path" /> -->
58                     <img :src="item.path" />
59                 </div>
60             </div>
61         </div>
62 
63         <script src="vue.js" type="text/javascript"></script>
64         <script type="text/javascript">
65             // Vue代码运行原理分析,概述编译过程的概念(Vue语法->原生语法),就是Vue代码经过Vue框架变成了原生js代码。
66             // 创建一个Vue的变量vm,存储Vue的实例,提供一个参数,是对象形式的,并且这个对象包含两个重要的属性el、data。
67             // Vue所做的工作也就是把数据填充把页面的标签里面。
68             // Vue实例对象将Vue模板和Js控制逻辑粘合到一起,最终实现前端功能
69             var vm = new Vue({
70                 // el元素的挂载位置,值可以是CSS选择器或者DOM元素,挂载就是将数据关联到页面的某个标签上。
71                 el: '#app', // el是告诉Vue把数据填充到那个位置,这里通过id选择器进行绑定到那个标签。
72                 // data模型数据,值是一个对象。
73                 data: { // 用于提供数据
74                     currentIndex: 0, //选项卡当前的索引 
75                     list: [{
76                         id: 1,
77                         title: '小米10Pro',
78                         path: 'img/1.jpg',
79                     }, {
80                         id: 2,
81                         title: '小米9Pro',
82                         path: 'img/2.jpg',
83                     }, {
84                         id: 3,
85                         title: '小米8Pro',
86                         path: 'img/3.jpg',
87                     }],
88                 },
89                 methods: { // methods属性里面可以定义很多方法的,值是一个对象。方法需要定义到methods属性当中。
90                     change: function(index) {
91                         // 实现选项卡的切换操作,切换的本质就是修改的类名称,操作类名称就是通过currentIndex这个索引的,因为这个索引影响三目运算符的真假
92                         this.currentIndex = index;
93                     }
94                 }
95 
96             });
97         </script>
98     </body>
99 </html>

实现效果如下所示:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档