日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

復盤!如何設計可視化搭建平臺的組件商店?

來源: 責編: 時間:2024-03-22 08:52:46 281觀看
導讀之前一直在做 lowcode 和可視化相關的項目,也圍繞可視化技術輸出了一系列技術文章,今天我繼續和大家來聊聊可視化平臺相關的話題——組件商店。這個需求其實很早在我開源 H5-Dooring 之后就有網友提出過 issue ,如下:正好

CF928資訊網——每日最新資訊28at.com

之前一直在做 lowcode 和可視化相關的項目,也圍繞可視化技術輸出了一系列技術文章,今天我繼續和大家來聊聊可視化平臺相關的話題——組件商店。這個需求其實很早在我開源 H5-Dooring 之后就有網友提出過 issue ,如下:CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

正好最近也做了一系列的重構和優化,覺得是時侯著手組件商店了,所以借此機會和大家詳細聊聊如何設計可視化搭建平臺的組件商店。CF928資訊網——每日最新資訊28at.com

按照我一向的寫作風格,我會在下面列出文章的大綱,以便大家有選擇且高效率的閱讀和學習:CF928資訊網——每日最新資訊28at.com

  • 什么是組件商店,為什么要設計組件商店
  • 組件商店工作流設計
  • 組件商店工作流具體方案實現
  • 實現在線代碼編輯器
  • 組件提交方案設計
  • 組件審批方案設計
  • 組件上架更新方案
  • 可視化搭建平臺組件商店總結及后期規劃

文章視圖如下,大家在平時在工作中也可以通過思維導圖的方式來整理思路。CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

什么是組件商店, 為什么要設計組件商店

“商店”大家也許并不陌生,對用戶而言,其基本用途是滿足正常的消費需求;對供應商而言,商店提供了一種銷售自身產品的營銷推廣渠道;對商店自身而言,一方面獲得了客流和利潤,另一方面還能提供自身價值在空間上的延伸。CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

通過以上的圖例說明,我們很容易想到一個詞——生態。因為每一個環節都在相互促進,相互影響。那么對于商店這個實體有了具象的認知之后,我們再來看看技術領域的“組件商店”。CF928資訊網——每日最新資訊28at.com

對于可視化搭建平臺而言,其中一個核心的環節就是組件資產。用戶在設計搭建頁面時會消費各種各樣的組件,但是對于不同的用戶而言,組件的需求往往是不一樣的,大部分的 lowcode 或者 nocode 平臺都不能很好的解決用戶這些定制化的組件需求,所以為了解決這一問題,組件商店就孕育而生。CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

我們需要在平臺中提供一種機制,支撐生產者生產組件,定義組件,同時管理者可以對生產者生產的組件進行分類管理(比如上架/下架/刪除/排序等)。做過電商系統的朋友可能會發現,它和電商平臺的商品發布上線是一個邏輯流程:CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

那么接下來我就帶大家一起設計一個這樣的流程,供大家參考。CF928資訊網——每日最新資訊28at.com

組件商店工作流設計

根據上面的介紹和分析,我們要想實現完整的組件商店工作流,需要滿足以下幾點:CF928資訊網——每日最新資訊28at.com

  • 組件線上編輯(上傳)模塊
  • 組件審核模塊
  • 組件更新/發布模塊
  • 組件管理(上架/下架/刪除/下載)

有了以上4塊的支持,基本的組件商店就可以 work 了。具體流程如下:CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

組件商店工作流具體方案實現

在有了具體的規劃和設計之后,我們就可以一步步來實現了。CF928資訊網——每日最新資訊28at.com

1.實現在線代碼編輯器

在線代碼編輯器目前市面上有幾種成熟的方案,比如:CF928資訊網——每日最新資訊28at.com

  • react-monaco-editor
  • react-codemirror2
  • ace | 性能和功能上可以媲美本地代碼編輯器

大家可以選擇以上任意一種方案,這里筆者采用 react-codemirror2 來實現。實現后的效果如下:CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

由上圖可以看到我們可以在線編寫React,Css,Js 代碼,并且可以配置組件信息。首先我們來安轉一下插件:CF928資訊網——每日最新資訊28at.com

yarn add react-codemirror2 codemirror2

