天天看点

Vue.js 快速入门

Vue.js 快速入门

引言

对于初学者来说,学习 Vue.js 最好是在一个简单的 HTML 页面中进行,因为这种情况下,只需要用 

script

 标签加载 Vue.js 的一个 js 文件,就能使用 Vue.js 了。

<script src="https://cdn.jsdelivr.net/npm/vue"></script>      

Vue.js 将 HTML 元素映射为 JS 对象,HTML 元素包含的数据(包括元素的内容和属性等)与这个 JS 对象的属性一一对应,修改对象的属性就是在修改 HTML 元素的内容或属性,并且修改其中一个,另一个会跟着改变。

上述 JS 对象称为 视图模型,对应的 HTML 称为 视图,这种同步变化的机制称为 双向绑定

绑定元素的文本内容

首先要给出一个标识符,放在 双大括号 中,充当元素的文本内容。

<div id="app">    <h1>{{ message }}</h1></div>      

上面 HTML 代码中,声明了一个名为 

message

 的数据,该数据是 

h1

 标签的文本内容。

然后使用构造函数 

Vue()

 来创建相应的视图模型(所有视图模型都是 

Vue()

 的实例)。

var app = new Vue({    el: '#app',    data: {        message: 'Hello, world!'    }});      

该函数只需要一个参数,对象类型,用来传递一些选项:

● 

el

:必选,CSS 选择器、DOM 节点或函数,用于声明视图模型对应的视图;

data

:可选,对象类型,用于指出视图有哪些数据,一个属性就对应一个数据,属性值就是初始值。

渲染后,视图中的

 {{ message }}

 就会被替换成属性 

message

 的值 

'Hello, world!'

<div id="app">          <h1>Hello, world!</h1></div>      

此后,通过实例 

app

 就可以读写视图上的数据。

实际上,

Vue()

 实例会代理 

data

 选项的属性,因此可以把 

data

 的属性当作 

Vue()

 实例的属性来读写。例如,在 JS 控制台中,执行下面命令,就可以修改数据 

message

 的值。

app.message = 'Hello, Vue.js!';      
Vue.js 快速入门

注意到修改完 

app.message

 后,页面上的文字也跟着改变,印证了视图模型和视图之间的绑定关系:一个发生变化,另一个会跟着改变。

此外,传递给构造函数 

Vue()

 的选项也会成为实例 

app

 的属性,但加了美元符号 

$

 前缀,这是为了和 

data

 选项的属性区分开,比如,访问 

app.$el

 就可以得到实例所对应的 

DOM

 元素。

app.$el
// <div id="app">…</div>      

绑定元素的 HTML 内容

如果绑定的是 HTML,而非文本,给元素添加 

v-html 

属性,值就是数据的名称。

<div id="app">
    <span v-html="link"></span>
</div>
<script type="text/javascript">
var app = new Vue({
    el: '#app',
    data: {
        link: '<a href="/login">Login</a>'
    }
});
</script>      

上例中 link 属性的值会被渲染成一个可以点击的 

a

 元素,成为 

span

 元素的 HTML 内容。

<div id="app">
    <span><a href="/login">Login</a></span>
</div>      

绑定属性的值

将某一属性的值与某一数据绑定,给属性添加 

v-bind:

 前缀,再让属性的值等于数据的名称。

<div id="app">
    <a v-bind:href="url">Login</a>
</div>
<script type="text/javascript">
var app = new Vue({
    el: '#app',
    data: {
        url: '/login'
    }
});
</script>      

上例将 

a

 标签的 

href

 属性的值与名为 

url

 的数据绑定。

渲染后,

a

href

 属性就会等于属性 

url

<a href="/login">Login</a>      

绑定事件

可以向 

Vue()

 函数传递 

methods

 选项,该选项用于存放函数类型的数据。这些方法在调用时,伪变量 

this

 指向所在的 

Vue

 实例。

var app = new Vue({
    el: '#app',
    data: {
        name: 'John'
    },
    methods: {
        say: function () {
            return 'Hello, ' + this.name;
        }
    }
});      

这些函数可以直接在视图中调用,结果就是函数的返回值。

<div id="app">
    <p>{{ say() }}</p>
</div>
<div id="app">
    <p>Hello, John</p>
</div>      

除了作为普通函数调用外,还可以作为事件的处理函数。绑定事件的方式是添加属性 

v-on:xxx

,其中 

xxx

 就是事件名称。

<div id="app">
    <button v-on:click="handleClick">点击</button>
</div>      

上例为 

button

 标签绑定了一个点击事件,指定事件处理函数的函数名为 handleClick。这时就需要在 methods 选项中添加 handleClick() 方法。

var app = new Vue({
    el: '#app',
    data: {
        message: 'Hello, world!'
    },
    methods: {
        handleClick: function () {
            alert(this.message);
        }
    }
});      

之后,只要触发 

button

 标签的点击事件,

methods

 选项中的 

handleClick()

 方法就会被调用。

Vue.js 允许在函数名后面跟上小括号,以传递参数。如果要将 JavaScript 原生事件对象作为参数传递,可以直接使用变量 

$event

<div id="app">
    <button v-on:click="handleClick(1, $event)">点击</button>
</div>
<script type="text/javascript">
var app = new Vue({
    el: '#app',
    methods: {
        handleClick: function (a, b, c) {
         console.log(a); // 1
         console.log(b); // MouseEvent {isTrusted: true, screenX: 37, screenY: 119, clientX: 37, clientY: 24, …}
         console.log(c); // undefined
        }
    }
});
</script>      

如果只写函数名,而函数的定义又带有形参,则默认会向第一个参数传入事件对象。

<div id="app">
    <button v-on:click="handleClick">点击</button>
</div>
<script type="text/javascript">
var app = new Vue({
    el: '#app',
    methods: {
        handleClick: function (a, b, c) {
          console.log(a); // MouseEvent {isTrusted: true, screenX: 37, screenY: 119, clientX: 37, clientY: 24, …}
          console.log(b); // undefined
          console.log(c); // undefined
        }
    }
});
</script>      

计算属性

computed

 选项也用于存放函数类型的数据,与 

methods

 的区别在于,调用 

computed

 中的函数时,只需给出函数名,不需要小括号。

<div id="app">
    <p>{{ reversedText }}</p>
</div>
<script type="text/javascript">
var app = new Vue({
    el: '#app',
    data: {
        text: '123456'
    },
    computed: {
        reversedText: function () {
            return this.text.split('').reverse().join(''); // "654321"
        }
    }
});
</script>      

上面代码,

reversedText

 看起来像是 

data

 中的一员,而不像函数调用,因此被称为 计算属性

以上就是Vue.js 快速入门的详细内容

扫描下方二维码

获取web前端、学习资料视频

继续阅读