一次vue項(xiàng)目?jī)?yōu)化的實(shí)際操作記錄
前言
項(xiàng)目前端優(yōu)化是我們經(jīng)常需要去做的事情,今天我們就來(lái)記錄下我的實(shí)際操作。
一、CDN引入
這是一個(gè)常態(tài)化的操作了,主要是讓我們通過(guò)npm下載依賴包和import引入的文件,變成線上使用,減少打包后的文件大小。比如常用的vue、ElementUI、vuex、vue-router、axios等等一些常用的
首先在index.html文件引入
<!-- 引入樣式 -->
<link rel="stylesheet" rel="external nofollow" >
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script src="https://unpkg.com/vue-router@3.0.0/dist/vue-router.js"></script>
<script src="https://unpkg.com/vuex@4.0.0/dist/vuex.global.js"></script>
<!-- 引入組件庫(kù) -->
<script src="https://unpkg.com/element-ui@2.13.2/lib/index.js"></script>然后注釋掉import引入的

一定要把Vue.use(ElementUI)注釋
第三步,找到webpack.base.conf.js文件,在下面添加你CDN引入的依賴

vuex的store/store.js文件里面修改

router文件也需要修改

坑:
1.一定要先引入vue的,然后再加其他的,不然會(huì)報(bào)錯(cuò),找不到elementUI的標(biāo)簽名;
2.不能只引入elementUI,不引入vue,一樣會(huì)報(bào)錯(cuò);
3.我引入的vue-router的CDN,在抓包的時(shí)候發(fā)現(xiàn)居然要四點(diǎn)多秒種才下載完成,所以我就去掉了,我不知道你們會(huì)不會(huì),可以先試試。
二、gzip壓縮
首先安裝一個(gè)插件
npm install --save-dev compression-webpack-plugin
然后在config/index.js里面開(kāi)啟

然后在webpack.prod.conf.js,找到這段代碼

最后就是后端配置的問(wèn)題
瀏覽器查看請(qǐng)求頭,有下面這些標(biāo)志就是開(kāi)啟成功了

三、路由懶加載,這種最簡(jiǎn)單的了就不多說(shuō)了
const production = () => import('@/components/view/production/production')
?
{
name: '123123',
path: 'production',
component: production
},四、打包不生成map文件
config/index.js ? productionSourceMap: false,
五、router上面使用props傳參數(shù),導(dǎo)致頁(yè)面加載時(shí)間很長(zhǎng)
我在優(yōu)化一個(gè)項(xiàng)目的時(shí)候,里面有一個(gè)單點(diǎn)登陸的功能頁(yè)面。這個(gè)需要通過(guò)路由傳參數(shù),但是在首次進(jìn)入頁(yè)面的時(shí)候,瀏覽器捉包發(fā)現(xiàn)第一次請(qǐng)求的時(shí)候,打包的css一直被掛載長(zhǎng)達(dá)將近20秒。
從發(fā)現(xiàn)這個(gè)問(wèn)題開(kāi)始,我一直以為是因?yàn)閏ss文件太多,但是也就四百多kb,但是也對(duì)css文件進(jìn)行各種的優(yōu)化,拆分、減少背景圖片的引入等等,甚至使用了CDN引入了某些css文件,減少到兩百多kb最后還是一樣的問(wèn)題,就覺(jué)得不是這個(gè)問(wèn)題。
最后我們測(cè)試,正常打開(kāi)登陸頁(yè)面然后進(jìn)入頁(yè)面,是正常的不會(huì)掛載。但是使用單點(diǎn)登陸就會(huì)掛載,然后就去一個(gè)測(cè)試檢測(cè),最后發(fā)現(xiàn),只要把傳參模式修改了,就正常了?。。。。。。。。。。。。。。。。。。。。。。。。。?!
優(yōu)化前的傳參,使用了props
{
name: 'Login',
path: '/Login',
component: Login,
props: (route) => ({username: route.query.username})
},優(yōu)化后的參數(shù),直接拼在路徑后面
{
name: 'Login',
path: '/Login/:username',
component: Login,
// props: (route) => ({username: route.query.username})
},我是真的栓q!

總結(jié)
到此這篇關(guān)于vue項(xiàng)目?jī)?yōu)化的文章就介紹到這了,更多相關(guān)vue項(xiàng)目?jī)?yōu)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3中級(jí)指南之如何在vite中使用svg圖標(biāo)詳解
在以webpack為構(gòu)建工具的開(kāi)發(fā)環(huán)境中我們可以很方便的實(shí)現(xiàn)SVG圖標(biāo)的組件化,下面這篇文章主要給大家介紹了關(guān)于Vue3中級(jí)指南之如何在vite中使用svg圖標(biāo)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
vue實(shí)現(xiàn)集成騰訊TIM即時(shí)通訊
最近在做商城類的項(xiàng)目,需要使用到客服系統(tǒng),用戶選擇的騰訊IM即時(shí)通信,所以本文主要介紹了vue實(shí)現(xiàn)集成騰訊TIM即時(shí)通訊,感興趣的可以了解一下2021-06-06
Vue 2.0的數(shù)據(jù)依賴實(shí)現(xiàn)原理代碼簡(jiǎn)析
本篇文章主要介紹了Vue 2.0的數(shù)據(jù)依賴實(shí)現(xiàn)原理代碼簡(jiǎn)析,主要從初始化的數(shù)據(jù)層面上分析了Vue是如何管理依賴來(lái)到達(dá)數(shù)據(jù)的動(dòng)態(tài)響應(yīng),有興趣的可以了解一下2017-07-07
Vue?transition組件簡(jiǎn)單實(shí)現(xiàn)數(shù)字滾動(dòng)
這篇文章主要為大家介紹了Vue?transition組件簡(jiǎn)單實(shí)現(xiàn)數(shù)字滾動(dòng)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
vue-content-loader內(nèi)容加載器的使用方法
這篇文章主要介紹了vue-content-loader內(nèi)容加載器的使用方法,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08