codemirror 給我們提供了很多語言支持和不同風格的代碼主題,我們可以很輕松的制作不同語言的編輯面板。接下來我帶大家實現一個React代碼編輯器:CF928資訊網——每日最新資訊28at.com

import {UnControlled as CodeMirror} from 'react-codemirror2';require('codemirror/mode/jsx/jsx');const react_code = `import styles from './index.less';import React, { memo, useState } from 'react';import ReactDOM from 'react-dom';const MenuCp = memo((props) => {  const { visible, list, bgColor, top } = props;  return ReactDOM.createPortal(    <div className={styles.menuWrap} style={{display: visible ? 'block' : 'none', backgroundColor: bgColor, top: (top + 6) + 'px'}}>      H5-Dooring    </div>,    (document as any).querySelector('.react-grid-layout').parentNode,  )})`const ReactEditPanel = () => {  const codeEditorChange = (      _editor: CodeMirror.Editor,      _data: CodeMirror.EditorChange,      value: string,       type: string      ) => {      console.log(_data, value, type)    }  return <CodeMirror          value={react_code}          className={styles.codeWrap}          optinotallow={{              mode: 'jsx',              theme: 'material',              lineNumbers: true          }}          notallow={(editor, data, value) => codeEditorChange(editor, data, value, 'react')}      />}

以上就實現了一個簡單的React代碼編輯器,是不是很簡單呢? 同理對于 css ,js 代碼編輯器,也是同樣的方式,我們只需要定義 CodeMirror 屬性的mode 為 css ,javascript 即可。我們還可以設置 theme 來切換到我們喜歡的代碼主題,這里筆者使用的material風格。CF928資訊網——每日最新資訊28at.com

單純實現在線代碼編輯器還不夠,我們還需要對代碼進行處理,保存,對組件進行定義,接下來我們就來看看組件是如何提交的。CF928資訊網——每日最新資訊28at.com

2.組件提交方案設計

當“ 生產者 ”編寫好組件代碼之后,需要對組件自身進行定義。因為可視化平臺組件物料很依賴平臺的組件開發協議,我們需要按照平臺的規范去上傳規范的自定義組件,這樣平臺才能更好的理解應用組件,保持用戶認知的一致性。CF928資訊網——每日最新資訊28at.com

組件描述信息筆者這里設計了如下字段:CF928資訊網——每日最新資訊28at.com

  • 組件名稱 (中文)
  • 組件名 (英文,方便存庫)
  • 組件分類 (基礎,可視化,營銷,媒體等)
  • 組件默認大小 (寬高)
  • 組件圖標 (方便用戶認知,查找)

大家也可以根據自己的平臺特性來定義和規范,這樣我們就可以提交一個完整的組件數據了。CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

目前我的做法是將用戶提交的完整的組件數據存在庫中,以便審核轉化為可視化平臺可以消費的組件,當然大家也可以用更智能的方式,自動對組件代碼信息進行提取轉化,其缺點就是誤差率無法控制,以及無法對組件進行準確的描述。以下是我提交的效果:CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

組件提交邏輯也很簡單:CF928資訊網——每日最新資訊28at.com

form.validateFields().then(values => {  codeRef.current['form'] = {    ...values,    icon: values.icon[0].url  };  req.post('/visible/cp/save', codeRef.current).then(res => {    setIsModalVisible(false);  })}).catch(errorInfo => {  console.log(errorInfo)  setCurTab("4")})

我們只需要用 antd 的Form 將用戶填寫的數據收集起來提交給后臺接口即可。由于我的后臺采用 nodejs 實現,上傳接口無非就是保存組件數據,實現比較簡單,這里就不一一介紹了。對 nodejs 感興趣的朋友可以參考我之前的開源項目從零搭建全棧CMS系統。CF928資訊網——每日最新資訊28at.com

3.組件審批方案設計

組件審批主要由網站管理人員來操作,當用戶組件提交成功之后,客戶端會通過消息信令通知管理員,管理員收到消息后會審核組件。那么整個過程也很簡單,我們可以使用 websocket 來實現消息雙向通信,完整流程如下:CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

