VUE 項(xiàng)目?jī)?yōu)化 - 減小moment體積试幽,IE11支持究西,ant-Design, 減小首頁(yè)體積

原文鏈接: https://wuweijun.cn/2020/11/vue-cli-moment-ie11-ant-design/#more

減小moment.js的體積

一般如果項(xiàng)目引入了moment.js或者引入的某個(gè)第三方插件包使用了moment.js锄列, 通常情況下图云,會(huì)全部引入了所有語(yǔ)言包,體積過大右蕊,我們需按需引入琼稻,只打包我們需要的語(yǔ)言包,默認(rèn)引入英文饶囚。

image-20201124101802966

在vue.config.js中添加配置帕翻,

const webpack = require('webpack');

module.exports = {
// ******
configureWebpack: {
// externals:['moment'], //項(xiàng)目中引用了moment 不能使用
plugins:[
new webpack.ContextReplacementPlugin(/moment[/\]locale$/, /zh-cn/) //減小moment語(yǔ)言包體積
],
//省略其他配置*******
}
//省略其他配置*******
}

配置后,只保留了中文

image-20201125140757092

當(dāng)然更好的方案是使用現(xiàn)在新的庫(kù)替代moment萝风,如果情況允許的話嘀掸,比如:day.jsdate-fns规惰;因?yàn)橛行├系牟寮撬瑤?kù)會(huì)依賴moment,因此我們做選擇的時(shí)候就應(yīng)該考慮到這點(diǎn)歇万。

適配IE11 antd IE11下有問題

我們項(xiàng)目是由我?guī)е盅邪l(fā)小伙伴加外包一起弄的揩晴,我的首頁(yè)比較簡(jiǎn)單沒有引入大型框架,然而我們其他頁(yè)面引用了贪磺,雖然也是按需引入硫兰,但是ant-design本身確實(shí)存在些問題。

某些組件寒锚,比如manu在 IE下會(huì)報(bào)錯(cuò)

[Vue warn]: Error in render: “ReferenceError: “Symbol”未定義”劫映;

這是由于antd本身寫法是基于ES的Symbol,但是我們打包編譯沒有把這些高級(jí)語(yǔ)法轉(zhuǎn)換成瀏覽器支持的語(yǔ)法刹前,谷歌火狐都支持了該語(yǔ)法但是IE 并沒有泳赋,所有我們需要使用Babel去轉(zhuǎn)換。

image-20201125145252474

添加polypill

看我們的小伙伴是直接在main.js里直接引入了core-js/stable 和 regenerator-runtime/runtime喇喉, 也沒注釋祖今,不夠優(yōu)雅,趁現(xiàn)在有點(diǎn)時(shí)間轧飞,想改改衅鹿。

import 'core-js/stable';
import 'regenerator-runtime/runtime';

因?yàn)槲覀兪褂玫氖莢ue的官方腳手架vue-cli,因此去查看官方文檔过咬,看到瀏覽器兼容性這一塊大渤,有可配置的項(xiàng),

https://cli.vuejs.org/zh/guide/browser-compatibility.html#browserslist

里面講得很清楚掸绞,我們可以選擇配置browserslist泵三, transpileDependencies耕捞,polyfills等 有三種方式,根據(jù)自身需要去配置:

如果你想直接轉(zhuǎn)換某些第三方?jīng)]有轉(zhuǎn)換的依賴烫幕,比如我們明確得知道了and的包語(yǔ)法需要轉(zhuǎn)譯俺抽,因此我們可以直接添加配置:

transpileDependencies

  • Type: Array<string | RegExp>
  • Default: []
默認(rèn)情況下 `babel-loader` 會(huì)忽略所有 `node_modules` 中的文件。如果你想要通過 Babel 顯式轉(zhuǎn)譯一個(gè)依賴较曼,可以在這個(gè)選項(xiàng)中列出來磷斧。

module.exports = {
// babel polyfill 適配IE11
transpileDependencies: [
'@ant-design',
'ant-design-vue'
],
//******
}

這樣我們?cè)贗E下就不會(huì)報(bào)錯(cuò)了,已經(jīng)進(jìn)行了polyfill捷犹。

ant-design 的 icons/lib 包全量引入了弛饭,還沒處理成功

按照antd官網(wǎng)的issue討論的結(jié)果去嘗試了下,沒成功???♂?

https://github.com/ant-design/ant-design/issues/12011

https://github.com/ant-design/ant-design/issues/26371

https://stackoverflow.com/questions/48721290/ant-design-huge-imports

按照各位網(wǎng)友提供的新建了個(gè)icons.js export { ****}

然后配置了別名指向萍歉,一直報(bào)沒有該模塊侣颂,奇怪,不過我使用的ant-design-vue枪孩,沒有使用ant-design, 只是也會(huì)去引用@ant-design/icons憔晒;

module.exports = {
//...
resolve: {
alias: {
"@ant-design/icons/lib/dist$": path.resolve(__dirname, "./src/icons.js")
}
}
};

感覺是ant-design-vue的問題,它的官網(wǎng)也寫了蔑舞,

更多討論可參考:#10353拒担。

