Vue2.x源码分析(二):Vue实例挂载的实现

Vue源码分析 + 逐行注释 Github地址

Vue实例挂载阶段,这里只分析web平台的实现,web平台的入口文件是src/platforms/web/entry-runtime-with-compiler.js,在此文件中Vue通过$mount方法进行实例挂载。

Vue挂载阶段都做了什么?

src/platforms/web/entry-runtime-with-compiler.js文件$mount方法定义之前,$mount已经在runtime(src/platforms/web/runtime/index.js文件)里定义了一遍,在该文件里刚开始就对·$mount做一个缓存,缓存为mount变量,方便之后使用。

mr-progress-vue文档

简单demo查看

文件dome/index.html,只有两个最基础demo

详细演示查看

按步骤执行

npm install or yarn install

npm run serve or yarn serve

使用方式

可使用npm install mr-progress-vue --save进行安装

同时可引入lib文件夹下progress.umd.min.js进行使用

本项目依赖于Vue2.x,请自行安装

Vue2.x源码分析(一):new Vue发生了什么

Vue源码分析 + 逐行注释 Github地址

new Vue()做了什么?

首先,Vue会判断当前的this是否是Vue实例,如果是则会调用this._init()初始化Vue配置,如果不是则抛出警告

代码src/core/instance/index.js

1
2
3
4
5
6
7
8
function Vue(options) {
if (process.env.NODE_ENV !== 'production' &&
!(this instanceof Vue)
) {
warn('Vue is a constructor and should be called with the `new` keyword')
}
this._init(options)
}

JS-Web-API(三):Ajax

XMLHttpRequest

GET请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 初始化实例
const xhr = new XMLHttpRequest()
// 第三个参数true则为异步
xhr.open('GET','url', true)
xhr.onreadystatechange = function () {
// 这里函数异步执行
if (xhr.readyState === 4) {
if (xhr.statusCode === 200) {
console.log(xhr.responseText)
} else {
console.log('请求失败')
}
}
}
xhr.send()

JS-Web-API(二):事件

事件绑定

1
2
3
4
const btn = document.getElementById('btn1')
btn.addEventListener('click', event => {
console.log('clicked')
})
1
2
3
4
5
6
7
8
9
10
// 通用的绑定函数
function bindEvent(elem, type, fn) {
elem.addEventListener(type, fn)
}

const a = document.getElementById('link1')
bindEvent(a, 'click', e => {
e.preventDefault() // 阻止默认行为
alert('clicked')
})
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×