最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項目打包以及優(yōu)化的實現(xiàn)步驟

 更新時間:2021年07月30日 08:27:31   作者:Don_ixu  
項目完成,我們會將項目進行上線,為了提升性能,我們往往會進行一些優(yōu)化處理,本文主要介紹了vue項目打包以及優(yōu)化的實現(xiàn)步驟,感興趣的可以了解一下

vue項目的打包上線及優(yōu)化

項目完成,我們會將項目進行上線,為了提升性能,我們往往會進行一些優(yōu)化處理

vue項目的打包

腳手架項目中有一個默認的打包命令,我們可以輸入npm run bulid來對項目進行打包

打開終端,切換到項目根目錄

輸入命令:npm run build

會在當前項目的根目錄下生成一個dist文件夾,里面就是打包后的文件

在這里插入圖片描述 

項目托管

我們可以創(chuàng)建一個簡易的node服務(wù)器來托管打包后的項目,這樣就可以模擬訪問服務(wù)器的項目

1.創(chuàng)建一個新的目錄做為服務(wù)器根目錄,小黑窗執(zhí)行node init -y執(zhí)行初始化,再執(zhí)行npm i express下載express包,然后創(chuàng)建app.js文件將下面代碼拷貝進來(利用express包開一個服務(wù)器)

2.將剛剛打包生成的dist目錄整體拷貝到node服務(wù)器目錄下

3.資源在dist目錄下,所以可以使用靜態(tài)資源托管的方式提供資源,將dist目錄做為資源托管目錄

express創(chuàng)建服務(wù)器

var express = require('express')
const path = require('path')

// 2. 創(chuàng)建服務(wù)器
var app = express();

// 托管靜態(tài)資源
// 也可以將所有靜態(tài)資源放置到指定的目錄下,如public,然后添加以下的配置
app.use(express.static('dist'))
app.use('/', express.static(path.join(__dirname, 'dist')))

// 3. 開啟服務(wù)器并監(jiān)聽端口
app.listen(3001, () => {
  console.log('http://127.0.0.1:3001')
})

啟動服務(wù)器

在服務(wù)器目錄下打開終端,輸入node app.js

在瀏覽器中輸入服務(wù)器地址

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-woOTHmF2-1627475455630)(img\02-訪問服務(wù)器資源.jpg)]

項目的常見優(yōu)化

項目打包之后,會將之前所使用到的部署依賴包和項目中使用到的外部資源都打包

如果之前引入的包很多,或者引入的不必需的包,那么會增大項目的體積,從而造成用戶訪問的時候需要請求更多的數(shù)據(jù)才能正常的訪問,不利于用戶體驗,所以需要對打包過程進行優(yōu)化

一般情況下我們可以從優(yōu)化代碼的方面對項目進行優(yōu)化,也可以使用類似cdn的方式對項目進行優(yōu)化

腳手架中提供了一個命令,可以讓我們看到項目的資源的分布(占用)情況:npm run build – --report

生成項目報告文件

npm run build – --report

在這里插入圖片描述

打開報告頁面

在這里插入圖片描述

1.報告頁面中,越大的塊說明這個模板占用的體積越大
2.占用體積越越大的模塊,我們要考慮不將其打包到產(chǎn)品中

cdn加速優(yōu)化

cdn: CDN的本質(zhì)上是將媒體資源,動靜態(tài)圖片(Flash),HTML,CSS,JS等等內(nèi)容緩存到距離你更近的IDC,從而讓用戶進行共享資源,實現(xiàn)縮減站點間的響應(yīng)時間等等需求,而網(wǎng)游加速器的本質(zhì)則是通過建立高帶寬機房,架設(shè)多節(jié)點服務(wù)器來為用戶進行加速。

我們可以將一些大體積的模塊,讓cdn幫我們提供相應(yīng)的資源,這樣就可以緩解我們自己的服務(wù)器的壓力,同時提供更快更好的資源響應(yīng)

vue.config.js

在腳手架項目中,如果想增加自己的項目配置,可以在根目錄下添加vue.config.js文件,在這個文件中實現(xiàn)自定義的配置

