vue.js使用教程(vue.js.)

vue.js使用教程(vue.js.)如果说是 JQuery 是手工作坊 那么 Vue js 就像是一座工厂 虽然 Vue js 做的任何事情 JQuery 都可以做 但无论是代码量还是流程规范性都是前者较优 Vue js 的官方中文教程其实也是一个不错的教程 不过相比于一次性把所有概念掌握 我更倾向于先会用 之后再在实际应用中把未涉及到的知识点逐步补全 就像开车 不是非要知道发动机的工作原理才能上路的 甚至你可能一辈子也不用知道 好了

大家好,我是讯享网,很高兴认识大家。



如果说是JQuery是手工作坊,那么Vue.js就像是一座工厂,虽然Vue.js做的任何事情JQuery都可以做,但无论是代码量还是流程规范性都是前者较优。

Vue.js的官方中文教程其实也是一个不错的教程,不过相比于一次性把所有概念掌握,我更倾向于先会用,之后再在实际应用中把未涉及到的知识点逐步补全。

就像开车,不是非要知道发动机的工作原理才能上路的,甚至你可能一辈子也不用知道。

好了,开始吧

准备

首先,以下几点希望你已经知道或者做到了:

 

你会用html+css+javascript 写一些网页

你知道什么是DOM和BOM(Browser Object Model)

你知道Vue.js是一个框架而不是一个新语言

你会用百度或者Google其中之一去查找答案

接着,我会围绕以下几个Vue.js的基本(核心)使用方法逐个做测试和使用说明:

 

新建vue对象

数据绑定

事件绑定

表单控件绑定

最后,根据上面的知识点结合起来写出我们的第一个vuejs前端页面

 

新建Vue对象

引用vue.js 

在桌面建立一个 Vue.html文件, 然后引入 vue.js的CDN地址 https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js

 <script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”></script>

新建Vue实例 

在Vue.html中插入一个id为firstVue的<div>

在Vue.html中插入下面js代码:

<script type=>

</span><span style="color: rgba(79, 79, 79, 1); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-variant-ligatures: common-ligatures; white-space: pre; background-color: rgba(246, 248, 250, 1)"> myVue = </span><span style="color: rgba(79, 79, 79, 1); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-variant-ligatures: common-ligatures; white-space: pre; background-color: rgba(246, 248, 250, 1)"> Vue({ el:</span><span style="color: rgba(79, 79, 79, 1); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-variant-ligatures: common-ligatures; white-space: pre; background-color: rgba(246, 248, 250, 1)"> }) 

讯享网

&lt;

然后整个代码看起来是这样的:

&nbsp;

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;

&nbsp; &nbsp; var myVue = new Vue({

&nbsp; &nbsp; &nbsp; &nbsp; el: “#firstVue”

&nbsp; &nbsp; })

&lt;/script&gt;

&lt;/html&gt;

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;

&nbsp; &nbsp; var myVue = new Vue({

&nbsp; &nbsp; &nbsp; &nbsp; el: “#firstVue”

&nbsp; &nbsp; })

&lt;/script&gt;

&lt;/html&gt;

解释一下代码

&nbsp;

js变量 myVue 就是Vue创建的一个对象,可以理解成把&lt;div id=“firstVue&gt;&lt;/div&gt;和这个标签里面包含的所有DOM都实例化成了一个JS对象, 这个对象就是myVue

&nbsp;

el是Vue的保留字,用来指定实例化的DOM的ID号, #firstVue这句话就是标签选择器,告诉Vue要实例化ID=“firstVue”的这个标签。

&nbsp;

至此,Vue.js框架在html页面的引入工作完成,但是如果我们访问这个页面并不能看到任何效果,一篇空白

&nbsp;

数据绑定

VUE这个框架的数据流向是单向的,不懂没关系,记住就好了&nbsp;

所以数据绑定后的数据流向是从

&nbsp;

vue实例——&gt;DOM文档的