我們先來實現 socket 通信,這里我就采用市面比較成熟的 socket.io,來簡單打通一個客戶端, 服務端的雙向通信流程。CF928資訊網——每日最新資訊28at.com

首先我們先按照一下依賴:CF928資訊網——每日最新資訊28at.com

# 服務端yarn add socket.io# 客戶端yarn add socket.io-client

對于服務端,我們需要進行如下改寫:CF928資訊網——每日最新資訊28at.com

import koa from 'koa';import http from 'http';const app = new koa();const server = http.createServer(app.callback());const io = require('socket.io')(server);// 一些業務邏輯...// socket通信io.on('connection', (socket) => {    console.log('a user connected');    socket.on('component upload success', (msg) => {      // 通知審批      io.emit('component review', msg)    })  });server.listen(config.serverPort, () => {    console.log(`服務器地址:xxx.xxx.xxx`)});

對于客戶端,邏輯如下:CF928資訊網——每日最新資訊28at.com

import io from 'socket.io-client'import { serverUrl } from '@/utils/tool'const socket = io(serverUrl);// ... 一些邏輯useEffect(() => {   socket.on('connect', function(){     console.log('connect')   });   socket.on('htmlWorked', function(data){     const { result, message } = data     if(result !== 'error') {       // ...     }else {       // ...     }        });   socket.on('disconnect', function(e){     console.log('disconnect', e)   }); }, [])

通過以上的實現方式客戶端和服務端就可以隨時進行通信了。接下來我們看看審批的效果:CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

用戶在 H5-Dooring 平臺提交的組件都會流入管理后臺,管理員可以對組件進行審查以及下載源碼等操作。審批同樣會用到 codemirror 這個庫,主要是將存到數據庫的字符串代碼進行回顯。當然還可以實現線上預覽組件上線后的效果,這塊大家感興趣的可以自己嘗試一下實現方案,原理也很簡單。我們來看看審批的演示:CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

4. 組件上架更新方案

組件上架的方案也有很多,比如可以手動上架更新,也可以用程序自動化的完成。那么這里我介紹一下我的線上自動化上架的方案,這里還是需要借助上面介紹的 socket.io 和 nodejs。原理大致如下:CF928資訊網——每日最新資訊28at.com

CF928資訊網——每日最新資訊28at.com

完整的流程就是平臺管理員對組件審批通過之后,會自動用 socket 向服務端發送審批通過信號,服務器會對組件數據進行解析,寫入對應類別下的組件庫里(也就是組件入庫),并將組件信息元寫入到編輯器基座,此時為了更新基座拿到最新的效果,需要 nodejs 解析構建指令線上打包基座,基座更新完之后會用 socket 發送消息給 H5-Dooring,通知用戶組件庫已更新,提示用戶是否刷新組件列表,至此,一個完整的組件上架更新流程就完成了。這里我們實現一下如何線上打包編輯器基座。CF928資訊網——每日最新資訊28at.com

首先我們需要對 nodejs 的父子進程有一定的了解,比如 child_process。我會使用child_process 的 exec 實現解析并執行命令行指令,如果大家對 nodejs 的父子進程不太熟悉,也可以參考我之前的文章 基于NodeJS從零構建線上自動化打包工作流。CF928資訊網——每日最新資訊28at.com

因為整個過程需要自動化的去處理,不能像我們之前打包項目一樣,手動執行 npm run build 或者 yarn build 。我們需要程序自動幫我們執行這個命令行指令,具體方案如下:CF928資訊網——每日最新資訊28at.com

