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