&nbsp;

我们给上一步的&lt;div&gt;标签添加下面一句话

&nbsp;

{{ _ }}

变成这样

&nbsp;

&lt;div id=“firstVue”&gt;

&nbsp; &nbsp; {{my_data}}

&lt;/div&gt;

讯享网{{my_data}} 

这个双大括号的语法叫做mustache 语法,大括号里面的是作为变量形式出现的。

&nbsp;

然后在创建 vue实例的代码中加入下面数据声明:

&nbsp;

data:{

&nbsp; &nbsp; my_data: “test”

}

data:{

my_data: </span><span style="color: rgba(79, 79, 79, 1); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-variant-ligatures: common-ligatures; white-space: pre; background-color: rgba(246, 248, 250, 1)"> 

}

整个代码看起来向下面这样:

&nbsp;

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; {{my_data}}

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;

&nbsp; &nbsp; var myVue = new Vue({

&nbsp; &nbsp; &nbsp; &nbsp; el:“#firstVue”,

&nbsp; &nbsp; &nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; })

&lt;/script&gt;

&lt;/html&gt;

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; {{my_data}}

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;


讯享网

&nbsp; &nbsp; var myVue = new Vue({

&nbsp; &nbsp; &nbsp; &nbsp; el:“#firstVue”,

&nbsp; &nbsp; &nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; })

&lt;/script&gt;

&lt;/html&gt;

data参数用来绑定VUE实例的数据变量,每个不同变量之间用逗号分隔,上面我们绑定了自定义变量my_data,并赋初值’test’

完成数据绑定工作,&lt;div&gt;标签里的{{myData}}数据会随着myVue实例里的myData数据的变动而变动,浏览器查看当前页面,会出现’test’字符串,说明数据绑定成功

这是在HTML标签内部的数据绑定,那么如果想绑定某个HTML标签的属性值,就要用到v-bind:属性了,比如我想绑定一个标签是否可见的属性(hidden),那么就应该这么写:

&lt;div id=“firstVue” v-bind:hidden=“my_hidden”&gt;{{my_data}}&lt;/div&gt;

1

v-bind:后面写想要绑定的属性,my_hidden也不需要用两个大括号括起来了,直接写就可以了,然后在VUE实例中声明这个绑定数据

&nbsp;

var myVue = new Vue({

&nbsp; &nbsp; el:‘#firstVue’,

&nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,

&nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”

&nbsp; &nbsp; }

})

myVue = Vue({

讯享网el:</span><span style="color: rgba(79, 79, 79, 1); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-variant-ligatures: common-ligatures; white-space: pre; background-color: rgba(246, 248, 250, 1)">, data:{ my_data: </span><span style="color: rgba(79, 79, 79, 1); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-variant-ligatures: common-ligatures; white-space: pre; background-color: rgba(246, 248, 250, 1)">, my_hidden: </span><span style="color: rgba(79, 79, 79, 1); font-family: &quot;Source Code Pro&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Ubuntu Mono&quot;, &quot;Anonymous Pro&quot;, &quot;Droid Sans Mono&quot;, Menlo, Monaco, Consolas, Inconsolata, Courier, monospace, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-variant-ligatures: common-ligatures; white-space: pre; background-color: rgba(246, 248, 250, 1)"> } 

})

这时候再浏览这个网页,又变成了空白,但是F12查看源代码,发现其实是div标签的hidden属性被激活了

&nbsp;

当然,v-bind:不仅可以绑定hidden属性,disabled属性,style属性, color属性,凡是标签有的属性,都可以通过这个方法进行绑定

v-bind由于经常会用到,所以也可以缩写成冒号:,比如上面的&lt;div&gt;标签就完全可以这样写

&nbsp;

&lt;div id=“firstVue” :hidden=“my_hidden”&gt;{{my_data}}&lt;/div&gt;

这是和v-bind:hidden=“my_hidden”完全等价的一种写法

