Vue.js中我们可以用以下的语法来声明式渲染数据
<div id="app">
{
{
message}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
const app = new Vue({
el:"#app",
data:{
message:"Hellp Vue!"
}
})
</script>
在页面上能看到Hellp Vue!,那么new Vue()做了什么呢?
首先找到Vue()这个类,在src/core/instance/index.js中
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)
}
initMixin(Vue)
stateMixin(Vue)
eventsMixin(Vue)
lifecycleMixin(Vue)
renderMixin(Vue)
export default Vue
首先判断当前的环境是不是生产环境,且在调用Vue的时候,有没有用new操作符,如果没有就会调用warn,抛出一个警告告诉我们Vue是一个构造函数,需要用new操作符去调用
接着调用_init方法,传递的参数便是我们在new Vue时传进去的对象
{
el:"#app",
data:{
message:"Hellp Vue!"
}
}
_init方法是 initMixin 封装到vue函数原型中的,此方法在src/core/instance/init.js
let uid = 0//每个Vue实例都有一个id
export function initMixin (Vue: Class