import { exec } from 'child_process'const outWorkDir = resolve(__dirname, '../h5_base_frame')const fid = uuid(8, 16)const cmdStr = `cd ${outWorkDir} && yarn build ${fid}`router.post(api.generalConfig,    auth,    ctx => {      // ...      exec(cmdStr, function(err, stdout, stderr){       if(err) {         console.log('api error:'+stderr);         io.emit('htmlWorked', { result: 'error', message: stderr })       } else {         io.emit('component update success', { result: 'success', message: 'xxxx' })       }      })      // ...    });

通過以上的方式,我們就可以線上打包更新我們的項目基座,并植入任何參數,如果需要動態寫入文件,我們只需要用 fs 模塊處理即可,通過這樣的線上工作流,我們還可以實現更復雜的邏輯,甚至實現一個小型的前端CI工作流。那么大家如果有更優雅更好的方案,也是可以隨時在評論區交流。CF928資訊網——每日最新資訊28at.com

可視化搭建平臺組件商店總結及后期規劃

以上所有的設計方案實現都是基于實際需求來設計的,當然還有很多細節需要處理和優化,隨著需求和,業務的復雜,后期還會做組件統計,組件數據分析,組件監控等能力,大家也可以參考以上的設計方案,設計自己的組件商店。CF928資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-78497-0.html復盤!如何設計可視化搭建平臺的組件商店?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 解密Python Watchdog:實時監控文件系統的終極解決方案

下一篇: 阿里二面:談談ThreadLocal的內存泄漏問題?

標簽:
  • 熱門焦點
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對Reader和Writer接口的組合,
  • 一年經驗在二線城市面試后端的經驗分享

    忠告這篇文章只適合2年內工作經驗、甚至沒有工作經驗的朋友閱讀。如果你是2年以上工作經驗,請果斷劃走,對你沒啥幫助~主人公這篇文章內容來自 「升職加薪」星球星友 的投稿,坐
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛?,F在,我們就開始今
  • 從零到英雄:高并發與性能優化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經為公司的系統在面對高并發和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內容電商的概念興起,抖音、快手、小紅書組成的&ldquo;新電商三兄弟&rdquo;成為業內一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 華為Mate 60系列用上可變靈動島:正式版體驗將會更出色

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創佳績。今年618期間,一加手機全渠道銷量同比增長362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • 由于成本持續增加,筆記本產品價格預計將明顯上漲

    根據知情人士透露,由于材料、物流等成本持續增加,筆記本產品價格預計將在2021年下半年有明顯上漲。進入6月下旬以來,全球半導體芯片缺貨情況加劇,顯卡、處理器
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产一区二区三区av电影| 免费欧美网站| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美性猛交视频| 国产精品美女久久| 国内成人精品2018免费看| 亚洲人线精品午夜| 亚洲欧美激情精品一区二区| 国产精品尤物| 激情婷婷欧美| 一本久道综合久久精品| 新67194成人永久网站| 老司机精品福利视频| 欧美日韩高清一区| 国产欧美一级| 亚洲精品1区2区| 国产一区二区三区日韩| 亚洲第一网站免费视频| 一本一本大道香蕉久在线精品| 西瓜成人精品人成网站| 另类酷文…触手系列精品集v1小说| 香蕉成人久久| 欧美成人午夜免费视在线看片| 久久频这里精品99香蕉| 欧美日韩精品国产| 国产综合视频| 一区二区三区四区国产| 久久免费99精品久久久久久| 欧美日韩卡一卡二| 激情自拍一区| 亚洲制服av| 欧美国产日韩一区| 国产一区二区三区在线免费观看| 夜色激情一区二区| 麻豆精品在线视频| 国产日产欧美一区| 中文在线资源观看网站视频免费不卡| 久久香蕉国产线看观看网| 国产精品色午夜在线观看| 亚洲精品黄网在线观看| 亚洲精品婷婷| 久久国产精品99精品国产| 欧美四级伦理在线| 国产精品久久久久毛片大屁完整版 | 国产九九视频一区二区三区| 樱桃视频在线观看一区| 亚洲欧美高清| 欧美在线观看一二区| 欧美极品一区| 国产精品日本精品| 亚洲日本视频| 久久久女女女女999久久| 国产精品久久久久秋霞鲁丝| 亚洲日韩成人| 久久综合九色综合久99| 国产精品自拍网站| 亚洲午夜久久久久久久久电影院| 欧美成人中文字幕在线| 黑人巨大精品欧美黑白配亚洲| 亚洲综合第一| 欧美性猛交xxxx乱大交退制版| 亚洲麻豆国产自偷在线| 免费在线亚洲| 在线国产亚洲欧美| 久久久久久久高潮| 国产一区香蕉久久| 久久se精品一区精品二区| 久久久精彩视频| 免费不卡中文字幕视频| 国产一区二区三区在线观看视频| 亚洲激情在线观看| 久久精品日产第一区二区三区| 国产精品嫩草99av在线| 在线中文字幕不卡| 欧美久久视频| 日韩亚洲成人av在线| 欧美精品一区在线发布| 91久久久一线二线三线品牌| 免费成人小视频| 亚洲国产精品嫩草影院| 久久综合电影| 国产精品日韩久久久| 一区二区三区黄色| 欧美日韩一区二区三区在线视频 | 亚洲激情六月丁香| 欧美黄色一区| 亚洲毛片一区二区| 欧美日韩成人综合在线一区二区| 亚洲狼人精品一区二区三区| 欧美激情视频给我| av成人国产| 欧美午夜电影一区| 亚洲欧美国内爽妇网| 国产免费成人在线视频| 久久er精品视频| 伊人久久大香线蕉综合热线| 美女视频黄a大片欧美| 亚洲人成网站777色婷婷| 欧美日本亚洲韩国国产| 亚洲社区在线观看| 国产伦精品一区二区三区| 久久久精品国产免费观看同学| 尤物在线观看一区| 欧美女激情福利| 亚洲综合精品一区二区| 国产日韩一区| 美女视频黄a大片欧美| 99精品国产一区二区青青牛奶| 欧美新色视频| 欧美在线视频网站| 在线欧美视频| 欧美日韩国产综合网| 亚洲欧美清纯在线制服| 激情综合久久| 欧美片网站免费| 亚洲欧美日韩在线一区| 精品成人一区二区三区| 欧美在线免费视频| 在线观看欧美一区| 欧美欧美全黄| 欧美一区二区三区四区高清| 国产精品电影观看| 欧美一二三区精品| 国产精品xxx在线观看www| 午夜精品久久| 亚洲电影在线播放| 欧美午夜精品久久久久久人妖| 欧美一区二区在线看| 亚洲激情图片小说视频| 国产精品爽黄69| 美日韩精品免费| 亚洲一区bb| 亚洲盗摄视频| 国产精品欧美一区二区三区奶水| 久久人人爽人人爽爽久久| 一区二区福利| 黄色av日韩| 久久久久久久激情视频| 国产欧美一区二区三区沐欲 | 国产精品美女诱惑| 麻豆精品国产91久久久久久| 亚洲视频精品| 伊人夜夜躁av伊人久久| 欧美性生交xxxxx久久久| 久久精品中文| 在线视频日本亚洲性| 好吊妞这里只有精品| 欧美日韩国产91| 久久久久久久久久久久久女国产乱| 亚洲免费精彩视频| 韩国一区二区三区在线观看 | 国产一区二区高清视频| 欧美日韩国产影院| 久久在线免费观看| 亚洲欧美日韩国产一区| 亚洲精品日韩在线| 黄色成人av在线| 国产精品男gay被猛男狂揉视频| 美女精品自拍一二三四| 亚洲欧美在线一区二区| 99国产精品国产精品久久| 激情综合视频| 国产日韩一区| 国产精品久久久久久久久久久久久 | 欧美一级在线播放| 一本色道久久综合亚洲二区三区| 激情另类综合| 国产女人精品视频| 欧美日韩一区二区三区视频| 午夜精品免费| 日韩午夜免费视频| 亚洲国产高清在线| 国产一区在线播放| 国产精品免费网站| 欧美日韩一区二区三区| 欧美高清视频一区二区三区在线观看| 午夜日韩电影| 亚洲一级电影| 一本久道综合久久精品| 亚洲精品欧美日韩| 亚洲经典在线| 亚洲第一在线视频| 一区在线影院| 激情欧美一区二区三区| 国模精品一区二区三区| 国产日韩欧美精品综合| 国产精品色午夜在线观看| 欧美喷水视频| 欧美精品xxxxbbbb| 欧美国产一区二区三区激情无套| 久久尤物电影视频在线观看| 久久青草欧美一区二区三区| 欧美影片第一页| 先锋影音久久| 性欧美暴力猛交69hd| 亚洲欧美日本国产专区一区| 中文亚洲视频在线| 亚洲网站视频| 亚洲一区二区三区视频播放| 一本色道88久久加勒比精品| 999亚洲国产精| 国产一区成人| 国产日韩一区欧美| 国产亚洲欧美在线|