国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

開發 前端
在設計組件通信方案前, 我們需全局維護一個公共的狀態, 拿 H5-Dooring可視化平臺 舉例, 我們用 redux 管理公共狀態, 組件間通信本質就是觸發公共狀態的更新:

背景介紹

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

之前也在社區分享了很多低代碼零代碼的技術實現, 接下來繼續和大家聊聊低代碼平臺中組件與組件之間的通信方案設計.

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

根據我自己設計可視化搭建平臺的經驗, 其需要具備最最基本的兩個能力:

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

以上的能力可以讓我們將頁面通過拖拽的方式搭建出來:

圖片

雖然這已經可以滿足很多展示型的需求, 但是仍然存在局限性, 比如可視化平臺的組件與組件之間, 沒辦法相互通信.

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

這里給大家舉一個實際的場景, 比如我們要做一個轉盤H5頁面, 它由轉盤組件和按鈕組件組成, 當點擊按鈕時, 轉盤開始運動:

圖片

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

圖片

接下來我將和大家分享一下低代碼平臺中組件間通信的幾種方案, 共大家學習參考.

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

圖片

說到組件通信我們也許并不陌生, 比如在 vue 或者 React 框架中, 經常會涉及到父子組件通信以及組件與組件間的通信, 常用的方案也有很多, 比如:

  • props/$emit
  • 子組件向父組件傳值
  • eventBus($emit/$on)
  • vuex / redux
  • $attrs/$listeners
  • provide/inject

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

接下來我們來分析幾種低代碼組件間的通信方案.

1.websocket

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

圖片

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

圖片

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

2.iframe通信 postmessage

利用 iframe 的 postmessage 等 API 雖然也能實現組件間通信, 但是我們需要設計一套通信機制, 保證 iframe 能接受組件傳送的指令, 并對外暴露共享狀態:

圖片

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

接下來給大家分享一下 iframe 通信的基本代碼實現:

// 父頁面和子頁面通信
// 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.html
window.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.html
const msg = {
name: "Dooring H5"
}
window.top.postMessage(msg, "http://h5.dooring.cn/preview")

3.Event Emitters

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

Event Emitters 類似一種觀察者模式, 我們可以利用 javascript 的設計模式來實現它, 并在組件內部來監聽或者觸發, 一個簡單的實現如下:

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 通信架構, 不過使用起來會更簡單:

圖片

低代碼組件事件隊列設計

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

圖片

每個組件都有一套事件列表, 用戶可以給一個組件添加多個交互事件, 在第代碼內部通過循環遍歷來依次觸發事件隊列:

圖片

總結

后續我會繼續和大家分享一下 H5-Dooring 低代碼的更多實踐和思考, 如果大家對可視化低代碼感興趣也可以參考我的低代碼可視化專欄.

H5-dooring低代碼

圖片

H5-dooring低代碼

V6.Dooring可視化大屏搭建平臺

圖片

V6.Dooring可視化大屏搭建平臺


責任編輯:武曉燕 來源: 趣談前端
相關推薦

2023-09-28 08:00:53

2023-02-08 00:46:44

Dooring低代碼復盤

2024-03-22 08:21:48

可視化搭建平臺組件商店H5-Dooring

2024-10-17 08:39:32

2024-01-09 08:34:56

Vue3.js組件通信

2020-12-25 10:09:29

代碼開發平臺

2020-09-03 10:06:53

低代碼平臺編碼低代碼

2021-08-11 08:23:07

前端技術 iframe

2023-03-31 13:53:00

低代碼平臺選型

2021-07-26 09:00:00

開發編程工具

2020-09-08 12:51:35

低代碼開 發代碼平臺

2021-08-03 12:47:58

鴻蒙HarmonyOS應用

2023-11-16 08:11:32

前端營銷系統

2021-09-24 16:30:28

無代碼低代碼機器學習

2021-07-05 12:36:22

低代碼編程語言開發平臺

2022-07-27 09:29:13

低代碼物聯網

2022-07-27 08:40:06

父子組件VUE3

2025-03-04 08:56:31

2019-02-26 10:33:24

快應用

2023-01-07 08:09:41

零代碼Dooring組件
點贊
收藏

51CTO技術棧公眾號