至此,Vue.js两种绑定数据的方法都写完并进行了测试

事件绑定

v-bind:是用来绑定数据的,v-on:则是用来绑定事件的,比如我要绑定一个&lt;button&gt;的 click事件就这么写

&lt;button v-on:click=“clickButton()”&gt;Click Me&lt;/button&gt;

当然这里的click可以换成任意一个html事件,比如load , doubleclick , mouseon , mousedown这些,不过click肯定是我们最常用的

将click动作绑定到clickButton()函数之后就需要实现这个函数了,我们要在之前的vue实例中加入新字段methods

var myVue = new Vue({

&nbsp; &nbsp; el:‘#firstVue’,

&nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,

&nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”

&nbsp; &nbsp; },

&nbsp; &nbsp; methods:{

&nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_data = “Wow! I’m changed!”

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; }

})

var myVue = new Vue({

&nbsp; &nbsp; el:‘#firstVue’,

&nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,

&nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”

&nbsp; &nbsp; },

&nbsp; &nbsp; methods:{

&nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_data = “Wow! I’m changed!”

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; }

})

我们在methods关键字里面定义了clickButton方法,并在方法内改变了之前定义的my_data变量的值

这里涉及到如何在vue实例中引用data字段的变量,如上所示,需要加this后面直接写要引用的变量就可以了

如果不加this,系统会默认你想引用的是一个全局变量,可是这里我们需要引用的是这个vue实例里的局部变量

现在整体代码和之前有些变化,看起来是这样的:

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;button v-on:click=“clickButton”&gt;Click Me&lt;/button&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;{{my_data}}&lt;/p&gt;

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;

var myVue = new Vue({

&nbsp; &nbsp; el:‘#firstVue’,

&nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,

&nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”

&nbsp; &nbsp; },

&nbsp; &nbsp; methods:{

&nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_data = “Wow! I’m changed!”

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; }

})

&lt;/script&gt;

&lt;/html&gt;

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;button v-on:click=“clickButton”&gt;Click Me&lt;/button&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;{{my_data}}&lt;/p&gt;

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;

var myVue = new Vue({

&nbsp; &nbsp; el:‘#firstVue’,

&nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,

&nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”

&nbsp; &nbsp; },

&nbsp; &nbsp; methods:{

&nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_data = “Wow! I’m changed!”

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; }

})

&lt;/script&gt;

&lt;/html&gt;

好了,运行一下,点击Click Me的时候”test”就会变成”Wow! I’m changed!”,这是因为变量my_data的改变。

另外,v-on:语法同样有一个缩写@,比如v-on:click=“clickButton”就等价于@click=“clickButton”

表单控件绑定

之前有说Vue这个框架是单向数据传输的,就是从vue实例传送数据到DOM ,那么我们如何从DOM中实时获取用户输入的数据赋值给vue实例呢

这用到了Vue.js提供给用户的一个语法糖 v-model ,这个语法糖通过两步实现了数据的反向传递,也就是从DOM传送给vue实例数据。

下面说的原理看不懂可以跳过,不会影响后续阅读

v-model 通过两步实现了数据反向传递

第一步,绑定了DOM标签的input事件(比如叫tapInput())

第二步,当用户进行输入时候,触发tapInput()函数,tapInput()函数内部读取此DOM标签的Value值,赋值给vue实例

通过以上两步,v-model语法糖实现了vue数据的反向传输

好,直接写一个例子吧

&nbsp;

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=“text” v-model=“my_data” /&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;button v-on:click=“clickButton”&gt;Click Me&lt;/button&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;{{my_data}}&lt;/p&gt;

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;

&nbsp; &nbsp; var myVue = new Vue({

&nbsp; &nbsp; &nbsp; &nbsp; el:‘#firstVue’,

&nbsp; &nbsp; &nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”

&nbsp; &nbsp; &nbsp; &nbsp; },

&nbsp; &nbsp; &nbsp; &nbsp; methods:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_data = “Wow! I’m changed!”

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; })