?? 1.2.0 之后我們?nèi)恳肓怂袌D標(biāo),導(dǎo)致 ant-design-vue 默認(rèn)的包體積有一定增加攻询,我們會(huì)在不遠(yuǎn)的未來增加新的 API 來實(shí)現(xiàn)圖標(biāo)的按需使用澎蛛,更多相關(guān)討論可關(guān)注:#12011。在此之前蜕窿,你可以通過來自社區(qū)同學(xué)的 webpack 插件將圖標(biāo)文件拆分。

然后試了下 這個(gè)推薦的插件呆馁,原理也只是拆分包而已桐经,并沒有減小體積;但也沒成功浙滤,竟然報(bào)react的antd包不存在???♂?阴挣,請(qǐng)求暫停~

現(xiàn)在還有另外兩條路纺腊,降低版本畔咧,或者等待升級(jí)版本∫灸ぃ坑 體積大了好幾百K誓沸,gzip也多了147k。

image-20201125171758286

拆分包壹粟,減小首頁(yè)加載體積

一般的拜隧,我們開發(fā)的時(shí)候就已經(jīng)根據(jù)不同的模塊拆分不同的包,路由懶加載等,vue-cli提供了便捷的方式洪添,只需我們?cè)谂渲寐酚傻臅r(shí)候動(dòng)態(tài)引入:

路由懶加載

{
path: '/模塊a/home',
name: 'home',
component: () => import(/* webpackChunkName: "模塊a" */ '@/views/Home.vue') //可以指定打包的模塊名垦页,將相同的模塊的路由打包到同一個(gè)chunk
},

https://router.vuejs.org/zh/guide/advanced/lazy-loading.html#%E6%8A%8A%E7%BB%84%E4%BB%B6%E6%8C%89%E7%BB%84%E5%88%86%E5%9D%97

減少全局引入

減少全局引入的CSS,js干奢,以及某些首頁(yè)沒有使用的組件庫(kù)痊焊;

這需要我們編寫的時(shí)候要拆分好各個(gè)模塊,c s s也是按照不同的功能忿峻,不同的模塊去拆分薄啥,需要覆蓋樣式的話,也可以在頁(yè)面里面去import炭菌;js也一樣罪佳,還有某些模塊,比如我寫的首頁(yè)其實(shí)是沒有依賴大型框架的黑低,沒有ant-design-vue赘艳,但是我們寫其他模塊的小伙伴引用了(歷史原因,我們本來是說要獨(dú)立幾個(gè)小項(xiàng)目克握,后面需要合一起蕾管,然后那段時(shí)間我請(qǐng)假了,別人合的菩暗,此處甩了個(gè)鍋)掰曾,而且是在main.js入口文件直接全局引入,雖然是按需引入停团,但也是增加了第一次加載的chunk體積旷坦;

import { Button,
Menu,
Select,
//****

} from 'ant-design-vue';//TODO: 組件引用時(shí)引入,減小首頁(yè)加載大小
Vue.use(Button);
Vue.use(Menu);
Vue.use(Select);

我們需要在使用的頁(yè)面或組件里面去引入

某頁(yè)面的.vue

import { Button } from 'ant-design-vue'
export default {
name:'aptReport',
components:{
Button
}
///*******
}

總的來說佑稠,如非必要秒梅,盡量避免在入口文件全局引入

這樣的話舌胶,總體體積可能會(huì)增加捆蜀,但是首頁(yè)的會(huì)減小,首頁(yè)的響應(yīng)時(shí)間也會(huì)更快幔嫂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辆它,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子履恩,更是在濱河造成了極大的恐慌锰茉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件切心,死亡現(xiàn)場(chǎng)離奇詭異洞辣,居然都是意外死亡咐刨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門扬霜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來定鸟,“玉大人,你說我怎么就攤上這事著瓶×瑁” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵材原,是天一觀的道長(zhǎng)沸久。 經(jīng)常有香客問我,道長(zhǎng)余蟹,這世上最難降的妖魔是什么卷胯? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮威酒,結(jié)果婚禮上窑睁,老公的妹妹穿的比我還像新娘。我一直安慰自己葵孤,他們只是感情好担钮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尤仍,像睡著了一般箫津。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宰啦,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天苏遥,我揣著相機(jī)與錄音,去河邊找鬼赡模。 笑死暖眼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纺裁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼司澎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼欺缘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挤安,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤谚殊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蛤铜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫩絮,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丛肢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剿干。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜂怎。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖置尔,靈堂內(nèi)的尸體忽然破棺而出杠步,到底是詐尸還是另有隱情,我是刑警寧澤榜轿,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布幽歼,位于F島的核電站,受9級(jí)特大地震影響谬盐,放射性物質(zhì)發(fā)生泄漏甸私。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一飞傀、第九天 我趴在偏房一處隱蔽的房頂上張望皇型。 院中可真熱鬧,春花似錦助析、人聲如沸犀被。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)寡键。三九已至,卻和暖如春雪隧,著一層夾襖步出監(jiān)牢的瞬間西轩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工脑沿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留藕畔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓庄拇,卻偏偏與公主長(zhǎng)得像注服,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子措近,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容