關於nuxtjs配置webp的信息

本文目錄一覽:

NUXT項目打包優化策略

用nuxt開發完項目之後,開開心心打包扔上伺服器準備收工,卻沒多久,測試童鞋遺憾的告訴我,壓測50並發未通過。what?好吧。咱們再接下來老老實實的研究怎麼壓縮打包優化性能。

性能優化,無外乎那幾個方案:文件壓縮,文件緩存,CDN,DNS 預解析。。。

這裡我們首先看一下不加任何優化的項目,打包後的分布:

這裡能看到element-ui佔了絕大部分的打包空間,是因為全局引入了element-ui,所以即使我們只使用了一部分的elemnt組件,但仍然把整個element給打包進來了。

所以這裡有一個可以優化的點: 只引入element使用的組件,這樣在打包的時候只需要打包使用的組件,體積就會減小很多 。

我們再來看看這麼處理之後,我們打包出來的效果:

可以看出,我們減少了將近 400kb 的體積,效果十分顯著。

好了,我又自信滿滿的把包丟到伺服器上,準備金盆洗手。?

然鵝沒過多久,運維童鞋發過來一張圖把我打回原點。

我看了一下vendor.app.js,足有501kb,難怪會阻塞?♀️好吧,這裡應該使用上文件壓縮這桿大槍了。

nuxt本身就是基於webpack的,正好安裝compression-webpack-plugin來對文件進行壓縮。

首先安裝npm install compression-webpack-plugin

然後在nuxt.config.js中:

const CompressionPlugin = require(‘compression-webpack-plugin’);

module.exports={

    build: {

        plugins: [

          new CompressionPlugin({

            test: /\.js$|\.html$|\.css/, // 匹配文件名

            threshold: 10240, // 對超過10kb的數據進行壓縮

            deleteOriginalAssets: false // 是否刪除原文件

          })

        ],

    }

}

這樣打包出來的大小雖然沒變,但是點擊.nuxt-dist-client中你會發現

觀察發現gz打包後,較原來的文件減少了3/4的體積。有了這些gz後綴的文件,再配合nginx打開gzip服務。我想這回應該可以衝過50並發了吧,說不定200並發都沒問題???

好了,我這回真的自信滿滿的把包丟到伺服器上,通知測試童鞋再次壓測,果不其然,測試童鞋過了一會回復:50並發跑5次無異常。??我大氣說,上100!我翹著得意的二郎腿,等著好消息再次到來。過了一會,果不其然!測試童鞋告訴我,100並發阻塞。原因同上,出在了vendor.app.js上?

這裡我說一下vendor.app.js打包之後的體積是144kb。然鵝在高並發下,表現還是不理想,於是乎我只能上網去到處搜索解決方案,畢竟po主的webpack知識也就那麼一勺水的深度?♀️?♀️

這裡還真讓我找到了一個台灣的網站,可見參考鏈接第三條。

splitChunks: 設定 Chunks 的最大和最小 size。

在nuxt.config.js中加入:

module.exports={

    build: {

        optimization: {

              splitChunks: {

               minSize: 10000,

                maxSize: 250000

              }

        },

    }

}

打包,觀察打包結果:

可以看到雖然包體積雖然沒變,但是像vendor.app.js這種單個體積大的被拆分成n個體積小的文件了。

這回終於是可以突破100並發5次無異常,達成並發要求了????

總結一下,其實po主也不是什麼webpack大神,也是摸爬滾打整出來的,大家如果能有什麼更好的優化建議或者指教,請多多交流,不對之處我會改正!

參考: 

Nuxt 項目性能優化調研

NUXT項目的性能優化

SplitChunks Lodash Vuetify tree shaking

nuxt-generate 靜態站

nuxt generate部署靜態站

在nuxt.config.js配置頁面路徑

默認情況下,運行nuxt generate將為每個路由創建一個目錄並生成index.html文件。

在nuxt.config.js里generate選項里配置

subFolders: flase

設置為false時,將根據路由路徑生成HTML文件

部署後項目會生成dist目錄,直接打開對應的html文件 ,可能會出現圖片不顯示,不用管 部署到伺服器後就不會有這個問題。

Vue-awesome-swiper使用教程

github地址:

Ⅰ. 什麼是Nuxt.js:

Nuxt.js 是一個基於 Vue.js 的通用應用框架,通過對客戶端/服務端基礎架構的抽象組織,預設了利用 Vue.js 開發服務端渲染的應用所需要的各種配置。(開箱即用)

官方地址:

Ⅱ. Nuxt安裝使用

Ⅲ. Nuxt模板目錄結構分析

重點關注 :components、layouts、pages、plugins、nust.config.js目錄及文件

Ⅳ.Nuxt路由

➀.pages目錄結構自動生成對應的路由配置

➁路由跳轉

注意 :不能用a標籤代替nuxt-link組件,雖然最終的顯示效果一樣,但是a標籤會刷新頁面

③動態路由

④路由參數校驗

Nuxt.js 可以讓你在動態路由對應的頁面組件中配置一個 validate 方法用於校驗動態路由參數的有效性。該函數有一個布爾類型的返回值,如果返回true則表示校驗通過,如果返回false則表示校驗未通過。

