
阅读本文约需要10分钟,您可以先关注我们,避免下次无法找到。
本篇文章成哥继续带大家来学习前端教程之VUE,它是一个前端框架具有高效、简单及易用等特点。下面我们就一起来学习内容吧!
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。
与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。
Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。
另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
该框架的作者是一位中国人叫尤雨溪,毕业于上海复旦附中,在美国完成大学学业,本科毕业于上 Colgate University,后在 Parsons 设计学院获得 Design & Technology 艺术硕士学位,任职于纽约 Google Creative Lab。
目前作者以技术顾问的身份加入了阿里巴巴的 Weex 团队来做 Vue 和 Weex 的 JavaScript runtime 整合,目标是让大家能用 Vue 的语法跨三端。
VUE可以像我们之前jQuery教程一样将VUE.js下载下来进行引用,也可以通过CDN方式引用,还可以通过VUE-CLI来安装(VUE-CLI需要通过NPM安装,在后面的教程中成哥将专门推出一篇NPM入门教程,在这边就不详细讲解了),在这边我们登陆到VUE官网来下载VUE.js然后进行引用,具体操作如下:
1.登陆VUE官网下载vue.js文件

2.在HTML文件中引用vue.js文件
1. <!DOCTYPE html>  
2. <html>  
3. <head>  
4.     <meta charset="UTF-8">  
5.     <title>VUE基础教程</title>  
6.     <!-- 引用vue.js文件   -->  
7.     <script src="vue.js"></script>  
8. </head>  
9. <body>  
10.   
11. </body>  
12. </html>  (1)VUE实例
每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的
1. var vm = new Vue({  
2.   // 选项  
3. })  当创建一个 Vue 实例时,你可以传入一个选项对象,下面我们就来看看怎么通过实例将选项对象渲染在页面的
1. <!DOCTYPE html>  
2. <html>  
3. <head>  
4.     <meta charset="UTF-8">  
5.     <title>VUE基础教程</title>  
6.     <!-- 引用vue.js文件   -->  
7.     <script src="vue.js"></script>  
8. </head>  
9. <body>  
10.     <!-- 这边的{{msg}}中的msg就是变量,vue会根据变量名到data数据对象中找到其对应的值然后渲染 -->  
11.     <div id="app">{{msg}}</div>  
12.     <script>  
13.       var vm = new Vue({  
14.           el: '#app',  // dom的挂载点,这边将dom挂载到id为app的标签上  
15.           data: {  // 数据对象  
16.             msg: "hello vue"  // 定义变量值  
17.           }  
18.       })  
19.     </script>  
20. </body>  
21. </html>  上述代码渲染结果如下

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。列如 created 钩子可以用来在一个实例被创建之后执行代码
1. new Vue({  
2.   data: {  
3.     a: 1  
4.   },  
5.   created: function () {  
6.     // `this` 指向 vm 实例  
7.     console.log('a is: ' + this.a)  
8.   }  
9. })  
10. // 在实例创建后会输出"a is: 1"  也有一些其它的钩子,在实例生命周期的不同阶段被调用,如 mounted、updated 和 destroyed。生命周期钩子的 this 上下文指向调用它的 Vue 实例。VUE实例的整个生命周期如下图所示

