vue-vue构建版本runtime-compiler和runtime-only的区别
构建vue项目会有两个版本进行选择,runtime-compiler和runtime-only;他们主要的不同体现在一个文件里面,main.js,下面看看两种的区别:
一眼就看可以看出代码上的区别了;但要讲的并不是这个,要说的是他们执行流程的区别:
runtime-compiler的执行流程是:template会被解析成ast(抽象树结构),然后编译成render函数,再转换为虚拟DOM,再变成真实DOM;即过程是 template->ast->render->vitualdom->UI
runtime-only的执行流程是:render函数转换为虚拟DOM,再变成真实DOM;即过程是 render->vitualdom->UI
区别很明显,runtime-compiler多了前两个步骤,runtime-only没有,这就导致了两者主要2个区别:性能和代码量。
性能:runtime-compiler低,runtime-only高
代码量:由于runtime-only不需要再进行前两个步骤,因此他不需要再用vue-template-compiler去解析,所以少了一些解析的工具和代码
但大家有两个疑问是:
1. render函数是什么?h(App)是什么东西?
2. runtime-only中也有template的代码,那不是也要前两个步骤吗?
先说第一个问题,render函数的作用是创建和渲染页面的标签,其实上面写的是箭头函数以及参数h有点抽象了,准确的写法应该是下面:
render: function(creareElement){
createElement(App)
}
参数h其实就是creareElement,他是一个函数,他的作用是创建标签;看下面的代码把:
这是creareElement的普通用法,他的意思是创建一个h2标签,有class属性等于box,并且标签内容是Hello World和一个button标签
creareElement还有一种用法就是传入一个组件,也就是createElement(App) ,就相当于创建App提供的模板标签了
好了,到第二个问题; 为什么runtime-only中也有template的代码,那不是也要前两个步骤吗?答案是不需要的,这样说吧,在创建完runtime-only后,前面两个步骤相当已经执行过了,再说一遍,前面两个步骤已经执行过了,所以实际上去执行 h(App)的时候,App此时已经没有template了,template已经被渲染成render函数;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~