Vue.js-开篇

学习笔记: Vue.js基础知识

基础知识

构造函数Vue的根实例new Vue({}),并启动Vue应用。html

var app = Vue({
    el: "#app",
    data: {},
    methods: {}
});

变量app表明这个Vue实例。git

其中,必不可少的选项是el,用于指定一个页面中已存在的DOM元素来挂载Vue实例,能够是HTMLElement,也能够是CSS选择器。github

var app = Vue({
    el: document.getElementById('app')
});

挂载成功后,能够经过app.$el访问该元素。Vue提供了不少经常使用的实例属性和方法,都以$开头。app

data选项用于声明应用内须要双向绑定的数据。建议全部会用到的数据都预先在data内声明,提高业务的可维护性。frontend

Vue实例new Vue({}),这里可使用app代理了data对象里的全部属性,能够这样访问data中的数据:函数

console.log(app.name);

除了显式地声明数据外,还能够指向一个已有的变量,而且它们之间默认创建了双向绑定,当修改其中任意一个时,另外一个也会跟着变化。post

var myData = {
    a: 1
};

var app = Vue({
    el: "#app",
    data: myData
});

app.a = 2;
console.log(myData.a);//2
myData.a = 3;
console.log(app.a);//3

生命周期

Vue的生命周期钩子:学习

  • created:实例建立完成后调用,此阶段完成了数据的观测等,但未挂载,$el还不可用。(须要初始化处理一些数据时会比较有用)
  • mountedel挂载到实例上后调用,第一个业务逻辑会在这里开始。
  • beforeDestroy:实例销毁以前调用。主要解绑一些使用addEventListener监听的事件等。

这些钩子与eldata相似,也是做为选项写入Vue实例中,而且钩子的this指向的是调用它的Vue实例。this

插值与表达式

使用(Mustache语法){{}}是最基本的文本插值方法,它会自动将咱们双向绑定的数据实时显示出来。spa

v-html直接输出HTML,而不是将数据解析后的纯文本。

<div id="app">
<span v-html="link"></span>
</div>

new Vue({
    el: "#app",
    data: {
        link: '<a href="#">this is a link.</a>'
    }
});

link的内容将会被渲染成一个a标签,而不是纯文本。

若是将用户产生的内容使用v-html输出后,有可能致使XSS攻击,因此要在服务端对用户提交的内容进行处理,通常可将<>转义。

若是想要显示{{}}标签,不进行替换,使用v-pre便可跳过这个元素和它的子元素的编译过程。

  • {{}}中除了简单的绑定属性值外,还可使用JavaScript表达式进行简单的运算、三元运算等。
  • Vue只支持单个表达式,不支持语句和流程控制。
  • 在表达式中不能使用用户自定义的全局变量,只能使用Vue白名单内的全局变量,例如MathDate

过滤器

Vue.js支持在{{}}插值的尾部添加一个管道符(|)对数据进行过滤,常常用户格式化文本,好比字母所有大写货币千位使用逗号分隔等。过滤的规则是自定义的,经过给Vue实例添加选项filter来设置。

<div id="app">
    {{date | formatDate}}
</div>

过滤器也能够串联,并且能够接收参数:

<!--串联-->
{{message | filterA | filterB}}

<!--接收参数-->
{{message | filterA('arg1','arg2')}}

过滤器应当用于处理简单的文本转换,若是要实现更为复杂的数据转换,应该使用计算属性。

指令事件

指令(Directives)是Vue.js模板中最经常使用的一项功能,它带有前缀v-。指令的主要职责就是当其表达式的值改变时,相应地将某些行为应用到DOM上。

v-bind的基本用途是动态更新HTML元素上的属性,好比idclass等。

另外一个很是重要的指令就是v-on,用来绑定事件监听器。

在普通元素上,v-on能够监听原生的DOM事件,除了click外还有dbclickkeyupmousemove等。表达式能够是一个方法名,这些方法都写在Vue市里的methods属性内,而且是函数的形式,这些函数的this指向的是当前Vue实例自己,所以能够直接使用this.xxx的形式访问或修改数据。

Vue.js将methods里的方法进行代理,能够像访问Vue数据同样调用方法:

<div id="app">
    <p v-if="show">这是一段为本</p>
    <button @click="handleClose">点击隐藏</button>
</div>

new Vue({
    el: "#app",
    data: {
        show: true
    },
    methods: {
        handleClose: function () {
            this.close()
        },
        close: function () {
            this.show = false
        }
    }
});

handleClose方法中直接经过this.close()调用了close()函数。

var app = new Vue({
    el: "#app",
    data: {
        show: true
    },
    methods: {
        init: function (text) {
            console.log(text);
        },
    },
    mounted: function () {
        this.init('在初始化时调用');
    }
});
app.init('经过外部调用');

语法糖

语法糖是指在不影响功能的状况下,添加某种方法实现一样的效果,从而方便程序开发。

Vue.js的v-bindv-on指令都提供了语法糖,也能够说是缩写,好比v-bind缩写成:,多用于aimg标签;v-on缩写成@,所用于inputbutton标签。

相关文章
相关标签/搜索