vue動(dòng)態(tài)加載scss文件

前言:公司的首頁大屏要求做三個(gè)分辨率的版本,分別是1920*1080、3840*2160、6240*2160。在最初的設(shè)計(jì)稿1920*1080版本和6240*2160版本還是相差很大,就沒有做適配之類的,然后搭了三個(gè)項(xiàng)目。后面趕項(xiàng)目,說3840*2160版本的舍棄,保留1920*1080和6240*2160的,然后保留兩版的展示內(nèi)容也漸漸要求一致。在后面產(chǎn)品要求調(diào)整內(nèi)容或者添加功能時(shí),就想兩個(gè)項(xiàng)目的js和html是一樣,可不可以就一個(gè)項(xiàng)目,然后用一個(gè)參數(shù)控制引入不同版本的scss,以減少工作量。因?yàn)楹竺孀鲋鲋?,又要?840*2160版本的加上來,就把這個(gè)想法付出實(shí)踐。

????????本來是打算用import()導(dǎo)入,不過一直報(bào)錯(cuò)”Cannot read property ‘range’of null”,就用require導(dǎo)入了。
????????使用require導(dǎo)入的樣式,所以不存在單個(gè)vue文件獨(dú)享的scss樣式,會有少量同名的class樣式會相互影響,即使兩者前面有不同的class名做限制,只能設(shè)置不同的名字。在使用第三方提供的框架,少量樣式無法使用滲透修改,比如字體顏色與大小,自己只好去實(shí)現(xiàn)這部分的內(nèi)容。
????????本來打算直接全局混入的,Vue.mixins,結(jié)果報(bào)錯(cuò),由于我部分文件也有用到mixins就只能一個(gè)個(gè)文件自己添加mixins,然后需要導(dǎo)入不同樣式的vue文件里設(shè)置currentFileSrc的值為對應(yīng)樣式文件的路徑。

????????因?yàn)槭鞘褂胷equire導(dǎo)入的文件,第一點(diǎn)就不滿足,。。。

????????一開始覺得打不打包兩套樣式文件無所謂,不打包只是性能沒有那么好而已,直到打包讓他們發(fā)布后才發(fā)現(xiàn)1920版本的樣式應(yīng)用了部分6240版本的樣式,看著本地正常,線上樣式錯(cuò)亂有點(diǎn)搞不懂。
????????后面想,本地使用動(dòng)態(tài)引入,不會存在1920版本和6240版本樣式混合在一起的狀態(tài)。而webpack同時(shí)打包1920版本和6240版本的樣式,兩者對應(yīng)的class名都是一樣,所以樣式是兩者的混合。

????????以下內(nèi)容為webpack不打包對應(yīng)版本的嘗試:
????????方法一:externals
????????externals是用來不打包模塊、第三方庫,不適用

????????方法二:copy-webpack-plugin
????????看了百度上的描述,其作用是不打包直接輸出到打包后的文件夾下,不適用。

????????就可以正常加載了,不理解。。。

????????感覺這些路徑都少了\\來代表過濾的文件夾,因?yàn)?240版本使用的scss文件放在index6240文件夾下,webpack會不會過濾掉了以....\\index為前綴的文件,包括...\\index6420\\?后面給路徑加上\\,打包后發(fā)布,6240版本的樣式正常了。

參考:webpack tree shaking不生效的坑

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容