欢迎来到ZeroAO的博客

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
扩大
缩小

Runtime-Compiler与Runtime-Only的区别

在使用Vuecli创建项目时,会有这么两个选项

·-  Runtime + Compiler: recommended for most users

(运行程序+编译器:推荐给大多数用户)

·-  Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specificHTML) are ONLY allowed in .vue files - render functions are required elsewhere

(仅运行程序: 比上面那种模式轻大约 6KB min+gzip,但是 template (或任何特定于vue的html)只允许在.vue文件中使用——其他地方用需要 render 函数)

1、区别

  通过这两种方法创建的脚手架,区别在于main.js(在src文件夹中)

  在Vue实例中,runtime-compiler创建的项目中参数是:

    components和template

  runtime-only创建的项目中参数为:
      render函数

2、对比

  1. runtime-only 比 runtime-compiler 轻 6kb

  2. runtime-only 运行更快

  3. runtime-only 其实只能识别render函数,不能识别template,.vue文件中的也是被 vue-template-compiler 翻译成了

 

 



      render函数,所以只能在.vue里写 template
3、 解释

  1. runtime-only 更快更小的原因:

    首先我们需要了解组件是如何被渲染到页面中的?
    template ---> ast ---> render ---> vDom ---> 真实的Dom ---> 页面

    (1)首先将vue中的模板进行解析解析成abstract syntax tree (ast)抽象语法树

    (2)将抽象语法树在编译成render函数

    (3)将render函数再翻译成virtual dom 虚拟dom

    (4)将虚拟dom显示在浏览器上

 

  通过上上图,我们能够看出runtime-only与runtime-compiler相比,runtime-only直接到render,省去template ---> ast --->render这步

·我们在使用runtime-only的时候,需要借助webpack的loader工具,将.vue文件编译为javascript,因为是在编译阶段做的,所以他只包含运行时的vue.js代码,所以代码体积会更轻量

·再将.vue 文件编译为javascript文件的过程当中会将组件的template模板编译为render函数,所以我们得到的是render函数的版本,运行的时候是不带编译的,编译是在离线的时候做的,template会通过vue-template-compiler转换为render函数


结论:推荐使用runtime-only函数

 

posted on 2020-06-10 11:31  Zeroao  阅读(712)  评论(0编辑  收藏  举报

导航

Live2D