学习笔记: 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
还不可用。(须要初始化处理一些数据时会比较有用)mounted
:el
挂载到实例上后调用,第一个业务逻辑会在这里开始。beforeDestroy
:实例销毁以前调用。主要解绑一些使用addEventListener
监听的事件等。这些钩子与el
和data
相似,也是做为选项写入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表达式进行简单的运算、三元运算等。Math
和Date
。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元素上的属性,好比id
、class
等。
另外一个很是重要的指令就是v-on
,用来绑定事件监听器。
在普通元素上,v-on
能够监听原生的DOM事件,除了click
外还有dbclick
、keyup
、mousemove
等。表达式能够是一个方法名,这些方法都写在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-bind
和v-on
指令都提供了语法糖,也能够说是缩写,好比v-bind
缩写成:
,多用于a
、img
标签;v-on
缩写成@
,所用于input
、button
标签。