最近在看一篇微前端的文章的時候,看到了這么一個評論,瞬間引起了我的求知欲,這個評論是這樣的:可能有些人不知道微前端是啥,也不知道 主應用 和 子應用 是啥,我畫一個圖給大加簡單展示一下吧:在這里再說一下 vue 文件" />

日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Vue 的 style 加了 scoped 也會樣式沖突?可怕!

來源: 責編: 時間:2024-03-22 17:42:03 183觀看
導讀太細了!
最近在看一篇微前端的文章的時候,看到了這么一個評論,瞬間引起了我的求知欲,這個評論是這樣的:可能有些人不知道微前端是啥,也不知道 主應用 和 子應用 是啥,我畫一個圖給大加簡單展示一下吧:在這里再說一下 vue 文件

太細了!

最近在看一篇微前端的文章的時候,看到了這么一個評論,瞬間引起了我的求知欲,這個評論是這樣的:PMO28資訊網——每日最新資訊28at.com

PMO28資訊網——每日最新資訊28at.com

可能有些人不知道微前端是啥,也不知道 主應用 和 子應用 是啥,我畫一個圖給大加簡單展示一下吧:PMO28資訊網——每日最新資訊28at.com

PMO28資訊網——每日最新資訊28at.com

在這里再說一下 vue 文件的 scoped style 是怎么做到樣式隔離的,其實就是 vue解析器 在解析 vue 文件的時候,會通過內部的一種計算方法(怎么算的后面會說),給每一個 vue 文件的 html 標簽加上 data-v-xxx 這樣的屬性,接著通過屬性選擇器 ,來進行樣式隔離,也叫樣式模塊化。PMO28資訊網——每日最新資訊28at.com

PMO28資訊網——每日最新資訊28at.com

PMO28資訊網——每日最新資訊28at.com

PMO28資訊網——每日最新資訊28at.com

回到剛剛那個問題,微前端項目中的 主項目 和 子項目 由于存在了相同相對路徑的 vue 文件,導致了兩個項目的兩個 vue 文件的樣式產生了沖突~PMO28資訊網——每日最新資訊28at.com

所以,我們可以初步知道了,data-v-xxx這個屬性是根據 vue文件相對路徑去計算出來的。但這也只是初步而已,具體我們還得去看一下源碼才行,這樣才能鍛煉我們解決問題的能力~PMO28資訊網——每日最新資訊28at.com

Vue2 和 Vue3 的計算方式大差不差

1.簡單看源碼

先來看看 Webpack + vue-loader 對 Vue2 是怎么處理的,源碼鏈接:https://github.com/vuejs/vue-loader/blob/8357e071c45e77de0889a9feedf2079a327f69d4/src/index.ts#L142PMO28資訊網——每日最新資訊28at.com

PMO28資訊網——每日最新資訊28at.com

再來看看 vite + @vitejs/plugin-vue 對于 Vue3是怎么處理的,源碼鏈接:https://github.com/vitejs/vite-plugin-vue/blob/main/packages/plugin-vue/src/utils/descriptorCache.tsPMO28資訊網——每日最新資訊28at.com

PMO28資訊網——每日最新資訊28at.com

2.開發環境 & 生產環境

其實兩種的解析方式大差不差,總結為以下:PMO28資訊網——每日最新資訊28at.com

  • 開發環境: 根據文件的相對路徑進行計算data-v-xxx
  • 生產環境: 根據與文件的相對路徑 + 文件內容進行計算 data-v-xxx

所以可以看出在開發環境和生產環境的時候,都有可能兩個 vue 文件的 scoped style 樣式發生沖,雖然這只是比較邊界的情況~PMO28資訊網——每日最新資訊28at.com

為什么生產環境不把文件內容加入計算呢?我想應該是因為開發階段文件內容變化的比較頻繁,所以如果把文件內容加入計算的話,勢必會造成構建時間的加長。PMO28資訊網——每日最新資訊28at.com

如何防樣式沖突?

雖然 scoped style 發生樣式沖突只是小概率事件,但是我們也得思考一下怎么去避免呢?PMO28資訊網——每日最新資訊28at.com

掘金有一個大佬,給 Vue 官方提了一個 PR,就是在計算 data-v-xxx的時候,加入 package.json 的 name進行計算,也就是項目名,這樣能防止兩個不同項目之間的樣式沖突~PMO28資訊網——每日最新資訊28at.com

大佬牛啊!!!PMO28資訊網——每日最新資訊28at.com

PMO28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-78653-0.htmlVue 的 style 加了 scoped 也會樣式沖突?可怕!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 為什么都說 HashMap 是線程不安全的?

下一篇: 使用 Node.js 和 htmx 構建全棧 CRUD 應用程序

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 北宁市| 萨嘎县| 霸州市| 陇川县| 文化| 化德县| 城固县| 陆丰市| 墨玉县| 平和县| 措勤县| 阿拉尔市| 涟水县| 丰都县| 舒城县| 丰台区| 福建省| 鄂尔多斯市| 会同县| 竹山县| 滦平县| 宝兴县| 疏勒县| 宣武区| 延吉市| 武城县| 北安市| 南通市| 南皮县| 固原市| 永平县| 鄱阳县| 金堂县| 远安县| 芷江| 广汉市| 南投县| 姚安县| 呼伦贝尔市| 天门市| 利津县|