电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue如何提升首屏加載速度實例解析

瀏覽:135日期:2023-01-11 10:06:44

在Vue項目中,引入到工程中的所有js、css文件,編譯時都會被打包進vendor.js,瀏覽器在加載該文件之后才能開始顯示首屏。若是引入的庫眾多,那么vendor.js文件體積將會相當的大,影響首屏的體驗。

這是優化前的頁面加載狀態:執行npm run build打包項目,出來的vendeor.js文件,基本都是1M以上的的巨大文件,沒有用戶能忍受5s以上的loading而不關閉頁面的,如圖所示:

Vue如何提升首屏加載速度實例解析

當項目在掛載到服務器上,平均都是10S以上加載出來,好家伙這加載時間,仿佛過了半個世紀,很煩人,心態boom, 開發者甚至都有種想砸電腦的沖動(·#*@#¥……&*)!

我們先來分析下前端加載速度慢原因

1. 首先安裝webpack的可視化資源分析工具,命令行執行:

npm i webpack-bundle-analyzer -D

2. 然后在webpack的dev開發模式配置中,引入插件,代碼如下:

const BundleAnalyzerPlugin = require(’webpack-bundle-plugin’).BundleAnalyzerPluginplugins: [ new BundleAnalyzerPlugin()]

3. 最后命令行執行npm run build --report, 瀏覽器會自動打開分析結果,如下所示:

Vue如何提升首屏加載速度實例解析

可以看到vue全家桶相關依賴占用了很大的空間,對webpack的構建速度和網站加載速度都會有比較大的影響。單頁應用會隨著項目越大,導致首屏加載速度很慢,針對目前所暴露出來的問題,有以下幾種優化方案可以參考:

有針對性的優化方案

一、對于第三方js庫的優化,分離打包

生產環境是內網的話,就把資源放內網,通過靜態文件引入,會比node_modules和外網CDN的打包加載快很多。如果有外網的話,可以通過CDN方式引入,因為不用占用訪問外網的帶寬,不僅可以為您節省流量,還能通過CDN加速,獲得更快的訪問速度。但是要注意下,如果你引用的CDN 資源存在于第三方服務器,在安全性上并不完全可控。

目前采用引入依賴包生產環境的js文件方式加載,直接通過window可以訪問暴露出的全局變量,不必通過import引入,Vue.use去注冊

在webpack的dev開發配置文件中, 加入如下參數,可以分離打包第三方資源包,key為依賴包名稱,value是源碼拋出來的全局變量。如下圖所示,可以看到打包后vue相關資源包已經排除在外了。對于一些其他的工具庫,盡量采用按需引入的方式。

externals: { vue: ’Vue’, vuex: ’Vuex’, ’vue-router’: ’VueRouter’, axios: ’axios’, ’element-ui’: ’ELEMENT’

Vue如何提升首屏加載速度實例解析

二、vue-router使用懶加載

在訪問到當前頁面才會加載相關的資源,異步方式分模塊加載文件,默認的文件名是隨機的id。如果在output中配置了chunkFilename,可以在component中添加WebpackChunkName,是為了方便調試,在頁面加載時候,會顯示加載的對應文件名+hash值,如下圖:

{ path: ’/Login’, name: ’Login’, component: () = >import( /* webpackChunkName: 'Login' */ ’@/view/Login’)}

Vue如何提升首屏加載速度實例解析

三、圖片資源的壓縮,icon資源使用雪碧圖

嚴格說來這一步不算在編碼技術范圍內,但是卻對頁面的加載速度影響很大。對于所有的圖片文件,都可以在一個叫tinypng的網站上去壓縮一下。網址:tinypng.com/,對頁面上使用到的icon,可以使用在線字體圖標,或者雪碧圖,將眾多小圖標合并到同一張圖上,用以減輕http請求壓力。然后通過操作CSS的background屬性,控制背景的位置以及大小,來展示需要的部分。

四、開啟gizp壓縮

gizp壓縮是一種http請求優化方式,通過減少文件體積來提高加載速度。html、js、css文件甚至json數據都可以用它壓縮,可以減小60%以上的體積。前端配置gzip壓縮,并且服務端使用nginx開啟gzip,用來減小網絡傳輸的流量大小。

命令行執行:npm i compression-webpack-plugin -D

在webpack的dev開發配置文件中加入如下代碼:

const CompressionWebpackPlugin = require(’compression-webpack-plugin’)plugins: [ new CompressionWebpackPlugin()

啟用gzip壓縮打包之后,會變成下面這樣,自動生成gz包。目前大部分主流瀏覽器客戶端都是支持gzip的,就算小部分非主流瀏覽器不支持也不用擔心,不支持gzip格式文件的會默認訪問源文件的,所以不要配置清除源文件。

Vue如何提升首屏加載速度實例解析

配置好之后,打開瀏覽器訪問線上,F12查看控制臺,如果該文件資源的響應頭里顯示有Content-Encoding: gzip,表示瀏覽器支持并且啟用了Gzip壓縮的資源

Vue如何提升首屏加載速度實例解析

Vue如何提升首屏加載速度實例解析

五、webpack相關配置優化

(1)使用uglifyjs-webpack-plugin插件代替webpack自帶UglifyJsPlugin插件來壓縮JS文件;生產環境關閉源碼映射,一方面能減少代碼包的大小,另一方面也有利于系統代碼安全;清除打印日志和debugger信息;配置SplitChunks 抽取公有代碼,提升你的應用的性能

(2)使用mini-xss-extract-plugin提取CSS 到單獨的文件, 并使用optimize-css-assets-webpack-plugin來壓縮CSS文件 。

六、前端頁面代碼層面的優化

(1)合理使用v-if和v-show

(2)合理使用watch和computed

(3)使用v-for必須添加key, 最好為唯一id, 避免使用index, 且在同一個標簽上,v-for不要和v-if同時使用

(4)定時器的銷毀。可以在beforeDestroy()生命周期內執行銷毀事件;也可以使用$once這個事件偵聽器,在定義定時器事件的位置來清除定時器。詳細見vue官網

最終優化后的效果如下圖:vendor.js文件從1M以上優化到256K左右,體積減少接近80%,排除服務器影響的因素,界面渲染速度基本都在1s左右,達到秒開效果,比之前快了太多,體驗一下就上來了嘻嘻。

Vue如何提升首屏加載速度實例解析

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: 流量卡中心-流量卡套餐查询系统_移动电信联通流量卡套餐大全 | 山东臭氧发生器,臭氧发生器厂家-山东瑞华环保设备 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 东莞市海宝机械有限公司-不锈钢分选机-硅胶橡胶-生活垃圾-涡电流-静电-金属-矿石分选机 | 工业制氮机_psa制氮机厂家-宏骁智能装备科技江苏有限公司 | 挤奶设备过滤纸,牛奶过滤纸,挤奶机过滤袋-济南蓝贝尔工贸有限公司 | 中山市派格家具有限公司【官网】 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 正压送风机-多叶送风口-板式排烟口-德州志诺通风设备 | 地图标注|微信高德百度地图标注|地图标记-做地图[ZuoMap.com] | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 高压负荷开关-苏州雷尔沃电器有限公司 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | 高柔性拖链电缆-聚氨酯卷筒电缆-柔性屏蔽电缆厂家-玖泰电缆 | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 北京律师咨询_知名专业北京律师事务所_免费法律咨询 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 迪威娱乐|迪威娱乐客服|18183620002| 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 福州仿石漆加盟_福建仿石漆厂家-外墙仿石漆加盟推荐铁壁金钢(福建)新材料科技有限公司有保障 | 桌上式超净工作台-水平送风超净工作台-上海康路仪器设备有限公司 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | WTB5光栅尺-JIE WILL磁栅尺-B60数显表-常州中崴机电科技有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 |