摘要:靜態(tài)資源的訪(fǎng)問(wèn)通過(guò)配置代理實(shí)現(xiàn)頁(yè)面的訪(fǎng)問(wèn),跟服務(wù)端工程毫無(wú)關(guān)系,服務(wù)端只負(fù)責(zé)提供異步接口。集中管理異步接口配置的模塊
Nicon
一言不合,先上平臺(tái)Nicon。該平臺(tái)接入github登錄,采用七牛CDN存儲(chǔ),歡迎大家試用。
Nicon 是一個(gè)集圖標(biāo)上傳、展示、使用于一身的字體圖標(biāo)管理平臺(tái),流程簡(jiǎn)單,符合日常開(kāi)發(fā)使用習(xí)慣,適合企業(yè)在內(nèi)部部署使用。采用 Iconfont 字體圖標(biāo)替換項(xiàng)目中圖片圖標(biāo)的使用,以達(dá)到縮減體積、風(fēng)格統(tǒng)一、提高開(kāi)發(fā)效率等目的。若配合設(shè)計(jì)師使用,設(shè)計(jì)師可在平臺(tái)上管理圖標(biāo),復(fù)用圖標(biāo),減少設(shè)計(jì)圖標(biāo)耗費(fèi)的時(shí)間,而開(kāi)發(fā)只負(fù)責(zé)使用設(shè)計(jì)師維護(hù)好的圖標(biāo)庫(kù),減少了與設(shè)計(jì)師的交流成本。
優(yōu)勢(shì)與其他字體圖標(biāo)管理平臺(tái)相比,它擁有以下優(yōu)勢(shì):
使用流程簡(jiǎn)單,符合日常開(kāi)發(fā)使用習(xí)慣,無(wú)需在審核管理流程中耗費(fèi)時(shí)間
適合企業(yè)內(nèi)部設(shè)計(jì)師與開(kāi)發(fā)協(xié)同使用,保持圖標(biāo)的設(shè)計(jì)、管理、使用的連貫性
部署簡(jiǎn)單,平臺(tái)自帶注冊(cè)、登錄功能,還有靜態(tài)資源路由,只需數(shù)據(jù)庫(kù)配置就可部署使用
支持接入三方登錄、資源上傳到三方CDN服務(wù)器。使用更安全,資源更穩(wěn)定
支持導(dǎo)出資源多樣化,符合多種使用場(chǎng)合,更有配套的導(dǎo)出工具nicon-tookit, 方便快捷
使用流程圖 協(xié)作使用最優(yōu)解目前圖標(biāo)從設(shè)計(jì)到使用的完整流程是基本是: 設(shè)計(jì)完成->視覺(jué)使用->導(dǎo)出給開(kāi)發(fā)->開(kāi)發(fā)處理、使用。顯然,圖標(biāo)是設(shè)計(jì)與開(kāi)發(fā)共同使用的,雖然流程上看著很簡(jiǎn)單,但是使用頻率高了之后小問(wèn)題也會(huì)消耗很多的時(shí)間,現(xiàn)如今圖標(biāo)的制作與使用方式都有很多高效率的工具,但都只是單方面的。
對(duì)于設(shè)計(jì)來(lái)說(shuō),制作圖標(biāo)的工具眾多且功能強(qiáng)大,并且設(shè)計(jì)出來(lái)的圖標(biāo)也會(huì)直接在這些工具上使用,而圖標(biāo)是復(fù)用程度比較高的,所以有效的管理圖標(biāo)可以避免后續(xù)花時(shí)間重復(fù)設(shè)計(jì)。對(duì)于開(kāi)發(fā)來(lái)說(shuō),圖標(biāo)的使用方式也就那么兩三種,只需要有個(gè)工具能把圖標(biāo)處理完導(dǎo)出所需類(lèi)型的資源加入到代碼就行,其實(shí)不太想去管圖標(biāo)的來(lái)龍去脈。
基于以上需求,有必要做出一個(gè)可以滿(mǎn)足設(shè)計(jì)與開(kāi)發(fā)共同協(xié)作的字體圖標(biāo)管理平臺(tái),流程圖如下:
在以上的流程中,設(shè)計(jì)師可以使用平臺(tái)管理圖標(biāo)方便后續(xù)復(fù)用,而且不需要在跟開(kāi)發(fā)溝通中耗費(fèi)時(shí)間。 對(duì)于開(kāi)發(fā),并不需要管理圖標(biāo)以及圖標(biāo)的處理方式,只需要適時(shí)從平臺(tái)上更新設(shè)計(jì)師管理好的圖標(biāo)庫(kù)生成的資源就行。
功能介紹該平臺(tái)的UI是參照iconfont平臺(tái)實(shí)現(xiàn)的,且iconfont平臺(tái)的圖標(biāo)可以無(wú)縫遷移到該平臺(tái)上。由于個(gè)人能力有限,做出的其實(shí)就是iconfont的簡(jiǎn)單版,是一個(gè)純粹的圖標(biāo)管理平臺(tái),更適合企業(yè)部署在內(nèi)部使用
1、創(chuàng)建一個(gè)圖標(biāo)庫(kù)
2、上傳圖標(biāo)。此階段為圖標(biāo)草稿階段,可進(jìn)行刪除、名稱(chēng)修改,最好確保圖標(biāo)名稱(chēng)唯一,點(diǎn)擊保存上傳之后,才可以加入圖標(biāo)庫(kù),如果不保存或者刪除,則一直存留為草稿。
3、把圖標(biāo)加入到圖標(biāo)庫(kù),會(huì)自動(dòng)保存更新生成新的字體圖標(biāo)庫(kù)資源。進(jìn)入到指定圖標(biāo)庫(kù)后,點(diǎn)擊添加圖標(biāo)并選定需要添加的圖標(biāo),確認(rèn)之后會(huì)生成新的圖標(biāo)文件,完成
4、對(duì)不滿(mǎn)意的或不合格的圖標(biāo)庫(kù)可以從圖標(biāo)庫(kù)中刪除
5、可以收藏別人的圖標(biāo)到自己 上傳圖標(biāo) 列表中,然后保存成為自己的圖標(biāo)
前端使用方式
圖標(biāo)管理平臺(tái)提供了三種圖標(biāo)使用方式, font class、svg files、svg sprite三種方式,可導(dǎo)出的資源類(lèi)型包括css資源文件鏈接, css資源文件內(nèi)容,svg文件內(nèi)容,svg sprite 文件內(nèi)容,各個(gè)工程可以根據(jù)自己的使用方式使用腳本導(dǎo)出合適的資源類(lèi)型。
可以使用配套的工具nicon-toolkit來(lái)從平臺(tái)上獲取資源,簡(jiǎn)單方便、配置靈活。
1、font-class引用
配置腳本的資源配置type為cssUrl(外鏈)或者cssContent(內(nèi)聯(lián)),運(yùn)行腳本獲取資源文件
挑選相應(yīng)圖標(biāo)并獲取字體編碼,應(yīng)用于頁(yè)面
2、svg文件使用
配置腳本的資源配置type為svg,運(yùn)行腳本獲取svg文件到指定目錄
經(jīng)過(guò)二次處理或直接使用、比如base64或其他方式
3、svg sprite使用方式
配置腳本的資源配置type為svgSprite,運(yùn)行腳本獲取svgSprite 內(nèi)聯(lián)到html文件中
挑選相應(yīng)圖標(biāo)并獲取類(lèi)名,應(yīng)用于頁(yè)面
這樣使用的方式稍微麻煩,建議封裝成組件傳id就好,比如
Nicon平臺(tái)是一個(gè)前后端完全分離的項(xiàng)目,前后端都可以多帶帶啟動(dòng)進(jìn)行開(kāi)發(fā)聯(lián)調(diào)。前端采用Vue生態(tài)相關(guān)技術(shù),后端使用koa框架,結(jié)構(gòu)及流程都比較簡(jiǎn)單。根據(jù)需求及自己開(kāi)發(fā)習(xí)慣進(jìn)行架構(gòu)設(shè)計(jì),有興趣的可以看看。Nicon 平臺(tái)全部的代碼都已經(jīng)開(kāi)源,并且個(gè)人會(huì)長(zhǎng)期維護(hù),有興趣的歡迎加入一起維護(hù)。
服務(wù)安裝部署系統(tǒng)要求
linux/unix/windows
環(huán)境要求
nodejs 7.0+
npm 3.10.8+
mogondb 3.2+
redis 3.2+
在啟動(dòng)工程之前,必須確保數(shù)據(jù)庫(kù)已經(jīng)啟動(dòng),且已經(jīng)把相應(yīng)的數(shù)據(jù)庫(kù)創(chuàng)建好。
1、 克隆項(xiàng)目到本地|服務(wù)器
git clone git@github.com:bolin-L/nicon.git
2、 進(jìn)入到項(xiàng)目工程nicon安裝依賴(lài)
cd nicon && npm install
3、配置數(shù)據(jù)庫(kù)信息與其他環(huán)境變量
在nicon同級(jí)文件夾(or 任何地方,但是如果放在nicon文件夾中,名稱(chēng)必須為start.sh 或 start.bat, 會(huì)被ignore掉,更新不會(huì)被覆蓋)創(chuàng)建一個(gè)啟動(dòng)腳本start.sh, 用于配置數(shù)據(jù)庫(kù)及其他的環(huán)境變量配置,可參考examle
4、進(jìn)入到nicon文件夾,執(zhí)行啟動(dòng)腳本命令
sh yourStartConfigPath/start.sh
如果不出什么意外,這個(gè)時(shí)候應(yīng)該已經(jīng)啟動(dòng)好了。服務(wù)監(jiān)聽(tīng)的端口是4843, 當(dāng)然這只是個(gè)純服務(wù),具體的頁(yè)面還需要部署前端工程nicon-front。
前端靜態(tài)資源部署圖標(biāo)管理平臺(tái)采用的是前后端完全分離的開(kāi)發(fā)方式,前端代碼放在獨(dú)立的icon-front。前端只需要提供完整的靜態(tài)html頁(yè)面與其他靜態(tài)資源即可。靜態(tài)資源的訪(fǎng)問(wèn)通過(guò)配置nginx代理實(shí)現(xiàn)頁(yè)面的訪(fǎng)問(wèn),跟服務(wù)端工程毫無(wú)關(guān)系,服務(wù)端只負(fù)責(zé)提供異步接口。
1、克隆前端項(xiàng)目到本地, 與nicon文件夾同級(jí)
git clone git@github.com:bolin-L/nicon-front.git
2、進(jìn)入到nicon-front工程,安裝依賴(lài)
cd nicon-front && npm install
3、運(yùn)行打包命令、打包輸出到nicon-front/dist文件夾下
npm run build
現(xiàn)在服務(wù)已經(jīng)啟動(dòng),靜態(tài)資源已經(jīng)輸出,接下來(lái)需要配置nginx讓請(qǐng)求可以訪(fǎng)問(wèn)到靜態(tài)資源,異步接口可以訪(fǎng)問(wèn)到服務(wù)。
Nginx配置為了在瀏覽器中訪(fǎng)問(wèn)到頁(yè)面,需要配置Nginx代理,把對(duì)應(yīng)的請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的服務(wù)。該平臺(tái)的請(qǐng)求分兩種,一種是訪(fǎng)問(wèn)前端靜態(tài)頁(yè)面與資源,另一種是訪(fǎng)問(wèn)后端服務(wù)的異步接口
,請(qǐng)求都有一定的規(guī)則,大概配置如下:
# 靜態(tài)資源請(qǐng)求 location / { root /home/liaobolin/app/nicon-front/dist; index index.html index.htm; } location ^~ /static { root /home/liaobolin/app/nicon-front/dist; } # 配置異步接口請(qǐng)求到服務(wù)器 location /api { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:4843; }
配置到此,平臺(tái)基本就可以運(yùn)行起來(lái)使用了,瀏覽器通過(guò)域名就可以訪(fǎng)問(wèn)到首頁(yè)
三方服務(wù)接入雖然該平臺(tái)已經(jīng)可以提供完成的登錄、注冊(cè),圖標(biāo)庫(kù)樣式文件等靜態(tài)資源的訪(fǎng)問(wèn)。但是對(duì)于企業(yè)來(lái)說(shuō),內(nèi)部的工具平臺(tái)最好只接受內(nèi)部人或只能內(nèi)網(wǎng)訪(fǎng)問(wèn),對(duì)于靜態(tài)資源最理想的就是放到自家的cdn服務(wù)器上,讓平臺(tái)操作更安全,訪(fǎng)問(wèn)所速度更快等等...
基于這樣的需求,Nicon支持接入三方登錄與字體文件資源上傳到三方服務(wù)器,登錄或上傳需要的密鑰等需要通過(guò)環(huán)境變量設(shè)置,比如放在start.sh文件中,登錄、上傳等接入代碼需要自己按照規(guī)范開(kāi)發(fā)完成提PR,檢查完畢后合并到工程master分支中。目前代碼中支持一下三方服務(wù):
三方登錄
網(wǎng)易o(hù)penId登錄
github授權(quán)登錄
三方上傳
網(wǎng)易NOS服務(wù)
七牛云存儲(chǔ)服務(wù)
三方服務(wù)接入文件夾結(jié)構(gòu)如下
├── service │?? ├── login │?? │?? ├── github_qiniu │?? │?? │?? ├── config.js │?? │?? │?? └── index.js | | |-- ....... │?? │?? ├── index.js │?? └── upload │?? ├── github_qiniu │?? │?? ├── config.js │?? │?? └── index.js | | |-- ....... │?? ├── index.js
三方登錄、上傳服務(wù)接入步驟
1、在接入三方服務(wù)之前,必須先配置產(chǎn)品類(lèi)型環(huán)境變量 productType。加入到start.sh文件中
export productType="github_qiniu";
比如我需要接入github三方登錄與qiniu上傳存儲(chǔ)服務(wù),那么我的productType就設(shè)置為github_qiniu。 那么在開(kāi)發(fā)接入服務(wù)時(shí)文件夾名稱(chēng)必須為 github_qiniu。
2、 在service/login/ 文件夾下創(chuàng)建文件夾 github_qiniu, 然后在該文件夾下創(chuàng)建config.js , 與index.js, 在index.js文件中必須暴露出async login方法, 調(diào)用方法后需要返回指定格式的數(shù)據(jù)
// index.js class GithubOpenIdLogin { async login (ctx) { // your code return { userName: tokenInfo.userName // 必須且唯一 } } } let loginIns = new GithubOpenIdLogin(); module.exports = loginIns.login.bind(loginIns);
3、在service/upload/ 文件夾下創(chuàng)建文件夾 github_qiniu, 然后在該文件夾下創(chuàng)建config.js , 與index.js, 在index.js文件中必須暴露出async upload方法, 調(diào)用方法后需要返回指定格式的數(shù)據(jù)
// index.js class QiniuUpload { async upload (dirPath) { // your code // 上傳返回?cái)?shù)據(jù)格式 return { url: cssUrl, // 必須 cssContent: cssContent // 必須 }; } } let uploadIns = new QiniuUpload(); module.exports = uploadIns.upload.bind(uploadIns);
至此就已經(jīng)配置完畢,啟動(dòng)工程就好了。Nicon平臺(tái)的詳細(xì)部署流程已經(jīng)寫(xiě)在nicon工程中,如果需要請(qǐng)前往了解更詳細(xì)的部署流程。
后記Nicon平臺(tái)是我自己在業(yè)余時(shí)間做的項(xiàng)目,能力有限,UI方面基本是參考iconfont,技術(shù)方面也是慢慢摸索,實(shí)屬不易,在使用過(guò)程中有任何建議或意見(jiàn),歡迎指教。歡迎大家來(lái)一波star,github地址如下:
nicon 平臺(tái)nodejs后端服務(wù)
nicon-front 平臺(tái)前端工程
在開(kāi)發(fā)過(guò)程中,我仿照NEJ的cache使用方式基于axios封裝了axios-cache 模塊,在axios的基礎(chǔ)上進(jìn)行一些增強(qiáng),更適合日常的組織與使用方式,有興趣的話(huà)可以試試,當(dāng)然,也歡迎star。
axios-cache 集中管理異步接口配置的模塊
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/115820.html
摘要:靜態(tài)資源的訪(fǎng)問(wèn)通過(guò)配置代理實(shí)現(xiàn)頁(yè)面的訪(fǎng)問(wèn),跟服務(wù)端工程毫無(wú)關(guān)系,服務(wù)端只負(fù)責(zé)提供異步接口。集中管理異步接口配置的模塊 Nicon 一言不合,先上平臺(tái)Nicon。該平臺(tái)接入github登錄,采用七牛CDN存儲(chǔ),歡迎大家試用。 Nicon 是一個(gè)集圖標(biāo)上傳、展示、使用于一身的字體圖標(biāo)管理平臺(tái),流程簡(jiǎn)單,符合日常開(kāi)發(fā)使用習(xí)慣,適合企業(yè)在內(nèi)部部署使用。采用 Iconfont 字體圖標(biāo)替換項(xiàng)目中...
摘要:企業(yè)微信截圖企業(yè)微信截圖兼容最廣的一站式智能大數(shù)據(jù)平臺(tái)涵蓋了等眾多開(kāi)源大數(shù)據(jù)組件,支持對(duì)這些組件進(jìn)行運(yùn)維中臺(tái)建設(shè)數(shù)據(jù)開(kāi)發(fā)業(yè)務(wù)可視化等全棧式大數(shù)據(jù)開(kāi)發(fā)運(yùn)維管理。通過(guò)一站式智能大數(shù)據(jù)平臺(tái)支持的等分布式運(yùn)算框架,可以高效的進(jìn)行機(jī)器學(xué)習(xí)應(yīng)用開(kāi)發(fā)。背景在大數(shù)據(jù)業(yè)務(wù)系統(tǒng)中,所有技術(shù)棧生態(tài)均是圍繞著存儲(chǔ)進(jìn)行擴(kuò)展的,目前開(kāi)源的主流存儲(chǔ)技術(shù)棧主要包含如下 3 種類(lèi)型:· HDFS:Hadoop 系列套件,包含...
摘要:機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)通過(guò)算法對(duì)大量數(shù)據(jù)進(jìn)行分析,挖掘出其中蘊(yùn)含的規(guī)律,并用于事物預(yù)測(cè)或者分類(lèi),有大量的計(jì)算需求。通過(guò)一站式智能大數(shù)據(jù)平臺(tái)支持的等分布式運(yùn)算框架,可以高效的進(jìn)行機(jī)器學(xué)習(xí)應(yīng)用開(kāi)發(fā)。在大數(shù)據(jù)業(yè)務(wù)系統(tǒng)中,所有技術(shù)棧生態(tài)均是圍繞著存儲(chǔ)進(jìn)行擴(kuò)展的,目前開(kāi)源的主流存儲(chǔ)技術(shù)棧主要包含如下 3 種類(lèi)型:· HDFS:Hadoop 系列套件,包含 Hive、Hbase、Phoenix 等;· Ela...
摘要:的特點(diǎn)通過(guò)狀態(tài)碼能知道操作結(jié)果,通過(guò)方法能知道操作類(lèi)型增刪改查,通過(guò)能知道操作的資源對(duì)象。平臺(tái)只通過(guò)狀態(tài)碼來(lái)判斷操作成功與否。 前言 今年,我的任務(wù)是為公司的私有云平臺(tái)( PaaS )開(kāi)發(fā)對(duì)應(yīng)的云服務(wù)平臺(tái)(我們稱(chēng)之為插件平臺(tái)),這個(gè)云服務(wù)平臺(tái)的主要任務(wù),是為云平臺(tái)接入一些服務(wù),服務(wù)包括但不限于mysql、redis、cdn等存儲(chǔ)服務(wù),天氣預(yù)報(bào)等http服務(wù)。這個(gè)系列文章,希望總結(jié)本人在...
閱讀 1083·2021-11-22 13:52
閱讀 1505·2021-11-19 09:40
閱讀 3348·2021-11-16 11:44
閱讀 1372·2021-11-15 11:39
閱讀 4044·2021-10-08 10:04
閱讀 5517·2021-09-22 14:57
閱讀 3165·2021-09-10 10:50
閱讀 3259·2021-08-17 10:13