vue.config.js中modules屬性替換爲requireModuleExtension致使element樣式不生效

最近在起一個老項目時,編譯報錯,提示modules屬性已失效,請替換爲requireModuleExtension,當時想都沒想就直接把modules字段替換成了requireModuleExtension,也沒想着去翻閱一下官網更改以後的這個屬性如何設置,設置以下:css

css: {
    // 是否使用css分離插件 ExtractTextPlugin
    // extract: true, //註釋css熱更新生效
    // 開啓 CSS source maps?
    sourceMap: false,
    // css預設器配置項
    loaderOptions: {},
    // 啓用 CSS modules for all css / pre-processor files.
    // modules: false
    requireModuleExtension: false
}複製代碼

後來就發現一個問題,項目中element組件樣式不生效,開始還沒往這個屬性修改上去想,想着是別人寫的項目代碼,多是哪邊引用有問題,檢查來檢查去死活又查不出代碼上的問題,這時就以爲事情有點詭異了,冷靜了一下子以後就查看本身修改了哪裏,發現把requireModuleExtension屬性註釋掉就行了,本着不懂就要搞清楚的思想,去官網查了一下這個屬性設置,官網是這個介紹的看到了吧,requireModuleExtension跟modules正好是相反的。設置成requireModuleExtension: true就能夠了。
至於爲何設置成requireModuleExtension: true會致使樣式不生效,大體緣由是這樣的, css modules會將style中的類名編譯成一個哈希字符串,dom中使用對應的style.xxx這種語法時會被編譯成對應的哈希字符串,這樣的作法能夠避免樣式污染,若是dom中沒有按照style.xxx的模式去編寫的話最終結果就是dom中的chass沒有被編譯成hash字符串,所以類名對不上會致使樣式不生效。dom

相關文章
相關標籤/搜索