在打包的時候,這個配置會和腳手架的配置組合到一起

添加包的排除

module.exports = {
    configureWebpack: {
        externals:{
            'vue': 'Vue',
            'element-ui': 'ELEMENT',
            'quill': 'Quill'
        }
    },
}

在這里插入圖片描述

可以看到,打包后的項目體積顯著的減少,但是,問題并沒有解決,由于沒有這些包,打包后的項目并不能運行

在這里插入圖片描述

這是因為,現(xiàn)在打包的項目中,已經(jīng)沒有Vue這個包了,所以才會出現(xiàn)錯誤,我們現(xiàn)在需要使用cdn的方式來提供這些資源

添加cdn的用戶自定義

vue.config.js中加入下面代碼

let cdn = {
  css: [
    // element-ui css
    'https://unpkg.com/element-ui/lib/theme-chalk/index.css',// 樣式表
    // 富文本框插件樣式
    'https://cdn.bootcdn.net/ajax/libs/quill/2.0.0-dev.4/quill.bubble.css'
  ],
  js: [
    // vue must at first!
    'https://unpkg.com/vue/dist/vue.js', // vuejs
    // element-ui js
    'https://unpkg.com/element-ui/lib/index.js', // elementUI
    // 富文本框插件
    'https://cdn.bootcdn.net/ajax/libs/quill/2.0.0-dev.4/quill.js'
  ]
}

通過插件將資源自動的添加到頁面中

掛載資源到插件

module.exports = {
  // 添加打包排除,說明以下配置中的包將來不會打包到項目中
  configureWebpack: {
    externals:{
            'vue': 'Vue',
            'element-ui': 'ELEMENT',
            'quill': 'Quill'
        }
  },
  // 將cdn的資源掛載到插件上
  chainWebpack (config) {
    config.plugin('html').tap(args => {
      args[0].cdn = cdn
      return args
    })
  }
}

在頁面中使用插件添加指定的cdn資源,在項目中的public中index中加入下面代碼(項目打包前的index文件)

添加css引入(head結(jié)構(gòu)中)

<% for(var css of htmlWebpackPlugin.options.cdn.css) { %>
  <link rel="stylesheet" href="<%=css%>" />
<% } %>

添加js引入(body結(jié)構(gòu)中)

<% for(var js of htmlWebpackPlugin.options.cdn.js) { %>
  <script src="<%=js%>"></script>
<% } %>

重新打包,OK

設(shè)置只有產(chǎn)品階段才使用cdn

在項目開發(fā)的時候,其實沒有必要使用cdn,這樣反而會讓我們的頁面加載效率下降,同時也不適合本地開發(fā)(需要連網(wǎng))

我們可以根據(jù)環(huán)境變量進行相應(yīng)的處理,只有在產(chǎn)品的時候,才讓插件去自動注入相應(yīng)的資源文件到html頁面

const isProd = process.env.NODE_ENV === 'production' // 是否生產(chǎn)環(huán)境

let externals = {
  'vue': 'Vue',
  'element-ui': 'ELEMENT',
  'quill': 'Quill'
}


let cdn = {
  css: [
    // element-ui css
    'https://unpkg.com/element-ui/lib/theme-chalk/index.css',// 樣式表
    // 富文本框插件樣式
    'https://cdn.bootcdn.net/ajax/libs/quill/2.0.0-dev.4/quill.bubble.css'
  ],
  js: [
    // vue must at first!
    'https://unpkg.com/vue/dist/vue.js', // vuejs
    // element-ui js
    'https://unpkg.com/element-ui/lib/index.js', // elementUI
    // 富文本框插件
    'https://cdn.bootcdn.net/ajax/libs/quill/2.0.0-dev.4/quill.js'
  ]
}

cdn = isProd ? cdn : { css: [], js: [] }
externals = isProd ? externals : {}


module.exports = {
  // 添加打包排除,說明以下配置中的包將來不會打包到項目中
  configureWebpack: {
    externals
  },
  // 
  chainWebpack (config) {
    config.plugin('html').tap(args => {
      args[0].cdn = cdn
      return args
    })
  }
}

