VueJS简明教程(一)之基本使用方法

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

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

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

好了,开始吧

准备

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

  • 你会用html+css+javascript 写一些网页
  • 你知道什么是DOM和BOM(Browser Object Model)
  • 你知道Vue.js是一个框架而不是一个新语言
  • 你会用百度或者Google其中之一去查找答案

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

  • 新建vue对象
  • 数据绑定
  • 事件绑定
  • 表单控件绑定

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

新建Vue对象

  1. 引用vue.js
    在桌面建立一个 Vue.html文件, 然后引入 vue.js的CDN地址 https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js
 <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
  1. 新建Vue实例
    在Vue.html中插入一个id为firstVue<div>
<div id="firstVue"></div>

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

<script type="text/javascript">
    var myVue = new Vue({
        el:"#firstVue"
    })
</script>

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

<!DOCTYPE html>
<html>
<head>
    <title>Vue Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
    <div id="firstVue">
    </div>
</body>
<script type="text/javascript">
    var myVue = new Vue({
        el: "#firstVue"
    })
</script>
</html>

解释一下代码

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

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

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

数据绑定

VUE这个框架的数据流向是单向的,不懂没关系,记住就好了
所以数据绑定后的数据流向是从

vue实例——>DOM文档

我们给上一步的<div>标签添加下面一句话

{{ my_data }}

变成这样

<div id="firstVue">
    {{my_data}}
</div>

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

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

data:{
    my_data: "test"
}

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

<!DOCTYPE html>
<html>
<head>
    <title>Vue Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
    <div id="firstVue">
    {{my_data}}
    </div>
</body>
<script type="text/javascript">
    var myVue = new Vue({
        el:"#firstVue",
        data:{
            my_data: "test"
        }
    })
</script>
</html>

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

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

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

<div id="firstVue" v-bind:hidden="my_hidden">{{my_data}}</div>

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

var myVue = new Vue({
    el:‘#firstVue‘,
    data:{
        my_data: "test",
        my_hidden: "hidden"
    }
})

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

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

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

<div id="firstVue" :hidden="my_hidden">{{my_data}}</div>

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

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

事件绑定

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

<button v-on:click="clickButton()">Click Me</button>

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

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

var myVue = new Vue({
    el:‘#firstVue‘,
    data:{
        my_data: "test",
        my_hidden: "hidden"
    },
    methods:{
        clickButton:function(){
            this.my_data = "Wow! I‘m changed!"
        }
    }
})

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

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

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

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

<!DOCTYPE html>
<html>
<head>
    <title>Vue Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
    <div id="firstVue">
        <button v-on:click="clickButton">Click Me</button>
        <p>{{my_data}}</p>
    </div>
</body>
<script type="text/javascript">
var myVue = new Vue({
    el:‘#firstVue‘,
    data:{
        my_data: "test",
        my_hidden: "hidden"
    },
    methods:{
        clickButton:function(){
            this.my_data = "Wow! I‘m changed!"
        }
    }
})
</script>
</html>

好了,运行一下,点击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数据的反向传输

好,直接写一个例子吧

<!DOCTYPE html>
<html>
<head>
    <title>Vue Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
    <div id="firstVue">
        <input type="text" v-model="my_data" />
        <button v-on:click="clickButton">Click Me</button>
        <p>{{my_data}}</p>
    </div>
</body>
<script type="text/javascript">
    var myVue = new Vue({
        el:‘#firstVue‘,
        data:{
            my_data: "test",
            my_hidden: "hidden"
        },
        methods:{
            clickButton:function(){
                this.my_data = "Wow! I‘m changed!"
            }
        }
    })
</script>
</html>

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

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

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

DOM1(input标签)——>VUE——>DOM2(p标签)

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

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

总结

看看我们学到了什么

  • new Vue({})新建vue实例
  • 使用 v-bind:{{}}双大括号语法在html中绑定变量
  • 使用 v-on:@ 语法绑定函数到标签的事件
  • 使用 v-model: 语法使用户的页面输入反向传递回vue实例变量

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

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

<!DOCTYPE html>
<html>
<head>
    <title>Vue Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
    <div id="firstVue">
        <input type="number" v-model.number="my_step" />
        <button v-on:click="clickButton">Add</button>
        <p>{{my_total}}</p>
    </div>
</body>
<script type="text/javascript">
    var myVue = new Vue({
        el:‘#firstVue‘,
        data:{
            my_step: 1,
            my_total: 0
        },
        methods:{
            clickButton:function(){
                this.my_total = this.my_total + this.my_step
            }
        }
    })