⑤嵌套路由

Ⅴ.布局組件

特殊的布局組件 :error布局組件(error是關鍵字,只能取這個名字)

Ⅵ.設置全局樣式

Ⅶ.ElementUI使用

測試的時候不要范如下錯誤 :

Ⅷ.發送請求

➀.生命周期函數:

在nuxt中,只有created以及beforeCreate兩個能夠在服務端正常使用

但是發非同步請求不能在created生命周期函數中去發送,因為它會在前端執行(列印一下,發送前端和伺服器端都會有列印信息)

那麼如何發送非同步請求呢?

➁.asyncData的方法:可以在服務端或路由更新之前被調用, 需要注意這個函數中 不能 使用 this

③. axios的使用

Ⅸ.SEO優化

➀.全局優化:在nuxt.config.js配置文件中修改

➁.局部優化:去每個頁面直接加入head() 方法

Ⅹ.實戰項目:豆瓣電影小案例

➀.案例源碼:

複製這段內容後打開百度網盤手機App,操作更方便哦

鏈接:

提取碼:iqjb

➁.獲取源碼後項目跑動

後記: 解決SEO問題不一定非得用服務端渲染來處理,特別是項目已經開發完畢,突然告訴你添加個SEO優化,這時候可以考慮vue-meta-info ,官方地址:

Vue SSR 項目 Nuxt.js 框架之《如何引入第三方UI框架element-ui》

在項目開發中引入第三方 UI框架 再平常不過,那 nuxt 該如何引入呢?我們以 Elemeng-ui 為例,具體看下在 nuxt 中配置與使用的步驟是怎樣的。

需在 plugins 文件夾里創建一個 element-ui.js 文件,內容如下:

在 nuxt 項目中如何使用 scss ?與 Vue 中使用的有和不同?也簡單,只是配置上略有不同,使用上沒有不同。先安裝 node-sass sass-loader ,如下:

安裝成功後,就可以在頁面里使用 scss 了,無需任何配置,如下:

第一步:安裝 @nuxtjs/style-resources

第二步:配置 nuxt.config.js

項目重啟後就可以了,歡迎留言 評論

nuxt.js 簡述

vue單頁面應用渲染是從伺服器獲取所需js,在客戶端將其解析生成html掛載於

id為app的DOM元素上,這樣會存在兩大問題。

除此之外,nuxt與vue還有一些其他方面的區別。

下圖為關於nuxt的簡單概述

vue文件中可直接使用

sass文件如需解析,nuxt.config.js中配置css屬性

封裝axios,解決每個請求前加baseURL

plugins/axios.js

index.vue

為避免每個頁面都引入moment,執行 moment.locale(‘zh-cn’) ,可將其定義為全局方法

icon.png文件存放在static文件夾下,nuxt.config.js中配置head屬性

中間件存放於middleware文件夾下,按使用場景可分為全局中間件和單頁面中間件

中間件執行流程順序:

nuxt.config.js – 匹配布局 – 匹配頁面

按照index.vue通過 require(‘mini-toastr’) 引入miniToastr,運行程序報錯如下

列印miniToastr發現為一Module對象,init掛載在其default屬性上

所以修改引入方法為

為什麼需要require().default

關於如上介紹,測試關於兩種模塊的導出方法

方式一:export default

新建test.js文件

vue頁面導入

此時 require(‘~/plugins/con.js’) 列印為

方式二:module.exports

此時 require(‘~/plugins/con.js’) 列印為

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152029.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-12 00:54
下一篇 2024-11-12 00:54

相關推薦

  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27
  • Dapper使用getschema獲取表信息

    本文旨在介紹Dapper中使用getschema獲取表信息的方法和注意事項。 一、獲取某張表的所有列信息 使用Dapper獲取某張表信息,可以使用 `IDbConnection.G…

    編程 2025-04-27
  • 通過提交信息搜索-使用git

    本篇文章重點講解如何使用git通過提交信息來搜索。我們將從多個方面介紹如何使用git來搜索提交信息,並提供相應的代碼示例以供參考。 一、搜索方式 Git提供了三種搜索方式,分別為:…

    編程 2025-04-27
  • 已裝備我軍的空中信息化作戰平台

    本文將會從多個方面詳細闡述已裝備我軍的空中信息化作戰平台。 一、平台概述 已裝備我軍的空中信息化作戰平台是一個全新的作戰系統,具備實時數據採集、處理、分析、共享的能力。它可以在不同…

    編程 2025-04-27
  • Linux查看系統信息

    一、CPU信息 Linux系統下,查看CPU的信息最常用的命令是lscpu。該命令可以顯示CPU架構、核心數量、線程數、緩存大小、CPU頻率等信息。例如: lscpu 該命令會輸出…

    編程 2025-04-24
  • 軟考 信息安全工程師

    軟考 信息安全工程師是一項技能型國家級資格認證考試,主要測試考生在信息安全領域的理論知識和實踐技能,是證明個人信息安全能力的重要證書。本文將從多個方面對軟考 信息安全工程師做詳細的…

    編程 2025-04-23

發表回復

登錄後才能評論