前端模塊化依賴(lài)的主流庫(kù)也就數(shù)國(guó)內(nèi)的Seajs和國(guó)外的requirejs,這里就不陳述。采用了Seajs作為模塊管理器,zepto作為基礎(chǔ)庫(kù)文件,lib主要包含了項(xiàng)目中用到的主流第三方庫(kù)文件。
我們知道模塊化帶來(lái)的最大弊端便是HTTP請(qǐng)求數(shù)增加,所以上線(xiàn)的時(shí)候必須合并文件。下圖中的package模塊是文件大集合,打包了很多個(gè)JS模塊,除去上圖中的基礎(chǔ)庫(kù)文件和業(yè)務(wù)模塊層,在上線(xiàn)的時(shí)候大部分文件都被打包在package.js里。
性能優(yōu)化 網(wǎng)站優(yōu)化 網(wǎng)站代碼優(yōu)化 網(wǎng)站性能優(yōu)化
大部分頁(yè)面的JS請(qǐng)求是這樣的:
性能優(yōu)化 網(wǎng)站優(yōu)化 網(wǎng)站代碼優(yōu)化 網(wǎng)站性能優(yōu)化
細(xì)心點(diǎn)的同學(xué)可能注意到兩個(gè)問(wèn)題:文件的大小和加載時(shí)間。剛才的截圖還是在PC端截取的,手機(jī)和不同網(wǎng)絡(luò)環(huán)境的表現(xiàn)會(huì)更加糟糕。
現(xiàn)在來(lái)看下目錄
性能優(yōu)化 網(wǎng)站優(yōu)化 網(wǎng)站代碼優(yōu)化 網(wǎng)站性能優(yōu)化
存在的問(wèn)題:
目錄看起來(lái)算規(guī)范,但實(shí)際上是公共的和業(yè)務(wù)的混在一塊。
大部分文件合并在一個(gè)文件,合并策略不合理。
由第二點(diǎn)引發(fā)的第三個(gè)問(wèn)題,發(fā)布上線(xiàn)時(shí),只要兩人發(fā)布涉及到package文件,沖突必然發(fā)生。
發(fā)布時(shí)需要down下上一次的文件,對(duì)照合并的新文件,以免發(fā)錯(cuò)。
注意,第四點(diǎn)是人工。一不小心發(fā)錯(cuò),或者把他人剛發(fā)布的文件覆蓋了,這種事情發(fā)生10+次。
只有一臺(tái)測(cè)試機(jī)器,測(cè)試環(huán)境經(jīng)常覆蓋是常事。
版本控制問(wèn)題,不以SVN為版本,而是預(yù)發(fā)布機(jī)器上代碼,管理混亂