欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于webpack4+vue-cli3項(xiàng)目實(shí)現(xiàn)換膚功能

 更新時(shí)間:2019年07月17日 09:09:30   作者:webScript  
這篇文章主要介紹了基于webpack4+vue-cli3項(xiàng)目的換膚功能,文中是通過scss+style-loader/useable做換膚功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

起因

最近因公司需求,需要實(shí)現(xiàn)主題換膚功能,不僅僅是顏色的更改,還需要包括圖片,字體等文件等更換,因此在百度里各種實(shí)現(xiàn)方案后,決定根據(jù)scss+style-loader/useable做換膚。

項(xiàng)目開始

首先我們用vue-element-admin這個(gè)開源的后臺(tái)管理系統(tǒng)項(xiàng)目來做demo演示,為了便于做二次開發(fā),下載vue-admin-template來開發(fā)。

// 從github下載vue-admin-template
clone https://github.com/PanJiaChen/vue-admin-template.git
cd vue-admin-template
npm install
npm run dev

運(yùn)行成功后的效果

安裝style-loader處理器

因?yàn)?code>vue-admin-template項(xiàng)目是添加過sass-loader依賴的,所以不用我們?cè)俅伟惭b,在上一步就已經(jīng)安裝好了。

npm install style-loader --save-dev

創(chuàng)建主題文件

在src目錄下創(chuàng)建theme-chalk、theme-light主題文件夾
在兩個(gè)主題目錄下創(chuàng)建index.useable.scss文件 

index.useable.scss中寫入樣式

// theme-chalk/index.useable.scss
body {
  background: red; 
}
// theme-light/index.useable.scss
body {
  background: green; 
}

到此,我們的主題樣式都已經(jīng)建好了,現(xiàn)在要將主題應(yīng)用上去

在vue.config.js中增加style-loader/useable

vue-cli2根vue-cli3的配置區(qū)別還是挺大的,我在配置的過程中遇到很多坑,因?yàn)関ue-cli3沒有了webpack.config.js文件,我們?cè)谂渲脀ebpack的時(shí)候無法根據(jù)老文檔來配置,需要熟悉cli3的webpack-chain來鏈?zhǔn)叫薷呐渲茫俏臋n很少,配置的過程中異常困難。

在配置文件中chainWebpack鏈?zhǔn)叫薷膚ebpack配置就能成功應(yīng)用loader了,話不多說,直接上代碼,

// 換膚loader
  const scss = config.module.rule('scss').toConfig();
  const useable = { ...scss.oneOf[3], test: /\.useable.scss$/ };
  useable.use = [...useable.use];
  useable.use[0] = { loader: 'style-loader/useable' };
  config.module.rule('scss').merge({ oneOf: [useable] });

使用主題

在準(zhǔn)備工作都做好后,接下來我們開始使用主題樣式。

之前說的為什么要用style-loader來做換膚呢?是因?yàn)閟tyle-loader提供了useable這一API,可動(dòng)態(tài)加載刪除link文件。具體詳情請(qǐng)自行去看看style-loader。

在src目錄下,創(chuàng)建theme.js文件

const cache = {};
const themeAction = {
 chalk() {
  if (!cache.chalk) {
   cache.chalk = import('./styles/theme-chalk/index.useable.scss');
  }
  return cache.chalk;
 },
 light() {
  if (!cache.light) {
   cache.light = import('./styles/theme-light/index.useable.scss');
  }
  return cache.light;
 }
};
let current = null;
async function setTheme(theme) {
 if (themeAction[theme]) {
  const style = await themeAction[theme]();
  if (current) {
   current.unref();
  }
  style.ref();
  current = style;
 }
}
window.setTheme = setTheme;
export default setTheme;

在main.js中,引入theme.js。

import setTheme from './theme'
// 使用主題
setTheme('chalk')

重啟服務(wù),查看效果


在實(shí)際項(xiàng)目中,可根據(jù)傳入的主題(chalk/light),動(dòng)態(tài)切換主題色,同時(shí)也可根據(jù)業(yè)務(wù)需求,創(chuàng)建多個(gè)主題。我們只需要在index.useable.scss文件中寫樣式變量即可。

總結(jié)

以上所述是小編給大家介紹的基于webpack4+vue-cli3項(xiàng)目實(shí)現(xiàn)換膚功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • Vue實(shí)現(xiàn)todo應(yīng)用的示例

    Vue實(shí)現(xiàn)todo應(yīng)用的示例

    這篇文章主要介紹了Vue實(shí)現(xiàn)todo應(yīng)用的示例,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-02-02
  • vue實(shí)現(xiàn)pc端拍照上傳功能

    vue實(shí)現(xiàn)pc端拍照上傳功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)pc端拍照上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue中的按鈕綁定事件小案例

    vue中的按鈕綁定事件小案例

    這篇文章主要介紹了vue中的按鈕綁定事件小案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Vue數(shù)據(jù)雙向綁定的實(shí)現(xiàn)方式講解

    Vue數(shù)據(jù)雙向綁定的實(shí)現(xiàn)方式講解

    Vue數(shù)據(jù)雙向綁定原理:Vue內(nèi)部通過Object.defineProperty方法屬性攔截的方式,把data對(duì)象里每個(gè)數(shù)據(jù)的讀寫轉(zhuǎn)化成getter/setter,當(dāng)數(shù)據(jù)變化時(shí)通知視圖更新
    2022-08-08
  • Vue 按鍵修飾符處理事件的方法

    Vue 按鍵修飾符處理事件的方法

    這篇文章主要介紹了Vue 按鍵修飾符的相關(guān)資料,vue中新增按鍵修飾符和系統(tǒng)修飾符來處理類似的事件,具體內(nèi)容詳情大家參考下本文
    2018-05-05
  • 一文帶你簡(jiǎn)單理解Vue的data為何只能是函數(shù)

    一文帶你簡(jiǎn)單理解Vue的data為何只能是函數(shù)

    如果data是一個(gè)函數(shù)的話,這樣每復(fù)用一次組件,就會(huì)返回一份新的data,下面這篇文章主要給大家介紹了關(guān)于簡(jiǎn)單理解Vue的data為啥只能是函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • vue h5移動(dòng)端禁止縮放代碼

    vue h5移動(dòng)端禁止縮放代碼

    今天小編就為大家分享一篇vue h5移動(dòng)端禁止縮放代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • vue.js動(dòng)畫中的js鉤子函數(shù)的實(shí)現(xiàn)

    vue.js動(dòng)畫中的js鉤子函數(shù)的實(shí)現(xiàn)

    這篇文章主要介紹了vue.js動(dòng)畫中的js鉤子函數(shù)的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • 淺談 Vue v-model指令的實(shí)現(xiàn)原理

    淺談 Vue v-model指令的實(shí)現(xiàn)原理

    vue的v-model是一個(gè)十分強(qiáng)大的指令,它可以自動(dòng)讓原生表單組件的值自動(dòng)和你選擇的值綁定,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • vue實(shí)現(xiàn)的樹形結(jié)構(gòu)加多選框示例

    vue實(shí)現(xiàn)的樹形結(jié)構(gòu)加多選框示例

    這篇文章主要介紹了vue實(shí)現(xiàn)的樹形結(jié)構(gòu)加多選框,結(jié)合實(shí)例形式分析了在之前遞歸組件實(shí)現(xiàn)vue樹形結(jié)構(gòu)的基礎(chǔ)之上再加上多選框功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02

最新評(píng)論