Vue build.png
綜下所述走趋,以后都默認選擇Runtime Only版本
可以看到有兩種版本: Runtime Only 版本 和 Runtime+Compiler 版本。
- Runtime Only我們在使用 Runtime Only 版本的 Vue.js 的時候啦吧,通常需要借助如 webpack 的 vue-loader 工具把 .vue 文件編譯成 JavaScript授滓,因為是在編譯階段做的在孝,所以它只包含運行時的 Vue.js 代碼私沮,因此代碼體積也會更輕量仔燕。 在將 .vue 文件編譯成 JavaScript的編譯過程中會將組件中的template模板編譯為render函數(shù)晰搀,所以我們得到的是render函數(shù)的版本。所以運行的時候是不帶編譯的乡翅,編譯是在離線的時候做的蠕蚜。
- Runtime+Compiler我們?nèi)绻麤]有對代碼做預(yù)編譯翎朱,但又使用了 Vue 的 template 屬性并傳入一個字符串拴曲,則需要在客戶端編譯模板澈灼,如下所示:// 需要編譯器的版本new Vue({ template: '{{ hi }}'})// 這種情況不需要new Vue({ render (h) { return h('div', this.hi) }})因為在 Vue.js 2.0 中叁熔,最終渲染都是通過 render 函數(shù),如果寫 template 屬性心软,則需要編譯成 render 函數(shù)删铃,那么這個編譯過程會發(fā)生運行時猎唁,所以需要帶有編譯器的版本腐魂。很顯然,這個編譯過程對性能會有一定損耗风题,所以通常我們更推薦使用 Runtime-Only 的 Vue.js沛硅。
只有以下情況會用到compiler:
- 有指定template;
- 沒指定template摇肌,也沒指定render(這時候使用的就是被掛載元素的outerHtml)。所以肯适,沒有使用到compiler的情況只有:沒有指定template框舔,但指定了render刘绣。
有時會遇到這樣的錯誤:[Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
以上提到,解決這個問題有兩種方式移斩,但大多會選擇后者,也就是使用全功能的vue(runtime+compiler),這個版本的vue文件相比僅包含runtime的版本體積要大你稚,而且運行時的compiler轉(zhuǎn)換會消耗性能刁赖,compiler過程其實可以放到構(gòu)建過程中進行宇弛。總結(jié)就是舅踪,如果可以的話抽碌,盡量使用runtime版的vue文件。
作者:dream_Q
鏈接:http://www.reibang.com/p/466510d84e36
來源:簡書