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

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

低代碼平臺組件間通信方案復盤

來源: 責編: 時間:2023-09-28 10:05:26 377觀看
導讀背景介紹3年前我開發了一款零代碼搭建平臺 H5-Dooring, 主要目的是想用更低的成本, 更快的效率, 上線 web 頁面(其實是不想寫重復的代碼了,寫麻了). 好在陸陸續續折騰了3年, 目前已經可以滿足基本的頁面設計和搭建能

背景介紹

3年前我開發了一款零代碼搭建平臺 H5-Dooring, 主要目的是想用更低的成本, 更快的效率, 上線 web 頁面(其實是不想寫重復的代碼了,寫麻了). 好在陸陸續續折騰了3年, 目前已經可以滿足基本的頁面設計和搭建能力, 并能快速上線頁面.v3428資訊網——每日最新資訊28at.com

之前也在社區分享了很多低代碼和零代碼的技術實現, 接下來繼續和大家聊聊低代碼平臺中組件與組件之間的通信方案設計.v3428資訊網——每日最新資訊28at.com

可視化搭建平臺的基本能力

根據我自己設計可視化搭建平臺的經驗, 其需要具備最最基本的兩個能力:v3428資訊網——每日最新資訊28at.com

  • 靜態頁面設計能力(也就是可以用可視化平臺制作我們想要的頁面的能力)
  • 組件交互能力(制作好靜態頁面之后, 頁面元素能具備一定的交互, 比如跳轉鏈接, 打開彈窗等)

以上的能力可以讓我們將頁面通過拖拽的方式搭建出來:v3428資訊網——每日最新資訊28at.com

圖片圖片v3428資訊網——每日最新資訊28at.com

雖然這已經可以滿足很多展示型的需求, 但是仍然存在局限性, 比如可視化平臺的組件與組件之間, 沒辦法相互通信.v3428資訊網——每日最新資訊28at.com

更靈活自主的可視化搭建平臺

這里給大家舉一個實際的場景, 比如我們要做一個轉盤H5頁面, 它由轉盤組件和按鈕組件組成, 當點擊按鈕時, 轉盤開始運動:v3428資訊網——每日最新資訊28at.com

圖片圖片v3428資訊網——每日最新資訊28at.com

這種場景就需要轉盤組件和按鈕組件相互通信, 來實現交互功能. 所以在可視化搭建平臺中, 如果能實現組件間的通信, 那將覆蓋更多的業務場景, 從而為個人或者企業帶來更大的價值.v3428資訊網——每日最新資訊28at.com

圖片圖片v3428資訊網——每日最新資訊28at.com

接下來我將和大家分享一下低代碼平臺中組件間通信的幾種方案, 共大家學習參考.v3428資訊網——每日最新資訊28at.com

組件間通信的幾種實現方案

圖片圖片v3428資訊網——每日最新資訊28at.com

說到組件通信我們也許并不陌生, 比如在 vue 或者 React 框架中, 經常會涉及到父子組件通信以及組件與組件間的通信, 常用的方案也有很多, 比如:v3428資訊網——每日最新資訊28at.com

  1. props/$emit
  2. 子組件向父組件傳值
  3. eventBus($emit/$on)
  4. vuex / redux
  5. $attrs/$listeners
  6. provide/inject

當然還有很多方式能幫我們實現傳統組件間的通信, 那我們在低代碼組件中, 也可以參考類似的方式來實現, 但是唯一的區別是需要設計一套規則, 來保證組件間通信可以通過用戶配置的方式來運轉.v3428資訊網——每日最新資訊28at.com

接下來我們來分析幾種低代碼組件間的通信方案.v3428資訊網——每日最新資訊28at.com

1.websocket

在設計組件通信方案前, 我們需全局維護一個公共的狀態, 拿 H5-Dooring可視化平臺 舉例, 我們用 redux 管理公共狀態, 組件間通信本質就是觸發公共狀態的更新:v3428資訊網——每日最新資訊28at.com

