在使用vue init創建腳手架的時候會有如下的選擇:
Runtime + compiler
Runtime only
1、區別一
通過這兩種方法創建的腳手架,區別在於main.js(在src文件夾中)
在Vue實例中,runtime-compiler創建的項目中參數是:
components和template
runtime-only創建的項目中參數為:
render函數
2、組件的渲染過程
組件是如何被渲染到頁面中的?
template ---> ast ---> render ---> vDom ---> 真實的Dom ---> 頁面
ast:抽象語法樹
vDom:虛擬DOM
3、runtime-only
·我們在使用runtime-only的時候,需要借助webpack的loader工具,將.vue文件編譯為javascript,因為是在編譯階段做的,所以他只包含運行時的vue.js代碼,所以代碼體積會更輕量
·再將.vue 文件編譯為javascript文件的過程當中會將組件的template模板編譯為render函數,所以我們得到的是render函數的版本
運行的時候是不帶編譯的,編譯是在離線的時候做的
·template會通過vue-template-compiler轉換為render函數
4、runtime-compiler
·在vue中,最終渲染都是通過render函數,如果寫template屬性,則會編譯為render函數,那么這個編譯過程會在運行時發生,所以需要帶有編譯器的版本
·編譯過程會對性能有一定的損耗
結論:
runtime-only:將template在打包的時候,就已經編譯為render函數
runtime-compiler:在運行的時候才去編譯template
結果:
發布生產的時候,runtime-only構建的項目代碼體積更小,運行速度更快
推薦使用runtime-only函數