何为构造器
对于Vue.js 项目来说,每个应用的起步都需要使用Vue.js的构造器函数创建一个根实例,如下
// 逻辑部分代码,建立Vue实例
var vm = new Vue({
// 选项
})
在实例化Vue.js 的时候,需要传入一个选项对象,它包含数据模板,挂载元素,方法和生命周期钩子等选项,全部的选项可以在api中查看。
对于已经创建的相关的构造器,可以扩展为其他构造器,相当于对某一构造器的继承,从而达到可复用组件构造器的目的,代码如下
var MyComponent = Vue.extend({
})
// 所有的 MyComponent 实例都将会以预定义的扩展选项被创建
var MyComponentInstance = new MyComponent()
实例属性和方法
每个Vue实例在被创建的时候,都需要经过一系列的初始化的过程,而在初始化的过程中,加入一些data属性,即表示此实例的一些响应事件或者数据属性等,例如,需要设置数据监听,编译模板,和挂载实例到DOM,在数据变化时更新DOM,在这个过程中也会执行一些叫做生命周期的函数,给予用户在一些特定场景下的执行其他代码的机会。
data对象中既定的值发生改变,视图会自动产生响应并及时匹配值,产生响应的效果,例如可以初始化如下的代码。
// 我们的数据对象
var data = {a:1}
// 该对象被加入到一个Vue.js 的实例中
var vm = new Vue({
data: data
})
// 他们引用相同的对象
vm.a === data.a // true
// 设置属性也会影响到原始数据
vm.a = 2
data.a // => 2
// 反之亦然
data.a = 3
vm.a // => 3
当这些数据改变的时候,视图会重新渲染。
生命周期
当出现数据监听,编译模板,挂载实例到DOM和在数据变化时更新DOM等操作,会在此时允许插入开发者添加到特定的代码,比如以下的代码,created钩子事件可以用来在一个实例创建之后执行代码段
// 逻辑部分代码,建立Vue实例
new Vue({
data: {
a:1
}
})
// 相关方法定义
created: function() {
// this 指向vm实例
console.log("a is:" + this.a)
}
// => "a is: 1"
为什么叫做钩子,主要是针对于某个实例事件发生后需要响应已经预设好的代码,即某一个钩子,勾住了一个实例的状态和事件。
也有一些钩子,在实例生命周期的不同场景下调用,如mounted,updated和destroyed,钩子的this指向调用它的Vue.js 实例。
Vue.js 路由
动态路由
编写src/router/index.js 设定一条新的路由
// 引入相关的代码包
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWOrld'
import User from '@/components/User'
// 使用引入的包
Vue.use(Router)
export default new Router({
// 定义路由
routers: [
{
path: '/'
name: "helloWorld"
component: HelloWorld
}
]
})
上述配置,/ 路由会映射到相同的路由上,也就是说,会访问到HelloWorld页面