vue原理分析(三)new()创建Vue实例

今天我们来分析Vue实例的创建

代码如下:

复制代码
Vue.config.productionTip = false



new Vue({

  render: h => h(App),

}).$mount('#app')

Vue.config.productionTip = false

这个配置成false,是阻止启动生产消息

复制代码
new Vue({

  render: h => h(App),

}).$mount('#app')

这串代码可以拆分成2句

第一句是创建一个Vue实例

复制代码
const app = new Vue({ render: h => h(App) })

第二句是将Vue实例挂载在id为app的标签上,这个app标签是在index.html中,大家可以自己找一下

复制代码
app.$mount('#app')

这里研究下Vue实例的创建

复制代码
const app = new Vue({ render: h => h(App) })

先看下对象里面

复制代码
render: h => h(App)

这个是一个缩写,

实际上是

复制代码
render: function (createElement) {

    return createElement(App);

}

改为箭头函数

复制代码
render: createElement => createElement(App)

用h指代createElement

复制代码
render: h => h(App)

实际渲染是这样子的

复制代码
import App from './App'

new Vue({

    el: '#root',

    template: '<App></App>',

    components: {

        App

    }

})

引入App组件,从而生成VNode节点

后续通过Vue.prototype.$mount进行挂载,从而可以渲染成真实的DOM结点

相关推荐
中微子1 小时前
React状态管理最佳实践
前端
烛阴1 小时前
void 0 的奥秘:解锁 JavaScript 中 undefined 的正确打开方式
前端·javascript
中微子1 小时前
JavaScript 事件与 React 合成事件完全指南:从入门到精通
前端
Hexene...1 小时前
【前端Vue】如何实现echarts图表根据父元素宽度自适应大小
前端·vue.js·echarts
初遇你时动了情1 小时前
腾讯地图 vue3 使用 封装 地图组件
javascript·vue.js·腾讯地图
dssxyz2 小时前
uniapp打包微信小程序主包过大问题_uniapp 微信小程序时主包太大和vendor.js过大
javascript·微信小程序·uni-app
华子w9089258592 小时前
基于 SpringBoot+VueJS 的农产品研究报告管理系统设计与实现
vue.js·spring boot·后端
天天扭码2 小时前
《很全面的前端面试题》——HTML篇
前端·面试·html
xw52 小时前
我犯了错,我于是为我的uni-app项目引入环境标志
前端·uni-app
!win !2 小时前
被老板怼后,我为uni-app项目引入环境标志
前端·小程序·uni-app