圖片圖片v3428資訊網——每日最新資訊28at.com

為了保證低代碼組件庫足夠純凈, 比如不應該在組件里連接 redux, 所以我們需要把 redux 觸發器 dispatch 放在頁面的全局, 這里就可以用 websocket, 在組件里觸發 socket 指令,  在頁面全局來監聽, 并觸發 dispatch :v3428資訊網——每日最新資訊28at.com

圖片圖片v3428資訊網——每日最新資訊28at.com

當然使用 socket 的方式仍然會讓低代碼組件庫負重前行(雖然能實現更自由的通信場景, 比如組件自更新, 生命周期回調, 控制業務鉤子等), 因為我們不得不為其搭建 socket 服務, 并且需要為其設計穩定的通信橋梁, 比如 socket 心跳連接等.v3428資訊網——每日最新資訊28at.com

2.iframe通信 postmessage

利用 iframe 的 postmessage 等 API 雖然也能實現組件間通信, 但是我們需要設計一套通信機制, 保證 iframe 能接受組件傳送的指令, 并對外暴露共享狀態:v3428資訊網——每日最新資訊28at.com

圖片圖片v3428資訊網——每日最新資訊28at.com

我們從 Iframe 的通信模式可以發現它不僅可以作為中間橋梁起到通信作用, 有點類似于 eventBus的模式, 而且還可以實現頁面間的通信, 比如目前很多微前端架構的底層支持也有采用 iframe 來設計的. 但是對于更細粒度的低代碼組件來說, 有點小題大作了.v3428資訊網——每日最新資訊28at.com

接下來給大家分享一下 iframe 通信的基本代碼實現:v3428資訊網——每日最新資訊28at.com

// 父頁面和子頁面通信// A.html (父)<iframe src="http://h5.dooring.cn/h5_plus" frameborder="1" id="Bframe"></iframe>const msg = {    name: "H5-Dooring"  }window.onload = () => {  // 自動調用必須放在onload中,通過事件調用則不用  // let frame = document.querySelector("#Bframe").contentWindow  let frame = window.frames[0]  frame.postMessage(msg, "http://h5.dooring.cn/preview")}// B.htmlwindow.addEventListener("message", (e) => {  console.log(e.data)  console.log(e.origin)  console.log(e.source)})// 子頁面和父頁面通信// A.html (父)<iframe src="http://h5.dooring.cn/h5_plus" frameborder="1" id="Bframe"></iframe>window.addEventListener("message", (e) => {  console.log(e.data)  console.log(e.origin)  console.log(e.source)})// B.htmlconst msg = {  name: "Dooring H5"}window.top.postMessage(msg, "http://h5.dooring.cn/preview")

3.Event Emitters

Event Emitters 的方式我覺得是最適合低代碼組件間通信的方案, 類似于 js 里的事件監聽機制, 我們可以給 dom 綁定監聽, 并暴露事件給用戶來實現手動觸發機制. (雖然不一定是用戶手動觸發, 也有一種情況是邏輯觸發, 比如當頁面某個組件到達某一狀態的時候, 后自動觸發事件, 來改變其他組件的狀態)v3428資訊網——每日最新資訊28at.com

Event Emitters 類似一種觀察者模式, 我們可以利用 javascript 的設計模式來實現它, 并在組件內部來監聽或者觸發, 一個簡單的實現如下:v3428資訊網——每日最新資訊28at.com

interface Events {  [key: string]: Function[];}export class EventEmitter {  public events: Events;  constructor(events?: Events) {    this.events = events || {};  }  public subscribe(name: string, cb: Function) {    (this.events[name] || (this.events[name] = [])).push(cb);    return {      unsubscribe: () =>        this.events[name] && this.events[name].splice(this.events[name].indexOf(cb) >>> 0, 1)    };  }  public emit(name: string, ...args: any[]): void {    (this.events[name] || []).forEach(fn => fn(...args));  }}

