我正在開(kāi)發(fā)一個(gè)許多不同客戶都會(huì)使用的應(yīng)用程序,但「主題」無(wú)法在客戶之間共享,因?yàn)樗鼈兊呐渖桨副徽J(rèn)為是專(zhuān)有和機(jī)密的,儘管我知道這聽(tīng)起來(lái)很荒謬。
現(xiàn)在,顏色是在主App.vue
元件中定義的,沒(méi)有<style>
而不是<stylescoped>
,然後下游的組件都被限定範(fàn)圍。
目前的工作方式是我使用 CSS 變數(shù)來(lái)定義顏色和漸層。
我或多或少正在尋找一種可以執(zhí)行類(lèi)似偽代碼的解決方案:
const clientName = import.meta.env.CLIENT_NAME if (clientName === 'abc') { :root { --background-color: #f3f3f3; --default-font-color: #000000; --primary: #8c4799; --secondary: #d22630; --gradient-primary: rgba(140, 71, 153, 0.2) 4.55%; --gradient-secondary: rgba(210, 38, 48, 0.02) 105.67%; --failure-color: #b94527; --badge1: #419bbe; --badge1text: #ffffff; --c-white: #f2f2f2; } } else if (clientName === 'def') { --background-color: #0c0c0c; --default-font-color: #ffffff; --primary: #c1fc3d; --secondary: #d22630; --gradient-primary: rgba(110, 71, 153, 0.2) 3%; --gradient-secondary: rgba(190, 38, 48, 0.02) 50%; --failure-color: #b94527; --badge1: #419bbe; --badge1text: #ffffff; --c-white: #ffffff; }
請(qǐng)記住,所有下游元件都使用這些變量,並且它是一個(gè)非常大的應(yīng)用程式。
我正在使用 Vite 進(jìn)行捆綁(如果這有效果的話)。
您可以建立一個(gè) .css
文件,為每個(gè)客戶端匯出這些 css 變數(shù)。然後,在 main.js
入口點(diǎn)上,您可以匯入與該用戶端對(duì)應(yīng)的檔案:
const clientName = import.meta.env.CLIENT_NAME import `@/assets/themes/${clientName}.css`;