(2)模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。
1)插值
a.文本
数据绑定最常见的形式就是使用"Mustache"语法 (双大括号) 的文本插值:
1. <span>Message: {{ msg }}</span>  Mustache 标签将会被替代为对应数据对象上 msg对应的值。无论何时,绑定的数据对象上 msg值发生了改变,插值处的内容都会更新。通过使用 v-once 指令,也能执行一次性地插值,当数据改变时,插值处的内容不会更新。但请留心这会影响到该节点上的其它数据绑定
1. <span v-once>这个将不会改变: {{ msg }}</span>  b.原始HTML
双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,你需要使用 v-html 指令,示例如下
1. <!DOCTYPE html>  
2. <html>  
3. <head>  
4.     <meta charset="UTF-8">  
5.     <title>VUE基础教程</title>  
6.     <!-- 引用vue.js文件   -->  
7.     <script src="vue.js"></script>  
8. </head>  
9. <body>  
10.     <div id="app">  
11.       <!-- 这边没有用v-html所以标签渲染出来直接是文本 -->  
12.       <p>{{msg}}</p>  
13.       <!-- 这边使用了v-html所以渲染初始是标签 -->  
14.       <p v-html="msg"></p>  
15.     </div>  
16.     <script>  
17.       var vm = new Vue({  
18.           el: '#app',  // dom的挂载点,这边将dom挂载到id为app的标签上  
19.           data: {  // 数据对象  
20.             msg: "<h4>我是h4标签</h4>"  // 定义变量值  
21.           }  
22.       })  
23.     </script>  
24. </body>  
25. </html>  
c.属性
双大括号语法不能作用在 HTML标签属性上,需要对标签属性操作,应该使用 v-bind 指令
1. <div v-bind:id="dynamicId"></div>  目前通过v-bind来演示HTML标签属性的设置
1. <!DOCTYPE html>  
2. <html>  
3. <head>  
4.     <meta charset="UTF-8">  
5.     <title>VUE基础教程</title>  
6.     <!-- 引用vue.js文件   -->  
7.     <script src="vue.js"></script>  
8. </head>  
9. <body>  
10.     <div id="app">  
11.       <!-- 这边将button的disabled属性值绑定到isButtonDisabled变量,如果为true那按钮将变灰禁止点击 -->  
12.       <button v-bind:disabled="isButtonDisabled">点我</button>  
13.     </div>  
14.     <script>  
15.       var vm = new Vue({  
16.           el: '#app',  // dom的挂载点,这边将dom挂载到id为app的标签上  
17.           data: {  // 数据对象  
18.             isButtonDisabled: true  
19.           }  
20.       })  
21.     </script>  
22. </body>  
23. </html>  
d. javascript 表达式
上面,我们只进行了绑定简单的属性键值。但实际上,对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持
1. {{ number + 1 }}  
2.   
3. {{ ok ? 'YES' : 'NO' }}  
4.   
5. {{ message.split('').reverse().join('') }}  
6.   
7. <div v-bind:id="'list-' + id"></div>  这些表达式会在所属 Vue 实例的数据作用域下作为 JavaScript 被解析。有个限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。
1. <!-- 这是语句,不是表达式 -->  
2. {{ var a = 1 }}  
3.   
4. <!-- 流控制也不会生效,请使用三元表达式 -->  
5. {{ if (ok) { return message } }}  2)指令
指令 (Directives) 是带有v-前缀的特殊特性,指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。
a.参数
一些指令能够接收一个"参数",在指令名称之后以冒号表明,下面我们通过v-on指令来演示动态改变DOM中渲染的值
1. <!DOCTYPE html>  
2. <html>  
3. <head>  
4.     <meta charset="UTF-8">  
5.     <title>VUE基础教程</title>  
6.     <!-- 引用vue.js文件   -->  
7.     <script src="vue.js"></script>  
8. </head>  
9. <body>  
10.     <div id="app">  
11.       <p>{{msg}}</p>  
12.       <button v-on:click="changeContent">点我改变上面页面内容</button>  
13.     </div>  
14.     <script>  
15.       var vm = new Vue({  
16.           el: '#app',  // dom的挂载点,这边将dom挂载到id为app的标签上  
17.           data: {  // 数据对象  
18.             msg: "我还没变"  
19.           },  
20.          methods: {  
21.            // v-on是绑定的方法所以在这边要创建一个click的方法事件changeContent  
22.            changeContent(){  
23.              // 当被点击后对msg进行重新赋值  
24.              this.msg = "我被改变了"  
25.            }  
26.          }  
27.       })  
28.     </script>  
29. </body>  
30. </html>  

b. 动态参数
从 2.6.0 开始,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数
1. <a v-bind:[attributeName]="url"> ... </a>  这里的 attributeName 会被作为一个 JavaScript 表达式进行动态求值,求得的值将会作为最终的参数来使用。例如,如果你的 Vue 实例有一个 data property attributeName,其值为 "href",那么这个绑定将等价于 v-bind:href。同样地,你可以使用动态参数为一个动态的事件名绑定处理函数:
1. <a v-on:[eventName]="doSomething"> ... </a>  在这个示例中,当 eventName的值为 "focus" 时,v-on:[eventName]将等价于 v-on:focus。
c. 修饰符
修饰符 (modifier) 是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定, 例如.prevent 修饰符告知v-on指令对于触发的事件调用 event.preventDefault()
1. <form v-on:submit.prevent="onSubmit">...</form>
3)指令缩写
v- 是 Vue.js 中特定的标志,用来识别模板中 Vue 特定的特性。当你在使用 Vue.js 为现有标签添加动态行为时,v- 前缀很有协助,但是频繁使用到,也会让人感觉不到代码的简洁之道,就会感到不是太人性化。同时,在构建由 Vue 管理所有模板的单页面应用程序时,v- 前缀也变得没那么重大了。因此,Vue 为 v-bind 和 v-on 这两个最常用的指令,提供了特定简写,具体如下
a.v-bind缩写
1. <!-- 完整语法 -->  
2. <a v-bind:href="url">...</a>  
3.   
4. <!-- 缩写 -->  
5. <a :href="url">...</a>  
6.   
7. <!-- 动态参数的缩写 (2.6.0+) -->  
8. <a :[key]="url"> ... </a>  b.v-on缩写
1. <!-- 完整语法 -->  
2. <a v-on:click="doSomething">...</a>  
3.   
4. <!-- 缩写 -->  
5. <a @click="doSomething">...</a>  
6.   
7. <!-- 动态参数的缩写 (2.6.0+) -->  
8. <a @[event]="doSomething"> ... </a>  它们看起来可能与普通的 HTML 略有不同,但:与@对于attribute名来说都是合法字符,在所有支持 Vue 的浏览器都能被正确地解析。
至此我们《VUE基础教程一》就讲完了,下篇内容主要讲解VUE的计算属性与监听器等相关知识,敬请期待。最后如果喜爱本篇文章不要忘了点赞、关注与转发哦!
-END-
@IT管理局专注计算机领域技术、大学生活、学习方法、求职招聘、职业规划、职场感悟等类型的原创内容。期待与你相遇,和你一同成长。
文章推荐:
程序员也需了解的主流云计算网络架构
程序员都必掌握的前端教程之JavaScript基础教程(下)