基于Vue生產(chǎn)環(huán)境部署詳解
前面的話(huà)
開(kāi)發(fā)時(shí),Vue 會(huì)提供很多警告來(lái)幫助解決常見(jiàn)的錯(cuò)誤與陷阱。生產(chǎn)時(shí),這些警告語(yǔ)句卻沒(méi)有用,反而會(huì)增加載荷量。再次,有些警告檢查有小的運(yùn)行時(shí)開(kāi)銷(xiāo),生產(chǎn)環(huán)境模式下是可以避免的。本文將詳細(xì)介紹Vue生產(chǎn)環(huán)境部署
生產(chǎn)環(huán)境
如果用 Vue 完整獨(dú)立版本 (直接用 <script> 元素引入 Vue),生產(chǎn)時(shí)應(yīng)該用精簡(jiǎn)版本 (vue.min.js)
如果用 Webpack 或 Browserify 類(lèi)似的打包工具時(shí),生產(chǎn)狀態(tài)會(huì)在 Vue 源碼中由 process.env.NODE_ENV 決定,默認(rèn)在開(kāi)發(fā)狀態(tài)。Webpack 與 Browserify 兩個(gè)打包工具都提供方法來(lái)覆蓋此變量并使用生產(chǎn)狀態(tài),警告語(yǔ)句也會(huì)被精簡(jiǎn)掉。每一個(gè) vue-cli 模板有預(yù)先配置好的打包工具,但了解怎樣配置會(huì)更好
【webpack】
使用 Webpack 的 DefinePlugin 來(lái)指定生產(chǎn)環(huán)境,以便在壓縮時(shí)可以讓 UglifyJS 自動(dòng)刪除代碼塊內(nèi)的警告語(yǔ)句
var webpack = require('webpack') module.exports = { // ... plugins: [ // ... new webpack.DefinePlugin({ 'process.env': { NODE_ENV: '"production"' } }), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }) ] }
【Browserify】
運(yùn)行打包命令,設(shè)置 NODE_ENV 為 "production"。等于告訴 vueify 避免引入熱重載和開(kāi)發(fā)相關(guān)代碼
使用一個(gè)全局 envify 轉(zhuǎn)換 bundle 文件。這可以精簡(jiǎn)掉包含在 Vue 源碼中所有環(huán)境變量條件相關(guān)代碼塊內(nèi)的警告語(yǔ)句
NODE_ENV=production browserify -g envify -e main.js | uglifyjs -c -m > build.js
【Rollup】
使用 rollup-plugin-replace:
const replace = require('rollup-plugin-replace') rollup({ // ... plugins: [ replace({ 'process.env.NODE_ENV': JSON.stringify( 'production' ) }) ] }).then(...)
預(yù)編譯模板
當(dāng)需要處理 DOM 內(nèi)或 JavaScript 內(nèi)的模板時(shí),“從模板到渲染函數(shù)”的編譯就會(huì)在線(xiàn)上發(fā)生。通常情況下這種處理是足夠快的,但是如果應(yīng)用對(duì)性能很敏感最好還是回避。
預(yù)編譯模板最簡(jiǎn)單的方式就是使用單文件組件 - 相關(guān)的構(gòu)建設(shè)置會(huì)自動(dòng)把預(yù)編譯處理好,所以構(gòu)建好的代碼已經(jīng)包含了編譯出來(lái)的渲染函數(shù)而不是原始的模板字符串。
如果使用 Webpack,并且喜歡分離 JavaScript 和模板文件,可以使用 vue-template-loader,它也可以在構(gòu)建過(guò)程中把模板文件轉(zhuǎn)換成為 JavaScript 渲染函數(shù)
提取組件的CSS
當(dāng)使用單文件組件時(shí),組件內(nèi)的 CSS 會(huì)以 <style> 標(biāo)簽的方式通過(guò) JavaScript 動(dòng)態(tài)注入。這有一些小小的運(yùn)行時(shí)開(kāi)銷(xiāo),如果使用服務(wù)端渲染,這會(huì)導(dǎo)致一段“無(wú)樣式的內(nèi)容瞬間 (fouc)”。橫跨所有組件提取 CSS 到同一個(gè)文件回避這件事情,這也會(huì)更好的壓縮和緩存 CSS
跟蹤運(yùn)行時(shí)錯(cuò)誤
如果在組件渲染時(shí)出現(xiàn)運(yùn)行錯(cuò)誤,錯(cuò)誤將會(huì)被傳遞至全局 Vue.config.errorHandler 配置函數(shù) (如果已設(shè)置)。利用這個(gè)鉤子函數(shù)和錯(cuò)誤跟蹤服務(wù) (如 Sentry),可能是個(gè)不錯(cuò)的主意
以上這篇基于Vue生產(chǎn)環(huán)境部署就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- vue項(xiàng)目部署上線(xiàn)遇到的問(wèn)題及解決方法
- Vue項(xiàng)目webpack打包部署到Tomcat刷新報(bào)404錯(cuò)誤問(wèn)題的解決方案
- 詳解Vue項(xiàng)目編譯后部署在非網(wǎng)站根目錄的解決方案
- 在nginx上部署vue項(xiàng)目(history模式)的方法
- Vue 項(xiàng)目部署到服務(wù)器的問(wèn)題解決方法
- 如何在ASP.NET Core應(yīng)用程序運(yùn)行Vue并且部署在IIS上詳解
- vue 打包后的文件部署到express服務(wù)器上的方法
- Vue項(xiàng)目webpack打包部署到服務(wù)器的實(shí)例詳解
- Vue.js項(xiàng)目部署到服務(wù)器的詳細(xì)步驟
- 詳解jenkins自動(dòng)化部署vue
相關(guān)文章
vue中改變了vuex數(shù)據(jù)視圖不更新,也監(jiān)聽(tīng)不到的原因及解決
這篇文章主要介紹了vue中改變了vuex數(shù)據(jù)視圖不更新,也監(jiān)聽(tīng)不到的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Vue-resource攔截器判斷token失效跳轉(zhuǎn)的實(shí)例
下面小編就為大家?guī)?lái)一篇Vue-resource攔截器判斷token失效跳轉(zhuǎn)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10深入理解Vue-cli搭建項(xiàng)目后的目錄結(jié)構(gòu)探秘
本篇文章主要介紹了深入理解Vue-cli搭建項(xiàng)目后的目錄結(jié)構(gòu)探秘,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07Vue3如何解決路由緩存問(wèn)題(響應(yīng)路由參數(shù)的變化)
這篇文章主要介紹了Vue3如何解決路由緩存問(wèn)題(響應(yīng)路由參數(shù)的變化),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03