最近嘗試使用vue-cli4創(chuàng)建項目,選擇使用vue3.0版本進(jìn)行開發(fā)。之前使用vue2時,為了優(yōu)化性能使用CDN引入了相關(guān)包,因此新的項目也打算采用相同的方式。然而vue3并沒有向2.0版本使用UMD模塊化,因此在公共庫CDN網(wǎng)站中會發(fā)現(xiàn)有多個版本可以選擇,例如vue.cjs.js,vue.esm-browser.js,vue.global.js等等。由于自己不懂它們有何區(qū)別,在用script標(biāo)簽引入時出現(xiàn)了類似Uncaught ReferenceError: vue is not defined的種種報錯。
最開始選擇引入vue.cjs.js時,瀏覽器出現(xiàn)了如下的報錯:
Uncaught ReferenceError: exports is not defined
這里的cjs是CommonJS的簡寫,說明因為某種原因瀏覽器不支持CommonJS規(guī)范,或者不能通過script標(biāo)簽引入(具體原因還不清楚)。
接著我看到了vue.esm-browser.js,引入后瀏覽器又報錯了:
Uncaught SyntaxError: Unexpected token 'export'
esm是瀏覽器使用的模塊規(guī)范。也沒明白為什么引入esm和cjs都會報錯。
注意:esm要在script標(biāo)簽中加上 type="module"
最后經(jīng)過測試,vue.global.js(包含編譯器和運行時)和vue.runtime.global.js(運行時版本)都可以使用,并且沒有報錯。
上面幾個版本中都有prod后綴的鏈接可以選擇,估計是和min類似的經(jīng)過壓縮的版本。
最奇怪的是,在最開始有出現(xiàn)過Uncaught ReferenceError: __VUE_HMR_RUNTIME__ is not defined 的報錯,到后來又莫名其妙的消失了,真的是一頭霧水。