具體設計流程有點像我之前設計的 iframe 通信架構, 不過使用起來會更簡單:v3428資訊網——每日最新資訊28at.com

圖片圖片v3428資訊網——每日最新資訊28at.com

低代碼組件事件隊列設計

以上只實現了組件的通信, 并沒有將通信和實際的應用場景結合起來, 比如低代碼用戶需要如何操作,才能實現組件通信. 這里我之前也設計了一套模型:v3428資訊網——每日最新資訊28at.com

圖片圖片v3428資訊網——每日最新資訊28at.com

每個組件都有一套事件列表, 用戶可以給一個組件添加多個交互事件, 在第代碼內部通過循環遍歷來依次觸發事件隊列:v3428資訊網——每日最新資訊28at.com

圖片圖片v3428資訊網——每日最新資訊28at.com

事件通信就可以用上面介紹的 Event Emitters來實現, 具體的低代碼模式可以參考我之前的項目:v3428資訊網——每日最新資訊28at.com


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

本文鏈接:http://m.www897cc.com/showinfo-26-11816-0.html低代碼平臺組件間通信方案復盤

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

上一篇: 還不會部署微服務項目?保姆級教程來啦!

下一篇: Postman腳本批量轉接口自動化用例

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美国产日韩xxxxx| 久久久久一区二区| 一区二区高清视频在线观看| 亚洲视频狠狠| 欧美一区二区大片| 麻豆av福利av久久av| 欧美日韩色婷婷| 国产欧亚日韩视频| 伊大人香蕉综合8在线视| 亚洲精品国产精品乱码不99按摩| 日韩视频在线一区二区| 亚洲一区二区四区| 久久视频在线视频| 国产精品swag| 精品成人免费| 一区二区三区四区五区视频 | 狠狠噜噜久久| 日韩视频免费观看| 久久国产精品99国产| 欧美激情性爽国产精品17p| 国产精品爽黄69| 亚洲国产美女| 性色av一区二区三区红粉影视| 麻豆精品传媒视频| 国产精品久久久久久久久免费| 尤物网精品视频| 亚洲特级毛片| 免费国产一区二区| 国产精品一区三区| 亚洲精品国产精品国产自| 国产精品青草综合久久久久99| 国产婷婷色一区二区三区在线| 亚洲另类春色国产| 久久精品欧美| 国产精品海角社区在线观看| 亚洲国产精品ⅴa在线观看| 午夜精品一区二区三区电影天堂 | 欧美精品一区三区在线观看| 国产亚洲观看| 一区二区三区视频观看| 男女激情视频一区| 国产欧美日韩专区发布| 日韩视频一区二区| 久久亚洲综合| 国产精品主播| 一道本一区二区| 欧美 日韩 国产在线| 国产色视频一区| 亚洲视频在线观看三级| 欧美激情亚洲视频| 在线免费观看成人网| 久久精品一区二区三区不卡| 国产精品久久久久久五月尺| 亚洲精品国偷自产在线99热| 久久免费高清| 国产日韩欧美一区在线 | 午夜欧美视频| 欧美天堂亚洲电影院在线观看| 亚洲第一黄网| 久久噜噜亚洲综合| 国产一二三精品| 亚洲欧美日韩一区二区在线 | 国产精品成人观看视频免费 | 欧美激情久久久久久| 在线免费观看成人网| 久久免费国产精品| 好吊妞这里只有精品| 欧美在线视频在线播放完整版免费观看 | 久久久xxx| 国产亚洲精品久久久久婷婷瑜伽| 亚洲伊人久久综合| 欧美日韩一区在线观看| 夜夜爽www精品| 欧美日韩精品免费在线观看视频 | 久久五月婷婷丁香社区| 国内一区二区三区在线视频| 久久成人免费日本黄色| 国产日韩欧美一区在线 | 久久国产精品第一页| 国产午夜精品久久久久久免费视| 亚洲欧洲av一区二区| 国产伦精品一区二区三区高清| 亚洲欧美日韩综合aⅴ视频| 国产精品久久久久久av福利软件| 亚洲亚洲精品在线观看| 国产精品swag| 亚洲宅男天堂在线观看无病毒| 国产精品国产三级国产专播精品人 | 小处雏高清一区二区三区| 国产精品美女久久久浪潮软件 | 亚洲精品三级| 欧美日韩123| 亚洲午夜电影网| 国产精品羞羞答答xxdd| 欧美一区二区三区婷婷月色| 国内精品久久久| 嫩草国产精品入口| 亚洲大黄网站| 欧美精品99| 在线亚洲电影| 国产精品影音先锋| 久久久久国产成人精品亚洲午夜| 在线看视频不卡| 欧美日韩免费观看一区三区 | 久久精品国产在热久久| 一区在线免费| 欧美激情第3页| 亚洲视频精选| 国产乱码精品一区二区三区五月婷 | 国产婷婷色综合av蜜臀av| 久久久久久久一区二区三区| 亚洲国产小视频在线观看| 欧美日韩在线免费视频| 午夜在线一区| 1000部精品久久久久久久久| 欧美精品一区二区高清在线观看| 亚洲一级高清| 国精产品99永久一区一区| 欧美va亚洲va香蕉在线| 在线亚洲自拍| 国内一区二区三区在线视频| 欧美理论电影网| 午夜视频精品| 久久久一区二区三区| 亚洲激情婷婷| 欧美色中文字幕| 久久精品理论片| 亚洲毛片在线免费观看| 国产精品专区一| 免费看成人av| 亚洲综合日韩中文字幕v在线| 国模私拍一区二区三区| 欧美日韩免费| 久久精选视频| 一本色道久久综合亚洲精品小说| 国产视频一区免费看| 欧美精品久久99久久在免费线| 午夜精品视频网站| 亚洲人成网站影音先锋播放| 国产精品网站在线| 欧美成人高清视频| 午夜在线观看免费一区| 亚洲人精品午夜| 国产人成一区二区三区影院| 欧美剧在线免费观看网站| 欧美在线观看视频在线| 日韩亚洲在线| 红桃视频国产精品| 欧美日韩性视频在线| 久久午夜电影网| 亚洲免费视频中文字幕| 91久久精品国产91久久性色tv| 国产欧美成人| 欧美日韩免费一区| 另类激情亚洲| 欧美亚洲一级| 一区二区三区日韩精品视频| 亚洲国产成人av好男人在线观看| 国产精品视频网址| 欧美美女bb生活片| 老司机精品福利视频| 午夜宅男久久久| 一区二区三区.www| 亚洲国产一区二区视频| 国内成人在线| 国产精品视频男人的天堂 | 亚洲成色777777在线观看影院| 国产精品丝袜白浆摸在线| 欧美精品一区二区精品网| 久久久.com| 午夜在线电影亚洲一区| 亚洲香蕉网站| 日韩视频专区| 午夜亚洲性色福利视频| 亚洲欧美日韩综合aⅴ视频| 午夜精品亚洲| 老司机午夜精品视频在线观看| 久久福利电影| 欧美色大人视频| 欧美精品福利| 亚洲欧洲一区二区天堂久久| 欧美精品一区二区三区视频| 一区二区日韩| 国内精品久久久久久影视8| 久久精品国产亚洲精品| 欧美一区二区日韩一区二区| 亚洲第一中文字幕| 国产精品国产三级国产普通话99 | 裸体丰满少妇做受久久99精品| 久久av一区二区| 亚洲精品视频免费观看| 美腿丝袜亚洲色图| 亚洲国产精品成人| 国产精品久久| 亚洲欧美综合网| 亚洲精选久久| 国语自产偷拍精品视频偷| 欧美午夜寂寞影院| 欧美激情一区二区久久久| 另类人畜视频在线| 久久久久国产一区二区| 亚洲欧美日韩在线播放| 99国产精品99久久久久久| 亚洲黄色天堂|