&lt;/script&gt;

&lt;/html&gt;

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=“text” v-model=“my_data” /&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;button v-on:click=“clickButton”&gt;Click Me&lt;/button&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;{{my_data}}&lt;/p&gt;

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;

&nbsp; &nbsp; var myVue = new Vue({

&nbsp; &nbsp; &nbsp; &nbsp; el:‘#firstVue’,

&nbsp; &nbsp; &nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”

&nbsp; &nbsp; &nbsp; &nbsp; },

&nbsp; &nbsp; &nbsp; &nbsp; methods:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_data = “Wow! I’m changed!”

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; })

&lt;/script&gt;

&lt;/html&gt;

可以发现,我们增加了一个&lt;input&gt;标签,并且用v-model语法绑定了之前定义的变量my_data

这个时候,当我们在&lt;input&gt;输入框输入值的时候,v-model会实时将最新值(value)赋值给vue实例的my_data变量,而my_data变量又将实时展现在&lt;p&gt;标签中

这样我们看起来实现了这么一个数据流:

DOM1(input标签)——&gt;VUE——&gt;DOM2(p标签)

先从用户输入的DOM1获取输入保存在VUE实例,用从VUE实例里拿到数据输出到DOM2

运行这个页面,发现&lt;p&gt;标签中的内容会随着&lt;input&gt;标签实时的变化,说明我们利用v-model语法变相实现了数据的双向传递

总结

看看我们学到了什么&nbsp;

* 用 new Vue({})新建vue实例&nbsp;

* 使用 v-bind:和{{}}双大括号语法在html中绑定变量&nbsp;

* 使用 v-on: 和 @ 语法绑定函数到标签的事件&nbsp;

* 使用 v-model: 语法使用户的页面输入反向传递回vue实例变量

&nbsp;

现在简单完善一下上面的代码,做成一个计数器程序,用户可以在输入框输入任意数字,点击按钮进行总数累加

下面是对刚才代码进行了一些小的改动,相信你一定可以看明白的

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=“number” v-model.number=“my_step” /&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;button v-on:click=“clickButton”&gt;Add&lt;/button&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;{{my_total}}&lt;/p&gt;

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;

&nbsp; &nbsp; var myVue = new Vue({

&nbsp; &nbsp; &nbsp; &nbsp; el:‘#firstVue’,

&nbsp; &nbsp; &nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_step: 1,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_total: 0

&nbsp; &nbsp; &nbsp; &nbsp; },

&nbsp; &nbsp; &nbsp; &nbsp; methods:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_total = this.my_total + this.my_step

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; })

&lt;/script&gt;

&lt;/html&gt;

&lt;!DOCTYPE html&gt;

&lt;html&gt;

&lt;head&gt;

&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;

&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;

&nbsp; &nbsp; &lt;div id=“firstVue”&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=“number” v-model.number=“my_step” /&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;button v-on:click=“clickButton”&gt;Add&lt;/button&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;{{my_total}}&lt;/p&gt;

&nbsp; &nbsp; &lt;/div&gt;

&lt;/body&gt;

&lt;script type=“text/javascript”&gt;

&nbsp; &nbsp; var myVue = new Vue({

&nbsp; &nbsp; &nbsp; &nbsp; el:‘#firstVue’,

&nbsp; &nbsp; &nbsp; &nbsp; data:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_step: 1,

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_total: 0

&nbsp; &nbsp; &nbsp; &nbsp; },

&nbsp; &nbsp; &nbsp; &nbsp; methods:{

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_total = this.my_total + this.my_step

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; &nbsp; &nbsp; }

&nbsp; &nbsp; })

&lt;/script&gt;

&lt;/html&gt;

上面v-model.number后面的这个.number的意思是说在返回my_step值的时候自动转换成integer类型,因为默认是string类型,所以要多这么一句。

