vue中Runtime-Compiler和Runtime-only的区别
一、选择Runtime-Compiler和Runtime-only不同模式的时候main.js文件的区别

二.vue程序运行过程

1.解析:
第一步,当把vue模板template传给Vue实例的时候,vue内部会保存在options里面,第二部,进行解析,解析成ast(抽象语法树),第三步会进行编译,编译成render函数,第四步render函数会生成虚拟dom树,第五步,把虚拟dom树渲染成真实dom ui
所以:runtime-compiler的执行步骤是template -> ast -> render -> vdom -> ui,runtime-only的执行步骤是 render -> vdom -> ui,显然runtime-only的性能更高,代码量更少
三、render函数详解
1.render函数的作用
vue在使用模板创建页面的时候,需要先通过一个渲染函数来创建虚拟dom树,这个函数就是render函数。render函数内部有一个回调函数createElement(),这个函数的作用就是生成一个 VNode节点(虚拟dom),render 函数得到createElement() 创建的 VNode 节点之后,返回给 Vue.js 的 mount 函数,渲染成真实 DOM 节点,并挂载到根节点上。
2.render函数的用法
import Vue from 'vue'
import App from './App' Vue.config.productionTip = false /* eslint-disable no-new */
const cpn = {
template: '<div>{{message}}</div>',
data () {
return {
message: '我是组件的message'
}
}
}
new Vue({
el: '#app',
// components: { App },
// template: '<App/>'
render: function (creatElement) { //回调函数creatElement
//1.普通用法:creatElement('标签名',{标签属性}, ['标签里面显示的内容'])
return creatElement ('h2',
{class: 'box'},
['hello vue'])
//2.传入组件
return creatElement (cpn)
//这种写法的好处:
//如果把cpn传给template的话它还要编译成ast,这种写法的话直接让render函数生成虚拟dom,效率更高
}
})
3.思考:.vue文件里面的template是由谁处理的?
是由vue-tempalte-compiler解析
import Vue from 'vue'
import App from './App.vue' Vue.config.productionTip = false console.log(App)
//不包含任何template函数,而是一个render函数
new Vue({
render: h => h(App),
}).$mount('#app')
打印这段代码,结果如下:

疑惑:
Runtime-Compiler创建的项目打印出来的结果也是这样,为什么,难道打印之前内部已经解析好了?

vue中Runtime-Compiler和Runtime-only的区别的更多相关文章
- Vue中v-show和v-if的使用以及区别
个人博客 地址:http://www.wenhaofan.com/article/20190321143330 v-if 1.v-if 根据条件渲染,它会确保在切换过程中条件块内的组件销毁和重建 ...
- Vue中hash模式和history模式的区别
vue-router 中hash模式和history模式. 在vue的路由配置中有mode选项,最直观的区别就是在hash模式下的地址栏里的URL夹杂着‘#’号 ,而history模式下没有.vue默 ...
- vue中computed、metfods、watch的区别
一.computed和methods 我们可以将同一函数定义为一个 method 或者一个计算属性.对于最终的结果,两种方式确实是相同的. 不同的是computed计算属性是基于它们的依赖进行缓存的. ...
- vue中的router和route有什么区别?
我只知道前者一般用在跳转路由的时候,push一个url, 而后者则用来存储路由跳转过程中存储的各种数据. 话不多说,这篇博客讲的比较详细,可以参考一下. vue2.0中的$router 和 $rout ...
- VUE中,@click后边( ) 有无括号的区别
在使用的时候,两种方式结果效果差不多是一样. @click="Login()" @click="Login"而唯一的区别就是,有括号的可以在括号里写传递的参数. ...
- vue中一些常见的面试题
前言 一位正在学习前端的菜鸟,虽菜,但还未放弃. 内容 1,说一下vue中的指令 答: ①,v-html:主要用来渲染html节点,其作用与原生的innerHtml基本一致 ②,v-text:主要用来 ...
- 了解vue里的Runtime Only和Runtime+Compiler
转自:了解vue里的Runtime Only和Runtime+Compiler 扩展文章:Vue 2.0如何仅使用Runtime-only Build构建项目? 可以看到有两种版本: Runtime ...
- Runtime Only和Runtime + Compiler
如果你需要在客户端编译模板 (比如传入一个字符串给 template 选项,或挂载到一个元素上并以其 DOM 内部的 HTML 作为模板),就将需要加上编译器,即完整版 当使用 vue-loader ...
- webpack+vue中安装使用vue-layer弹窗插件
1.安装vue-layer插件 npm install vue-layer --save-dev 2.打包入口文件main.js中引入vue.vue-layer.并且将vue-layer添加到vue原 ...
- vue 源码学习三 vue中如何生成虚拟DOM
vm._render 生成虚拟dom 我们知道在挂载过程中, $mount 会调用 vm._update和vm._render 方法,vm._updata是负责把VNode渲染成真正的DOM,vm._ ...
随机推荐
- kubernetes运用
1:kubernetes基本介绍 kubernetes 是一个开源的容器集群管理系统,K8s用于容器化应用程序的部署 扩展和管理,提供容器编排 资源调度 弹性伸缩 部署管理 服务发现等一系列功能. ...
- CSS3实现穿墙广告效果
㈠分享一组很有趣的代码: 具体如下: <!doctype html> <html> <head> <meta charset="UTF-8" ...
- 论文阅读:Offloading Distributed Applications onto SmartNICs using iPipe
摘要: 包含丰富计算资源的新兴多核SoC SmartNIC具有卸载通用数据中心服务器任务的潜力,但是目前尚不清楚如何有效地使用SmartNIC并最大程度地减少卸载收益,尤其是对于分布式应用程序. 为此 ...
- Jmeter(四)Cookie管理器
上一节中我们用Jmeter通过接口上传了一张图片到人人网,其中请求头中的Cookie是写死的,这个Cookie其实是登录成功后服务器返回给客户端的,客户端接收到这个Cookie后保存下来,在后续向服务 ...
- vue自定义组件(vue.use(),install)+全局组件+局部组件
相信大家都用过element-ui.mintui.iview等诸如此类的组件库,具体用法请参考:https://www.cnblogs.com/wangtong111/p/11522520.html ...
- MyBaits理解?
(1)MyBaits是一个基于Java的持久层框架,支持普通或定制化SQL查询.存储过程以及高级映射,使用XML或注解来配置和映射信息. (2)应用程序使用SQLSessionFactory实例,一个 ...
- 用过消息队列?Kafka?能否手写一个消息队列?懵
是否有同样的经历?面试官问你做过啥项目,我一顿胡侃,项目利用到了消息队列,kafka,rocketMQ等等. 好的,那请开始你的表演,面试官递过一支笔:给我手写一个消息队列!!WHAT? 为了大家遇到 ...
- 学习曲线(learning curves)
假定假设函数为一个二次函数,只是参数未定: 每给定一个样本大小,就能训练出对应的假设函数,从而利用这个假设函数可以计算出Jtrain(仍然在之前拿来训练的那些样本里面),然后将训练好的假设函数用在全部 ...
- ContentLoadingProgressBar
注意必须设置style: <android.support.v4.widget.ContentLoadingProgressBar android:id="@+id/progressB ...
- win2003 64位系统IIS配置方法
IIS7 很简单,在网站对应的应用程序池上右键高级设置,常规里的启用32位应用程序改为true就可以了,IIS6稍微复杂一些, 1,命令行里运行 cscript.exe %SYSTEMDRIVE%\i ...