摘要:在做后臺管理項目的時候,有一個功能是側邊欄可配置。功能實現(xiàn)第一步,搜索引擎大法,用分別搜索了關鍵詞,一大堆搜索結果,有的,有的,有的。現(xiàn)在就是要讀去中的內容,并將其中的所以提取出來第一個我能想到的方法就是,在中使用的將的文件內容讀取出來。
在做后臺管理項目的時候,有一個功能是側邊欄可配置。可配置項有:名字、路由、圖標、權限。其中名字、路由、權限在大神的vue-element-admin中已經有很詳細的介紹了,問題就在于icon選擇配置(這個做完之后,發(fā)現(xiàn)不是很有必要,因為這個項目就內部人員在用,配圖表手動輸入class名就ok了),具體方案是用element-ui的select組件自定義模板實現(xiàn)icon可視化選擇。
功能實現(xiàn)第一步,搜索引擎大法,用baidu、google分別搜索了關鍵詞iconpicker,一大堆搜索結果,有bootstrap的,有l(wèi)ayui的,有jquery的。
但他們的icon都是固定的庫,不能自己去增刪改。而且項目中這幾個框架都沒有引入,為了一個功能去引入一個庫感覺有點不劃算(庫的OS:誰稀罕你用似的)。
搜索無果后,決定自己動手做一個組件,然后先列出自己想要的幾個關鍵點
icon可維護
增刪icon簡單
圖形化選擇
為了后期icon的維護(認真思考后感覺又是一個不是必要的選項)選擇了用iconfont,能隨時添加刪除icon。
然后圖形化選擇的話,用element-ui自帶的select組件就行了
但問題關鍵在于將iconfont 引入項目
項目引入,直接將iconfont項目下載下來,放到/src/assets/font文件夾中
文件倒是放到本地了,但問題是我如何知道我引入了哪些icon,以及將icon的class名輸出到一個數(shù)組里,并在項目中可用。
手動粘貼復制倒是可以,但下次再增刪幾個icon 還要一一對比嗎?所以條路肯定不行了。
現(xiàn)在就是要讀去iconfont.css中的內容,并將其中的所以class提取出來
第一個我能想到的方法就是,在vue.config.js中使用node.js的api將iconfont.css的文件內容讀取出來。
const path = require("path") const rf = require("fs") function resolve (dir) { return path.join(__dirname, dir) } rf.readFile(resolve("src/assets/font/iconfont.css"), "utf-8", function (err, data) { if (err) { console.log("error") return false } else { console.log(data) })
代碼確實輸出了iconfont.css中的所有內容
然后我需要對這個data進行處理,輸出一個數(shù)組
const res = data.match(/.iconfont*.+:before/g)
提取出icon名,在輸出到一個變量中,但問題是從vue.config.js將變量輸出到哪去,才能在整個項目中使用呢?localstorage中?
而且在開發(fā)環(huán)境下能夠使用node.js 在生產環(huán)境可不行。
所以我采取了一個折中的方法,將這個變量輸出到一個文件當中,然后文件中export 這個變量
function replacer (match, p1, p2, p3, offset, string) { // p1 is nondigits, p2 digits, and p3 non-alphanumerics return p2 } rf.readFile(resolve("src/assets/font/iconfont.1.css"), "utf-8", function (err, data) { if (err) { console.log("error") return false } else { const res = data.match(/.iconfont*.+:before/g) icondata = res.map(item => { return `"${item.replace(/(.iconfont-)(.*)(:before)/, replacer)}"` }) icondata = `export default [${icondata.toString()}]` rf.writeFile(resolve("src/utils/icon.js"), icondata, (err) => { if (err) throw err console.log("The file has been saved!") }) } })
replacer 函數(shù)來源
接下來就是組件的代碼了
// 調用 {{ item }}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103794.html
摘要:入口文件,影響全局,作用是引入全局使用的庫公共的樣式和方法設置路由等。項目里總會有一些復用的組件,例如彈出框發(fā)送手機驗證碼圖片上傳等,將它們作為通用組件,避免重復工作結構如下可以根據(jù)功能模塊建立文件夾,放置本功能會用到的通用組件。 上一篇文章 https://segmentfault.com/a/11... 介紹了項目里文件夾的分類和作用,這次主要說明 src 文件夾里具體的文件分類和...
摘要:入口文件,影響全局,作用是引入全局使用的庫公共的樣式和方法設置路由等。項目里總會有一些復用的組件,例如彈出框發(fā)送手機驗證碼圖片上傳等,將它們作為通用組件,避免重復工作結構如下可以根據(jù)功能模塊建立文件夾,放置本功能會用到的通用組件。 上一篇文章 https://segmentfault.com/a/11... 介紹了項目里文件夾的分類和作用,這次主要說明 src 文件夾里具體的文件分類和...
摘要:增加文件上傳插件,主要用于管理后臺的資源,之前我們運營是每次都要去上傳文件,而有了這個插件管理,就可以不用上傳重復的資源。現(xiàn)目前上傳的文件沒有用數(shù)據(jù)庫來管理,而是直接用獲取文件的形式,也是偷懶,有時間再實現(xiàn)吧。 項目全面更新 https://segmentfault.com/a/11... 前言 項目前端地址: https://github.com/lmxdawn/vu... 項目后...
閱讀 1436·2021-09-02 19:23
閱讀 1586·2021-08-11 11:19
閱讀 641·2019-08-30 15:55
閱讀 1653·2019-08-30 12:50
閱讀 2241·2019-08-30 11:23
閱讀 2180·2019-08-29 13:13
閱讀 1500·2019-08-28 18:13
閱讀 3344·2019-08-26 11:53