到此這篇關(guān)于vue項目打包以及優(yōu)化的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)vue項目打包以及優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 手把手帶你安裝vue-cli并創(chuàng)建第一個vue-cli應(yīng)用程序

    手把手帶你安裝vue-cli并創(chuàng)建第一個vue-cli應(yīng)用程序

    vue-cli這個構(gòu)建工具大大降低了webpack的使用難度,支持熱更新,有webpack-dev-server的支持,相當于啟動了一個請求服務(wù)器,給你搭建了一個測試環(huán)境,下面這篇文章主要給大家介紹了關(guān)于安裝vue-cli并創(chuàng)建第一個vue-cli應(yīng)用程序的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • vue.js中$set與數(shù)組更新方法

    vue.js中$set與數(shù)組更新方法

    下面小編就為大家分享一篇vue.js中$set與數(shù)組更新方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue3中ref的用法舉例總結(jié)(避免混淆)

    Vue3中ref的用法舉例總結(jié)(避免混淆)

    這篇文章主要給大家介紹了關(guān)于Vue3中ref的用法舉例總結(jié)的相關(guān)資料,ref()接受一個內(nèi)部值,返回一個響應(yīng)式的可更改的ref對象,此對象只有一個指向其內(nèi)部值的屬性.value,需要的朋友可以參考下
    2023-10-10
  • VUE 項目在IE11白屏報錯 SCRIPT1002: 語法錯誤的解決

    VUE 項目在IE11白屏報錯 SCRIPT1002: 語法錯誤的解決

    這篇文章主要介紹了VUE 項目在IE11白屏報錯 SCRIPT1002: 語法錯誤的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 在Vue中如何使用Cookie操作實例

    在Vue中如何使用Cookie操作實例

    這篇文章主要介紹了在Vue中如何使用Cookie操作實例的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 詳解Vue中的路由與多種守衛(wèi)

    詳解Vue中的路由與多種守衛(wèi)

    路由守衛(wèi)又稱導航守衛(wèi),指是路由跳轉(zhuǎn)前、中、后過程中的一些鉤子函數(shù),這篇文章主要介紹了Vue中的路由與多種守衛(wèi),需要的朋友可以參考下
    2023-02-02
  • Vuex的各個模塊封裝的實現(xiàn)

    Vuex的各個模塊封裝的實現(xiàn)

    這篇文章主要介紹了Vuex的各個模塊封裝的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Vue3+Element-plus項目自動導入報錯的解決方案

    Vue3+Element-plus項目自動導入報錯的解決方案

    vue3出來一段時間了,element也更新了版本去兼容vue3,下面這篇文章主要給大家介紹了關(guān)于Vue3+Element-plus項目自動導入報錯的解決方案,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 原生JS實現(xiàn)Vue transition fade過渡動畫效果示例

    原生JS實現(xiàn)Vue transition fade過渡動畫效果示例

    這篇文章主要為大家介紹了原生JS實現(xiàn)Vue transition fade過渡動畫效果示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Vue實現(xiàn)簡單基礎(chǔ)的圖片裁剪功能

    Vue實現(xiàn)簡單基礎(chǔ)的圖片裁剪功能

    這篇文章主要為大家詳細介紹了如何利用Vue2實現(xiàn)簡單基礎(chǔ)的圖片裁剪功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-09-09

最新評論

西青区| 长治市| 罗平县| 岳阳县| 江西省| 余姚市| 巧家县| 当雄县| 比如县| 泾阳县| 拉萨市| 南岸区| 额敏县| 铁岭市| 沁水县| 盐池县| 尖扎县| 五华县| 保康县| 泰和县| 漳平市| 兴业县| 平乡县| 汉源县| 永定县| 得荣县| 青田县| 轮台县| 清流县| 阜城县| 武宁县| 金阳县| 凌海市| 潼南县| 永安市| 无棣县| 临朐县| 会同县| 抚顺市| 东山县| 吴川市|