程序员都必掌握的前端教程之VUE基础教程(一)

原创IT管理局2021-01-06 09:30:00

本篇文章成哥继续带大家来学习前端教程之VUE,它是一个前端框架具有高效、简单及易用等特点。下面我们就一起来学习内容吧!

01 VUE简介

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。

与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。

Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

该框架的作者是一位中国人叫尤雨溪,毕业于上海复旦附中,在美国完成大学学业,本科毕业于上 Colgate University,后在 Parsons 设计学院获得 Design & Technology 艺术硕士学位,任职于纽约 Google Creative Lab。

目前作者以技术顾问的身份加入了阿里巴巴的 Weex 团队来做 Vue 和 Weex 的 JavaScript runtime 整合,目标是让大家能用 Vue 的语法跨三端。

02 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>  

03 VUE使用

(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 的浏览器都能被正确地解析。

04 总结

至此我们《VUE基础教程一》就讲完了,下篇内容主要讲解VUE的计算属性与监听器等相关知识,敬请期待。最后如果喜欢本篇文章不要忘了点赞、关注与转发哦!

-END-

(0)

相关推荐

  • Vue最新技术内容

    Vue.js是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.学习Vue.js前,尽 ...

  • vue之父子组件间通信实例讲解(props、$ref、$emit)

    组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.那么组件间如何通信,也就成为了vue中重点知识了.这篇文章将会通过props.$ref ...

  • 手把手带你入门前端工程化——超详细教程

    本文将分成以下 7 个小节: 技术选型 统一规范 测试 部署 监控 性能优化 重构 部分小节提供了非常详细的实战教程,让大家动手实践. 另外我还写了一个前端工程化 demo 放在github上.这个 ...

  • 02-第一个Vue程序

    目录 1.  准备工作 2.  编写代码 2.1 引入Vue 2.2  添加一个div标签 2.3 创建Vue实例 2.4 保存(Ctrl s)并查看结果 2.5 总结 2.6 完整代码 1.  准备 ...

  • Vue基础(五):常用特性(一)

    Vue基础(五):常用特性(一)

  • Vue基础(一):Vue的概述与基本使用

    Vue基础(一):Vue的概述与基本使用

  • Vue.js--Vue.js搬砖基础

    Vue做为当今三大流行框架,如果不懂点,似乎没办法跟别人说做过前端,好吧,三个月的时间内断断续续的把基础内容熟悉并基本上敲了一遍.简单的做下笔记,方便记忆和查询: MVVM模式是由经典的软件架构MVC ...

  • 每个程序员都必须知道的8种数据结构

    快速介绍8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作.数据结构在计算机科学和软件工程领域具有广泛而多样的用途. 几乎所有已开发的程序或软件系统 ...

  • 那些 40 岁的程序员都去哪了?

    前些时候北京市政府做了一个关于 996 的调研,第一时间我参与了调研,同时发到所有读者群,让大家一起发声. 不少朋友开始热烈的讨论起来,有人很乐观认为这是改变的开始,也有人觉得这就是走一个形式.不管怎 ...

  • 神级程序员都用什么工具?2020 年度开发工具 Top 100

    本文经授权转自公众号CSDN(ID:CSDNnews) 作者 | StackShare Team 译者 | 李磊 在过去的 2020 年,诞生了哪些新的开发工具?最优秀的开发工具和开发服务是什么?神级 ...

  • 为什么说 80% 的程序员都缺乏基本功?

    昨天我在 InfoQ 上看文章的时候,看到了 InfoQ 对熊节老师的专访.感觉这篇文章说的非常有意思,大致说: 有人说:"初级程序员才比招式,高级程序员只看内功." 什么是基本功 ...

  • 每个程序员都应该尝试的项目

    一年前,我发表了"每个程序员都应该尝试的项目"一文.文中列出了每个程序员都应该去尝试的项目,包括一个文本编辑器.太空入侵者游戏.一个 BASIC 编译器.一个小型的操作系统.一个电 ...

  • 优秀的程序员,必须知道的

    来源:Python 技术「ID: pythonall」 昨天看到一则新闻,一对夫妻起诉一家婚庆公司,缘由是这家婚庆公司盗用了他们的婚庆典礼创意,最终取得了胜诉 这不禁让我想到,作为程序员,代码就是我们 ...

  • 别不信,98%的程序员都是这样的

    故事 上周有事回北京一趟,恰好小老弟没上班,便约起来聚聚.酒过三巡时,他突然露出失落的表情,我忙问为什么,才知道他最近正在找工作,面试的过程让他身心俱乏. 18年毕业之后,他就进了一家小公司从事jav ...

  • 程序员都看不起的国产的编程语言之易语言

    易语言是一门国产的编程语言,它的关键字都是中文的,这是一款可以让中国人轻松入门学习的编程语言,只要认识汉字,会使用电脑,都可以轻松学会这门语言. 然而Java程序员多多少少都会有些瞧不起易语言,在他们 ...

  • 35岁以后的程序员都去做什么了?

    大厂在很多求职者心中都自带光环,应届生更会以进入大厂为荣,大厂就是YYDS! 那这个YYDS是怎么来的呢?我们可以来看一组数据-- 苹果公司员工平均年龄:31岁: Google员工平均年龄:30岁: ...