准备首先,以下几点希望你已经知道或者做到了:
你会用html+css+javascript 写一些网页你知道什么是DOM和BOM(Browser Object Model)你知道Vue.js是一个框架而不是一个新语言你会用百度或者Google其中之一去查找答案接着,我会围绕以下几个Vue.js的基本(核心)使用方法逐个做测试和使用说明:
新建vue对象数据绑定事件绑定表单控件绑定最后,根据上面的知识点结合起来写出我们的第一个vuejs前端页面
新建Vue对象引用vue.js&nbsp;在桌面建立一个 Vue.html文件, 然后引入 vue.js的CDN地址 https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js&nbsp;&lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;1新建Vue实例&nbsp;在Vue.html中插入一个id为firstVue的&lt;div&gt;&lt;div id=“firstVue”&gt;&lt;/div&gt;1在Vue.html中插入下面js代码:
&lt;script type=“text/javascript”&gt;&nbsp; &nbsp; var myVue = new Vue({&nbsp; &nbsp; &nbsp; &nbsp; el:“#firstVue”&nbsp; &nbsp; })&lt;/script&gt;12345然后整个代码看起来是这样的:
&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&nbsp; &nbsp; &lt;div id=“firstVue”&gt;&nbsp; &nbsp; &lt;/div&gt;&lt;/body&gt;&lt;script type=“text/javascript”&gt;&nbsp; &nbsp; var myVue = new Vue({&nbsp; &nbsp; &nbsp; &nbsp; el: “#firstVue”&nbsp; &nbsp; })&lt;/script&gt;&lt;/html&gt;12345678910111213141516解释一下代码
js变量 myVue 就是Vue创建的一个对象,可以理解成把&lt;div id=“firstVue&gt;&lt;/div&gt;和这个标签里面包含的所有DOM都实例化成了一个JS对象, 这个对象就是myVue
el是Vue的保留字,用来指定实例化的DOM的ID号, #firstVue这句话就是标签选择器,告诉Vue要实例化ID=“firstVue”的这个标签。
至此,Vue.js框架在html页面的引入工作完成,但是如果我们访问这个页面并不能看到任何效果,一篇空白
数据绑定VUE这个框架的数据流向是单向的,不懂没关系,记住就好了&nbsp;所以数据绑定后的数据流向是从
vue实例——&gt;DOM文档的
我们给上一步的&lt;div&gt;标签添加下面一句话
{{ my_data }}1变成这样
&lt;div id=“firstVue”&gt;&nbsp; &nbsp; {{my_data}}&lt;/div&gt;123这个双大括号的语法叫做mustache 语法,大括号里面的是作为变量形式出现的。
然后在创建 vue实例的代码中加入下面数据声明:
data:{&nbsp; &nbsp; my_data: “test”}123整个代码看起来向下面这样:
&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&nbsp; &nbsp; &lt;div id=“firstVue”&gt;&nbsp; &nbsp; {{my_data}}&nbsp; &nbsp; &lt;/div&gt;&lt;/body&gt;&lt;script type=“text/javascript”&gt;&nbsp; &nbsp; var myVue = new Vue({&nbsp; &nbsp; &nbsp; &nbsp; el:“#firstVue”,&nbsp; &nbsp; &nbsp; &nbsp; data:{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; })&lt;/script&gt;&lt;/html&gt;1234567891011121314151617181920data参数用来绑定VUE实例的数据变量,每个不同变量之间用逗号分隔,上面我们绑定了自定义变量my_data,并赋初值’test’
完成数据绑定工作,&lt;div&gt;标签里的{{myData}}数据会随着myVue实例里的myData数据的变动而变动,浏览器查看当前页面,会出现’test’字符串,说明数据绑定成功
这是在HTML标签内部的数据绑定,那么如果想绑定某个HTML标签的属性值,就要用到v-bind:属性了,比如我想绑定一个标签是否可见的属性(hidden),那么就应该这么写:
&lt;div id=“firstVue” v-bind:hidden=“my_hidden”&gt;{{my_data}}&lt;/div&gt;1v-bind:后面写想要绑定的属性,my_hidden也不需要用两个大括号括起来了,直接写就可以了,然后在VUE实例中声明这个绑定数据
var myVue = new Vue({&nbsp; &nbsp; el:‘#firstVue’,&nbsp; &nbsp; data:{&nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,&nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”&nbsp; &nbsp; }})这时候再浏览这个网页,又变成了空白,但是F12查看源代码,发现其实是div标签的hidden属性被激活了
当然,v-bind:不仅可以绑定hidden属性,disabled属性,style属性, color属性,凡是标签有的属性,都可以通过这个方法进行绑定
v-bind由于经常会用到,所以也可以缩写成冒号:,比如上面的&lt;div&gt;标签就完全可以这样写
&lt;div id=“firstVue” :hidden=“my_hidden”&gt;{{my_data}}&lt;/div&gt;1这是和v-bind:hidden=“my_hidden”完全等价的一种写法
至此,Vue.js两种绑定数据的方法都写完并进行了测试
事件绑定v-bind:是用来绑定数据的,v-on:则是用来绑定事件的,比如我要绑定一个&lt;button&gt;的 click事件就这么写
&lt;button v-on:click=“clickButton()”&gt;Click Me&lt;/button&gt;1当然这里的click可以换成任意一个html事件,比如load , doubleclick , mouseon , mousedown这些,不过click肯定是我们最常用的
将click动作绑定到clickButton()函数之后就需要实现这个函数了,我们要在之前的vue实例中加入新字段methods
var myVue = new Vue({&nbsp; &nbsp; el:‘#firstVue’,&nbsp; &nbsp; data:{&nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,&nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”&nbsp; &nbsp; },&nbsp; &nbsp; methods:{&nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_data = “Wow! I’m changed!”&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }})1112我们在methods关键字里面定义了clickButton方法,并在方法内改变了之前定义的my_data变量的值
这里涉及到如何在vue实例中引用data字段的变量,如上所示,需要加this后面直接写要引用的变量就可以了
如果不加this,系统会默认你想引用的是一个全局变量,可是这里我们需要引用的是这个vue实例里的局部变量
现在整体代码和之前有些变化,看起来是这样的:
&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&nbsp; &nbsp; &lt;div id=“firstVue”&gt;&nbsp; &nbsp; &nbsp; &nbsp; &lt;button v-on:click=“clickButton”&gt;Click Me&lt;/button&gt;&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;{{my_data}}&lt;/p&gt;&nbsp; &nbsp; &lt;/div&gt;&lt;/body&gt;&lt;script type=“text/javascript”&gt;var myVue = new Vue({&nbsp; &nbsp; el:‘#firstVue’,&nbsp; &nbsp; data:{&nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,&nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”&nbsp; &nbsp; },&nbsp; &nbsp; methods:{&nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_data = “Wow! I’m changed!”&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }})&lt;/script&gt;&lt;/html&gt;123456789101112131415161718192021222324252627好了,运行一下,点击Click Me的时候”test”就会变成”Wow! I’m changed!”,这是因为变量my_data的改变。
另外,v-on:语法同样有一个缩写@,比如v-on:click=“clickButton”就等价于@click=“clickButton”
表单控件绑定之前有说Vue这个框架是单向数据传输的,就是从vue实例传送数据到DOM ,那么我们如何从DOM中实时获取用户输入的数据赋值给vue实例呢
这用到了Vue.js提供给用户的一个语法糖 v-model ,这个语法糖通过两步实现了数据的反向传递,也就是从DOM传送给vue实例数据。
下面说的原理看不懂可以跳过,不会影响后续阅读
v-model 通过两步实现了数据反向传递
第一步,绑定了DOM标签的input事件(比如叫tapInput())
第二步,当用户进行输入时候,触发tapInput()函数,tapInput()函数内部读取此DOM标签的Value值,赋值给vue实例
通过以上两步,v-model语法糖实现了vue数据的反向传输
好,直接写一个例子吧
&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&nbsp; &nbsp; &lt;div id=“firstVue”&gt;&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=“text” v-model=“my_data” /&gt;&nbsp; &nbsp; &nbsp; &nbsp; &lt;button v-on:click=“clickButton”&gt;Click Me&lt;/button&gt;&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;{{my_data}}&lt;/p&gt;&nbsp; &nbsp; &lt;/div&gt;&lt;/body&gt;&lt;script type=“text/javascript”&gt;&nbsp; &nbsp; var myVue = new Vue({&nbsp; &nbsp; &nbsp; &nbsp; el:‘#firstVue’,&nbsp; &nbsp; &nbsp; &nbsp; data:{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_data: “test”,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_hidden: “hidden”&nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp; methods:{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_data = “Wow! I’m changed!”&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; })&lt;/script&gt;&lt;/html&gt;12345678910111213141516171819202122232425262728可以发现,我们增加了一个&lt;input&gt;标签,并且用v-model语法绑定了之前定义的变量my_data
这个时候,当我们在&lt;input&gt;输入框输入值的时候,v-model会实时将最新值(value)赋值给vue实例的my_data变量,而my_data变量又将实时展现在&lt;p&gt;标签中
这样我们看起来实现了这么一个数据流:
DOM1(input标签)——&gt;VUE——&gt;DOM2(p标签)
先从用户输入的DOM1获取输入保存在VUE实例,用从VUE实例里拿到数据输出到DOM2
运行这个页面,发现&lt;p&gt;标签中的内容会随着&lt;input&gt;标签实时的变化,说明我们利用v-model语法变相实现了数据的双向传递
总结看看我们学到了什么&nbsp;* 用 new Vue({})新建vue实例&nbsp;* 使用 v-bind:和{{}}双大括号语法在html中绑定变量&nbsp;* 使用 v-on: 和 @ 语法绑定函数到标签的事件&nbsp;* 使用 v-model: 语法使用户的页面输入反向传递回vue实例变量
现在简单完善一下上面的代码,做成一个计数器程序,用户可以在输入框输入任意数字,点击按钮进行总数累加
下面是对刚才代码进行了一些小的改动,相信你一定可以看明白的
&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&nbsp; &nbsp; &lt;title&gt;Vue Demo&lt;/title&gt;&nbsp; &nbsp; &lt;script src=”https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js”&gt;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&nbsp; &nbsp; &lt;div id=“firstVue”&gt;&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=“number” v-model.number=“my_step” /&gt;&nbsp; &nbsp; &nbsp; &nbsp; &lt;button v-on:click=“clickButton”&gt;Add&lt;/button&gt;&nbsp; &nbsp; &nbsp; &nbsp; &lt;p&gt;{{my_total}}&lt;/p&gt;&nbsp; &nbsp; &lt;/div&gt;&lt;/body&gt;&lt;script type=“text/javascript”&gt;&nbsp; &nbsp; var myVue = new Vue({&nbsp; &nbsp; &nbsp; &nbsp; el:‘#firstVue’,&nbsp; &nbsp; &nbsp; &nbsp; data:{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_step: 1,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_total: 0&nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp; methods:{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clickButton:function(){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.my_total = this.my_total + this.my_step&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; })&lt;/script&gt;&lt;/html&gt;12345678910111213141516171819202122232425262728上面v-model.number后面的这个.number的意思是说在返回my_step值的时候自动转换成integer类型,因为默认是string类型,所以要多这么一句。———————&nbsp;作者:秦洛1023&nbsp;来源:CSDN&nbsp;原文:https://blog.csdn.net/true1023/article/details/80674764&nbsp;版权声明:本文为博主原创文章,转载请附上博文链接!

小讯
上一篇 2025-05-16 18:38
下一篇 2025-05-01 10:10

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/194793.html