麻豆网在线观看| 免费大片黄在线观看视频网站| 婷婷综合久久| 日韩精品最新网址| 91精品国产高久久久久久五月天| 青青草97国产精品免费观看无弹窗版 | 欧美孕妇性xx| 黄色精品免费看| 亚洲一区在线观看免费观看电影高清| 日本三级福利片| 日韩视频三区| 88xx成人精品| 成人国产精品久久| 日韩av网址在线| 国产1区2区3区在线| 一区二区视频在线看| 玩弄japan白嫩少妇hd| 激情国产一区二区| 国产综合精品一区二区三区| 欧美日韩国产一区二区三区不卡 | 日韩精品免费在线视频观看| 午夜在线观看91| 亚洲精品ww久久久久久p站| 黄色片视频在线播放| 国产乱对白刺激视频不卡| 欧美大香线蕉线伊人久久| 欧美激情在线| 99r国产精品视频| 99久久久国产精品美女| 国产精品入口福利| 欧美色图激情小说| 国产91在线播放九色快色| 风间由美中文字幕在线看视频国产欧美| 亚洲天堂免费观看| 欧美电影网站| 中文字幕亚洲激情| 欧美不卡高清一区二区三区| 亚洲日本aⅴ片在线观看香蕉| 国内激情视频在线观看| 91精品国产综合久久精品 | 成人av中文字幕| 国产欧美日韩小视频| 国产精品一区二区三区四区| 亚洲欧洲精品一区二区三区波多野1战4| 乱人伦精品视频在线观看| 蜜桃久久精品乱码一区二区 | 欧美激情第一页在线观看| 亚洲女同在线| 午夜午夜精品一区二区三区文| 免费在线观看日韩欧美| 不卡中文字幕在线| av电影在线观看完整版一区二区| 欧美视频在线播放一区| 国产欧美日韩在线看| jizzjizzjizz亚洲女| 一级日本不卡的影视| 日本高清中文字幕二区在线| 欧美日韩一区小说| 18video性欧美19sex高清| 国产午夜精品视频免费不卡69堂| 精品国产一区二| 国产成人91久久精品| 国产精品v欧美精品v日本精品动漫| 国产精品国产精品国产专区不卡| 日韩精品三区四区| 国内精品在线观看视频| 亚洲精品日韩一| 黄色在线播放| 日韩精品免费电影| 久久porn| 国产日韩欧美一区二区| 国产精品中文字幕日韩精品 | 91久久爱成人| 蜜臀av在线播放一区二区三区 | 国产农村妇女精品一二区| 中文字幕欧美人与畜| 久久久久久黄色| 日本亚洲一区| 亚洲人在线视频| 国产成人三级| 欧美另类高清视频在线| av电影天堂一区二区在线观看| 香港经典三级在线| 亚洲国产一区自拍| 日韩mv欧美mv国产网站| 黑人巨大精品欧美一区二区小视频| 国产一区二区在线观看视频| av高清在线| 欧美成人精品二区三区99精品| 国产精品3区| 国产美女精品在线观看| kk眼镜猥琐国模调教系列一区二区 | 99国产精品99久久久久久| 超碰在线电影| 亚洲欧美日韩精品| 欧美理论在线播放| 99热都是精品| 亚洲超碰精品一区二区| 欧美男男激情videos| 国产精品久久久久久搜索| 麻豆高清免费国产一区| 三上悠亚在线观看二区| 亚洲美女福利视频网站| 成人aaaa| 成人一区二区免费视频| 欧美性生活大片视频| 精品国产乱码久久久久久樱花| 国产精品一区免费观看| 日本一区二区免费在线观看视频| 91大神xh98hx在线播放| 欧美日韩不卡合集视频| 亚洲深夜影院| 500福利第一精品导航| 最新中文字幕亚洲| 中文久久精品| 一级黄色在线| 久久久久一本一区二区青青蜜月| 蜜臀91精品一区二区三区| 美丽的小蜜桃4春潮| 色老头一区二区三区| 日韩国产欧美在线视频| 青青青免费视频在线2| 午夜精品福利电影| 国产精品一区二区无线| 日本在线观看免费| 成人黄色在线免费| 亚洲欧美另类在线| 在线视频亚洲欧美中文| 美脚丝袜脚交一区二区| 亚洲第一av网| 亚洲免费播放| 久青青在线观看视频国产| 国产精品jvid在线观看蜜臀| 国产欧美在线观看一区| 国产一区二区三区免费在线| 免费网站在线观看视频| 亚洲国产私拍精品国模在线观看| 亚洲一区二区三区高清不卡| 亚洲人成小说| 国产综合视频在线观看| 亚洲一区二区三区四区五区黄 | www.99热这里只有精品| 精品国产制服丝袜高跟| 在线视频观看日韩| 欧洲免费在线视频| 成人福利视频在线观看| 亚洲一区在线免费观看| 精品99在线| 麻豆电影在线| 成人性生交大片免费看小说 | 亚洲一区不卡| 黄网站免费在线观看| www国产亚洲精品| 色偷偷久久一区二区三区| 99国产精品一区二区| 国产女王在线**视频| 国产精品一区二区电影| 亚洲综合丁香婷婷六月香| 免费成人网www| 嫩模私拍啪啪| 国产精品美女主播| 偷拍与自拍一区| 中文字幕一区二区av| 岛国在线视频| 欧美一区二区三区在线播放 | h片在线播放| 日产中文字幕在线精品一区| 日韩美女视频在线| 日韩成人一级大片| 成人在线黄色电影| 欧美中文字幕在线观看视频 | 国产精品一区二区三区四区色| 成人写真视频福利网| 欧美午夜精品久久久久久超碰 | 视频在线99| 日韩精品一区二区视频| 成人激情视频网站| 538任你躁精品视频网免费| 一道本视频在线观看| 欧美一级电影在线| 日韩欧美黄色动漫| 日韩制服丝袜先锋影音| 精品欧美一区二区三区在线观看| 成人免费在线小视频| 国产97在线|亚洲| 欧美日韩一区视频| 国产一区视频网站| 91九色鹿精品国产综合久久香蕉| 香蕉视频在线网站| 日日夜夜精品网站| 欧美国产精品人人做人人爱| 欧美午夜美女看片| 国产揄拍国内精品对白| 日本1区2区3区中文字幕| 四虎精品在线观看| 欧美电影免费网站| 免费观看不卡av| 日韩免费视频播放| 91福利在线观看| 日韩专区一卡二卡|