其實寫這篇文章時我是很迷茫的,由於其實文章的主要目的是爲了想開源一下本身的項目但願本身的想法可以得到你們的意見,讓我有繼續前進下去的目標。
本文爲一個連續的文章,分爲如下幾個階段,每一個階段都會出一篇文章(本篇爲第一節):前端
你們在開發vue的時候使用ui框架是否遇到過要不樣式差一點點不符合要求、要不事件觸發的時候差一點本身想要的參數,再或者對於一個新的組件去網上找相似的代碼模板老是js、jq的代碼,就是不能拿過來直接用。要是咱們可以像使用iconfont同樣去網上簡單的找到須要的圖標下載總體就能夠用了該多好。vue
是的上面所說的就是我這個項目想要實現的目標,我須要的不是簡簡單單一個ui組件庫,我想要的是一個ui組件自定義拼裝平臺。java
其實現有的平臺已經有分析代碼模塊並能夠實如今線引入和單個的npm安裝,可是咱們也不但願咱們項目裏面能有幾十個不一樣ui組件的npm吧,因此個人最主要目的就是將多個組件自動組裝成npm包讓咱們造成項目專用的組件庫。node
而後就是咱們在引入相似elemntui組件庫的時候咱們使用的其實只有那麼幾個組件所有引入會擴大main.js,單個引入又太麻煩了怎麼辦?這個時候咱們可以直接在網頁上選擇本身須要的組件生成獨有的elementui包不是很好嗎。react
現階段項目實現的目標能夠用下面的流程圖來展現
總體實現還比較簡單,暫時尚未作用戶隔離和權限控制等功能
能夠由上面的圖看出來,其實只要咱們的組件可以有必定的量級那麼咱們的ui組件庫理論上能夠無限大,能夠實現無數個咱們獨特的npm組件包,分分鐘寫完整個項目不是問題。spring
介紹了這麼多了,我相信看到這裏的大佬都會點進去試試這個不起眼的小網站: 自定義ui組件庫 (打開後5秒鐘事後會自動跳轉至首頁哦,網站有任何問題均可以聯繫本人,聯繫方式在文章最後)</div>docker
首先總體介紹下整個項目的狀況:express
其實無論在前端仍是後端,仍是服務器的部署真的問題超多,用了不少的騷操做這些後面都會慢慢一一的講解。npm
具體代碼的地址也會在後面寫完文章後進行一一開發(整理一下亂寫的地方)。
後端
熟悉iconfont的童鞋能夠直接去操做,基本流程同樣只有代碼編輯那塊會有點不同(找不到地址就翻網頁最後哦)
接下來就是每一個頁面的使用說明了:
一、 建立一個新的組件(打開編輯頁)二、 打開購物車管理
三、 篩選組件類型
一、展開展現組件二、將組件添加至購物車
三、點擊其他地方進入組件編輯頁
一、按名稱搜索組件二、選擇組件類別
一、搜索組件(回車新開窗口)二、新建npm包
三、發佈npm包
最重要的就是編輯頁了,有不少的功能
一、添加代碼模板,而且能夠可視化編輯二、打開下層功能模塊
三、編輯器額外功能(切換主題、改變字體大小、是否自動熱更新編譯)
四、關閉代碼塊,可經過點擊左側從新出來(也能夠手動拖動代碼塊顯示區域)
五、打開文件管理,請仔細閱讀上面的提示
已完成功能:
未完成功能:
總體項目到這就介紹完了,但願你們可以去進行使用下而後評論,或者給我進行信息反饋,聯繫方式在最後,這就是我我的心血來潮但願爲咱們開發進行簡化盡一份力,望各位大佬輕噴
下一章:Vue3.0一個不算小的項目實踐(二)(文章完成後會將該標題換爲連接)主要內容:如何使用vue3搭建咱們的項目並進行管理以及在沒有任何ui庫依賴的時候實現本身的組件庫功能(內帶高度集合的校驗方式)
export default class ValidaDue { value: any ValidaObject: BindingObj @ValidateDec.validationFn private static validation: Function @ValidateDec.resetStatus private static resetStatus: Function @ValidateDec.registerTrigger private static registerTrigger: Function /** * 構造函數 * @param {ValidaPorops} props 傳入傳遞對象 * @param {Function} emit 回調函數 * @param {Element} dom 傳入監聽dom */ constructor(props: ValidaPorops, emit: Function, dom: RefDom) { this.value = ref(props.modelValue); emit('update:modelValue', this.value); this.ValidaObject = reactive({ value: this.value, rules: props.rules, check: true, errorMsg: '' }); this.ValidaObject.validation = ValidaDue.validation(this.ValidaObject); this.ValidaObject.resetStatus = ValidaDue.resetStatus(this.ValidaObject); onMounted(() => { if (this.ValidaObject.validation) ValidaDue.registerTrigger(dom.value, this.ValidaObject); }); const obj: any = inject('form', null); obj?.push(this.ValidaObject); } }
集羣訪問入口:http://36.111.183.168:9527/
5m高網速服務訪問入口:http://36.111.183.168:9988/
1m低速域名訪問入口:http://vue.tanyh.cn/
這就是本文所有內容了,若是有任何問題或者想讓我幫忙進行開發歡迎進行評論的私聊我,下面貼上本人微信二維碼。