</script>
</html>

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



本文算是vue的基础内容,下一篇将会是vue的核心内容,组件。

前端的东西多且杂,东拼西凑总也不是进步的办法,我认为最好就是将主干的一支学明白用在实际项目中,其他的一些枝枝叉叉遇见了现看文档也是来得及的,比如我每次FLEX布局都要现查语法,甚至写前端页面的时候总是开着VUE的官方文档随时查看 -囧-

我会写出一个用Vue.js构建SPA(Single Page Application)的系列文章, 希望可以让初学、转学VUE的人少走弯路

最后的最后,转载请注明出处,谢谢

转自作者:景行_白色极限
链接:https://www.jianshu.com/p/5d0d913d2453
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/vagrant2814154894/p/12320859.html

时间: 2024-10-14 03:20:46

VueJS简明教程(一)之基本使用方法的相关文章

appium简明教程(5)——appium client方法一览

appium client扩展了原生的webdriver client方法 下面以java代码为例,简单过一下appium client提供的适合移动端使用的新方法 resetApp() getAppString() sendKeyEvent() currentActivity() pullFile() pushFile() pullFolder() hideKeyboard() runAppInBackground() performTouchAction() performMultiTouc

Lisp简明教程

此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程>ODT格式下载 具体的内容我已经编辑好了,想下载的朋友可以用上面的链接.本人水平有限,如有疏漏还望之处(要是有谁帮我排排版就好了)还望指出!资料虽然是我整理的,但都是网友的智慧,如果有人需要转载,请至少保留其中的“鸣谢”页(如果能有我就更好了:-)). Lisp简明教程 整理人:Chaobs 邮箱:[

Linux防火墙iptables简明教程

前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔除了许多冗余的内容,提取出尽量多的精华部分成文,和大家共同学习,本文涉及的内容包括如下 Linux防火墙iptables简明教程 1.安装iptables 2.查看现有的iptables规则 3.删除某iptables规则 4.清除现有iptables规则 5.创建规则 6.设置开机启动 7.保存i

JSP 简明教程(二):JSP基本语法

基本语法 JSP只是在html的基础上嵌入一些动态的元素.下面是HelloWorld代码: <html> <% out.println("hello world"); %> </html> 以上代码中的<% %>就是动态元素.JSP中所有的特殊语法如下: <% %>:用于表示一段Java代码.这段代码在编译之后会放在_jspService()方法中. <%! %>:多了一个叹号,也用于表示一段Java代码,但是这段

第一课 C语言简明教程

1序言: 1与Java.C#等高级语言相比,C语言却非常简单,学习简单,使用也简单,但是也非常重要,到目前为止基本上操作系统的内核代码超过百分之九十使用C语言完成,因此学好C语言是学好计算机这门课程的基础,特别是进入系统编程尤为明显. 今天是本人复习C语言课程的第一课,主要重新记录一下C语言的基础知识,这节课涉及到C语言的结构.变量以及类型.输入输出.条件判断以及循环知识. 2知识点: 2.1 C语言的结构 2.1.1 通常情况下C语言程序是由: 1.相关的代码注释,使用/* ··· */可注释

Vbs 脚本编程简明教程之一

-为什么要使用 Vbs ? 在 Windows 中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动 计算机第一件事情就是打开 WORD ,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某 些数据进行整理,把各式各样的数据按照某种规则排列起来--.这些事情重复.琐碎,使人容易疲劳. 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往

Smarty教程1.引擎定义2.主要优点3.简明教程4.使用判断5.循环数组6.常见问题8.解释程序

Smarty是一个php模板引擎.更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法.可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人.例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现.在Smarty的程序里,这些被忽略了.模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等).有一天程序员想要改变文章检索的方式(

Java泛型简明教程

Java泛型简明教程 博客分类: Java综合 JavaApple数据结构CC++ Java泛型简明教程 本文是从 Java Generics Quick Tutorial 这篇文章翻译而来. 泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它.关于Java泛型的教程,免费的,不免费的,有很多.我遇到的最好的教材有: The Java Tutorial Java Generics and Collections ,

JSP简明教程(五):高级特性

JSP过滤器 过滤器的作用是给web请求增加额外的逻辑,每个页面可以被多个过滤器进行处理.过滤器需要在web.xml文件中进行定义,语法如下.过滤器的执行顺序与filter-mapping的定义顺序相同. <filter> <filter-name>FilterName</filter-name> <filter-class>TestFilter</filter-name> <init-param> <param-name>