当前位置: 首页 > news >正文

时尚大气网站设计新闻近期大事件

时尚大气网站设计,新闻近期大事件,做网站建设小程序,编程基础知识入门文章目录 前言一、使用RuntimeCompiler解析$mount的原因二、$mount 解析的详细过程1.解析挂载的#app执行了vm.$mount2. 通过$mount方法执行以下文件的mount方法3. 执行util工具文件夹中的query方法4. 执行query方法后返回$mount方法判断el是否是body5. 判断!options.render&…

文章目录

  • 前言
  • 一、使用Runtime+Compiler解析$mount的原因
  • 二、$mount 解析的详细过程
    • 1.解析挂载的#app执行了vm.$mount
    • 2. 通过$mount方法执行以下文件的mount方法
    • 3. 执行util工具文件夹中的query方法
    • 4. 执行query方法后返回$mount方法判断el是否是body
    • 5. 判断!options.render
      • (1)options.render是否为真
      • (2)判断是否使用了template
      • (3)判断是否是el
      • (4)返回的 mount 的方法
    • 6. 解析mountComponent方法
  • 总结


前言

Runtime Only 和 Runtime+Compiler的区别
通常我们利用 vue-cli 去初始化我们的 Vue.js 项目的时候会询问我们用Runtime Only 版本的还是 Runtime+Compiler 版本。
Runtime Only:我们在使用 Runtime Only 版本的 Vue.js 的时候,通常需要借助如 webpack的 vue-loader 工具把 .vue 文件编译成 JavaScript,因为是在编译阶段做的,所以它只包含运行时的 Vue.js 代码,因此代码体积也会更轻量。
Runtime+Compiler:我们如果没有对代码做预编译,但又使用了 Vue 的 template 属性并传入一个字符串,则需要在客户端编译模板。如下所示:

// 需要编译器的版本
new Vue({
template: '<div>{{ hi }}</div>'
})
// 这种情况不需要
new Vue({render (h) {return h('div', this.hi)
}

因为在 Vue.js 2.0 中,最终渲染都是通过 render 函数,如果写 template 属性,则需要编译成 render 函数,那么这个编译过程会发生运行时,所以需要带有编译器的版本。
很显然,这个编译过程对性能会有一定损耗,所以通常我们更推荐使用Runtime-Only 的 Vue.js。


一、使用Runtime+Compiler解析$mount的原因

Vue中我们通过 $mount 方法去挂载vm,而 $mount 方法在多个文件中都有定义。如源码 src\platforms\web\runtime\index.ts src\platforms\web\runtime-with-compiler.ts 等文件。由于使用纯前端的方式分析源码,所以我这里分析 Compiler 版本的 $mount,有利于对原理深入的理解。

src\platforms\web\runtime\index.ts的方法较为简单,如下图
在这里插入图片描述

二、$mount 解析的详细过程

1.解析挂载的#app执行了vm.$mount

在这里插入图片描述

2. 通过$mount方法执行以下文件的mount方法

路径:src\platforms\web\runtime-with-compiler.ts
在这里插入图片描述

3. 执行util工具文件夹中的query方法

路径:src\platforms\web\util\index.ts
也就是main.js 中el: ‘#app’ 传入的话,就会执行1.1获取对应的元素
在这里插入图片描述

4. 执行query方法后返回$mount方法判断el是否是body

在这里插入图片描述

5. 判断!options.render

在这里插入图片描述

(1)options.render是否为真

下一章节会详细讲解

(2)判断是否使用了template

也就是使用Runtime Only 需要编译的写法,这个在前言中详细说明了,可以返回顶部详细看看。

// 使用了template配置的写法
import Vue from 'vue'
var app = new Vue({el: '#app',template: '<div>{{ message }}</div>',  // 使用了templatedata() {return {message: '我是一个双向绑定的数据'}}
})

(3)判断是否是el

如果是el,就执行getOutHtml方法,获取main.js中el的id名的div元素
在这里插入图片描述

(4)返回的 mount 的方法

在这里插入图片描述
路径:src\platforms\web\runtime\index.ts
在这里插入图片描述

6. 解析mountComponent方法

路径 src\core\instance\lifecycle.ts
执行updateComponent方法,通过Watcher根据数据更新执行。感兴趣可以查看Watcher里面的配置即可。

在这里插入图片描述


总结

这就是$mount 挂载的过程

http://www.tj-hxxt.cn/news/40280.html

相关文章:

  • 人才招聘网站大全百度推广培训班
  • 网站防恶意注册郑州推广优化公司
  • 网站首页排名厦门网站建设公司名单
  • 温州网站建设公司哪个好网络营销步骤
  • 唐山市做网站潍坊网站开发公司
  • 网站内容长沙seo步骤
  • 东莞模板建网站平台百度seo查询收录查询
  • 温州企业网站百度推广助手怎么用
  • 网站建设项目经历点击宝seo
  • 企业手机网站建设案例批量关键词排名查询工具
  • 郯城县住房和城乡建设局网站百度在线提问
  • 垂直网站建设方案免费发布产品的网站
  • 柏林网站建设济南网站万词优化
  • 17网一起做网店下载广州seo服务公司
  • wordpress会员导出爱站seo查询软件
  • 湖南做网站的公司排名网推项目平台
  • 石家庄新钥匙做网站百度网站优化
  • 文化公司网站源码博客
  • 做好网站内能另外做链接吗seo数据优化教程
  • 网站开发环境有什么个人博客模板
  • 江苏建设工程招投标网站长尾关键词是什么
  • 关于网站建设费用域名权重查询
  • 丰都网站建设报价app拉新推广
  • nginx 网站建设网页制作素材模板
  • 网站开发中 视频播放卡淘宝美工培训
  • 五金表带厂东莞网站建设网页设计与制作软件有哪些
  • 做的网站怎么放在网上搜索引擎营销的实现方法有哪些
  • 山西 网站制作培训心得体会怎么写
  • 宜宾网站建设略奥网络网络舆情监测平台
  • 做网站后台的时候要注意什么周口网络推广哪家好