Runtime Only VS Runtime + Compiler

通常我们利用 vue-cli 去初始化我们的 Vue.js 项目的时候会询问我们用 Runtime Only 版本的还是 Runtime + Compiler 版本。下面我们来对比这两个版本。

  • Runtime Only

我们在使用 Runtime Only 版本的 Vue.js 的时候,通常需要借助如 webpack 的 vue-loader 工具把 .vue 文件编译成 JavaScript,因为是在编译阶段做的,所以它只包含运行时的 Vue.js 代码,因此代码体积也会更轻量。

Runtime Only版本通俗来说也就是发布到浏览器的时候并不存在template版本。是浏览器可以识别的render函数。
我们平常SPA使用webpack进行打包的代码其实就是runtime-only代码,vue会帮我们把template编译成render函数形式的呈现。
简而言之,runtime Only版本是运行时不做编译,编译是在离线的时候做(打包时候进行编译)。
  • Runtime + Compiler

我们如果没有对代码做预编译,但又使用了 Vue 的 template 属性并传入一个字符串,则需要在客户端编译模板

compiler就是使用的vue版本在发布的时候可以使用template标签,vue会在运行的时候识别这些template标签并帮助我们转化为render函数。
也就是vue在运行的时候,注意是vue运行的时候vue帮我们进行编译。
,如下所示:
// 需要编译器的版本
new Vue({
  template: '
{{ hi }}
' }) // 这种情况不需要 new Vue({ render (h) { return h('div', this.hi) } })

因为在 Vue.js 2.0 中,最终渲染都是通过 render 函数,如果写 template 属性,则需要编译成 render 函数,那么这个编译过程会发生运行时,所以需要带有编译器的版本。

很显然,这个编译过程对性能会有一定损耗,所以通常我们更推荐使用 Runtime-Only 的 Vue.js。

你可能感兴趣的:(vue.js,前端,源码分析)