Vue({
el: '#app',
router,
components: { App },
template: ''
})
应用的创建,通过构造函数Vue就可以创建一个Vue的根实例,并启动Vue应用。
在Vue之后的小括号中嵌套的大括号内,可以看到有多个参数。
其中el,用于指定一个页面中已经存在的DOM元素,用来挂在Vue实例,他可以是HTML元素,也可以是CSS的选择器。
挂载成功后可以通过$el来进行访问。
创建的过程了解后,就是对生命周期的几个环节的状态把握:
2.两个常用的事件:
created:在实例创建后,在这里一般对需要初始化的数据进行处理,HTML元素还没有挂载
mounted:HTML元素挂载到Vue实例后,在这里使用。这儿可能会用到一部分created中处理完成的数据结果。例如,对url中参数的参数值的提取、对一些默认的状态值的设定等等
在应用过程中要清晰的认识到,什么情况下用created,什么情况下用mounted。
和Vue2中都使用了Virtual Dom技术,Virtual Dom并不是真正意义上的DOM,而是一个轻量级的javascript对象,在状态发生变化时,Virtual Dom会进行Diff运算,来更新只需要被替换的DOM,而不是全部重绘
constructor是一种用于创建和初始化class创建对象的特殊方法,在一个构造方法中可以使用super关键字来调用一个父类的构造方法。
如果没有显示指定构造方法,则会添加默认的constructor方法。如果不指定一个构造函数方法,则使用一个默认的构造函数。
5.在js中派生类调用父类的方法的时候,必须先调用super才能使用this
6.es6中的对象构建赋值
7.在nodejs中,提供了exports和require两个对象,其中exports是模块公开的接口
require用于从外部获取一个模块的接口,即所获取模块exports对象
:
对象由Module系统创建。有时候这是不可接受的,许多人希望他们的模块成为某个类的实例。为此,需要将期望导出的对象赋值给。注意,将期望的对象赋值给exports会简单地重新绑定本地的exports变量,这可能不是所期望的。
对的赋值必须是立即完成,不能在任何回调中完成。
exports变量是在模块的文件级作用域内可用的,且在模块执行之前赋值给,它允许使用快捷方式,因此=...可以更简洁地写成=...。但是,就像任何变量一样,如果为exports赋予了新值,则它将不再绑定到
模块究竟是个什么东西
()
返回文档中匹配指定css选择器的所有元素
()
从使用上可以看出来defineProperty后带有一个括号,所以这里的defineProperty是一个方法。它是一个直接在object上定义新的属性的静态方法,或者修改已经存在在对象上的属性,修改完后返回这个对象。【 MDN上有针对此的具体说明: /en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty】
11.es6中的对象继承
(图2)
function _defineProperties(target, props) {
for (var i = 0; i < ; i++) {
var descriptor = props[i];
//属性如果没有设置可枚举,则设置该属性为不可枚举,这里和es5不同,注意!
= || false;
//设置该属性为可配置
= true;
//如果有值则设置为可改写
if ("value" in descriptor) = true;
//使用es5的defineProperty函数来添加属性
(target, , descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
//添加原型属性到原型上
if (protoProps) _defineProperties(, protoProps);
//添加静态方法到类上
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
12.自定义指令Vue-directive
指令函数提供了几个可选的钩子函数:bind、inserted、update、componentUpdated、unbind
在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM
安装插件。如果插件是一个对象,必须提供install方法。如果插件是一个函数,它会被作为install方法