騰訊tmagic-editor是一個所見即所得的頁面可視化編輯器,實現(xiàn)零代碼/低代碼生成頁面,可以快速搭建可視化頁面生產(chǎn)平臺,讓非技術(shù)人員可以通過拖拽和配置,自助生成H5頁面、PC頁面、TV頁面,大大降低頁面生產(chǎn)成本。
以下是騰訊視頻會員業(yè)務(wù)基于tmagic-editor搭建的可視化頁面搭建平臺示意圖。tmagic-editor已經(jīng)用于騰訊視頻會員、愛玩游戲、云視聽極光、騰訊會議等十幾個騰訊業(yè)務(wù),每月生產(chǎn)和發(fā)布數(shù)百個頁面。
基于可視化編輯器的頁面生產(chǎn)流程
一、物料開發(fā)
主要是指業(yè)務(wù)組件,比如圖片組件、抽獎組件、登錄插件等。tmagic-editor本身并不提供業(yè)務(wù)組件,業(yè)務(wù)組件由使用tmagic-editor的業(yè)務(wù),根據(jù)自己的業(yè)務(wù)需求去自行開發(fā)。
業(yè)務(wù)組件一次開發(fā),在多個頁面反復(fù)使用,業(yè)務(wù)組件應(yīng)該提供一些配置選項,保證靈活性,滿足不同頁面使用該組件時的定制需求。業(yè)務(wù)組件可以用不同的前端框架實現(xiàn),如vue2、vue3、react。
二、編排
這里指通過對組件的拖拽和配置,完成頁面編輯,主要由非技術(shù)人員完成。
三、保存與發(fā)布
這個環(huán)節(jié)在技術(shù)實現(xiàn)上,分為生成DSL、構(gòu)建、部署。
-
生成DSL: 編輯器和生成的頁面之間,通過DSL解耦。編輯器上配置頁面,得到的產(chǎn)物是一個序列化js對象的頁面描述文件,這個對象采用js schema描述,描述頁面的基本信息、包含的組件信息、以及組件間邏輯。
-
構(gòu)建: 構(gòu)建模塊基于runtime代碼,對組件進(jìn)行打包構(gòu)建,生成html、js、css文件。構(gòu)建環(huán)節(jié)使用的runtime可以根據(jù)業(yè)務(wù)的需要,選擇不同的前端框架實現(xiàn),tmagic-editor默認(rèn)提供了vue2、vue3、react三種runtime。
-
部署: 將前面環(huán)節(jié)生成的html、js、css、js schema描述文件,部署到業(yè)務(wù)自己的服務(wù)器上。
tmagic-editor提供了什么
可視化編輯器
如上圖所示,就是tmagic-editor可視化編輯器,tmagic-editor基于vue3實現(xiàn)。包括左側(cè)側(cè)邊欄、組件列表展示、已選組件的組件樹、中間的頁面拖拽的畫布區(qū)域(也叫模擬器)、右側(cè)表單配置區(qū)域、正中間上方的畫布控制區(qū)域(放大縮小、網(wǎng)格線顯隱)、預(yù)覽、保存、查看源碼(js schema描述的js對象)、底部區(qū)域的頁面添加與刪除。編輯器具有擴展功能,業(yè)務(wù)可以根據(jù)需要在側(cè)邊欄和頂部欄增加版本管理、發(fā)布等功能。
runtime
runtime 的概念,是理解tmagic-editor頁面運行的重要概念,runtime 是承載tmagic-editor頁面的運行環(huán)境??梢暬撁嫘枰趖magic-editor編輯器中搭建、渲染,通過模擬器所見即所得。
搭建完成后,保存配置并發(fā)布,然后渲染成用戶訪問的真實頁面。其中涉及到兩個不同的 runtime:編輯器中的模擬器,終端打開真實頁面。
由于tmagic-editor在編輯器中的模擬器是通過 iframe 渲染的,和tmagic-editor平臺本身可以做到框架解耦,所以 runtime 也可以用不同框架開發(fā)。目前tmagic-editor提供了 vue2/vue3 和 react 的 runtime 。
各個 runtime 的作用除了作為不同場景下的渲染環(huán)境,同時也是不同環(huán)境的打包構(gòu)建載體。tmagic-editor示例代碼中的打包就是基于 runtime 進(jìn)行的。
管理端demo
編輯器可以對一個頁面進(jìn)行編輯、配置、發(fā)布,我們還需要一個管理端來對頁面列表進(jìn)行管理。我們提供了一個管理端demo,方便業(yè)務(wù)快速搭建起一個完整的可視化搭建平臺。管理端提供了如下能力:
-
頁面列表展示,查詢
-
頁面創(chuàng)建,復(fù)制
-
頁面編輯以及 AB TEST 配置能力
-
頁面發(fā)布以及發(fā)布狀態(tài)查看和管理
使用tmagic-editor的業(yè)務(wù)需要做什么
開發(fā)業(yè)務(wù)組件
tmagic-editor并不提供業(yè)務(wù)組件,業(yè)務(wù)需要根據(jù)自己的業(yè)務(wù)場景,開發(fā)相應(yīng)的業(yè)務(wù)組件。比如抽獎組件、視頻播放組件等。tmagic-editor的通用性設(shè)計,使得業(yè)務(wù)方可以使用不同的前端框架去開發(fā)組件。
tmagic-editor官方已經(jīng)提供了vue2/vue3、react的runtime,意味著業(yè)務(wù)可以直接使用這些框架開發(fā)組件,如果業(yè)務(wù)想用其它框架開發(fā)組件,則需要開發(fā)相應(yīng)的runtime。
開發(fā)業(yè)務(wù)插件(可選)
插件的功能是作為頁面邏輯行為的一種補充方式。一般不顯式的在模擬器中被渲染出具體內(nèi)容(除非插件中會生成組件并插入頁面),通常我們會用插件實現(xiàn)類似登錄,頁面環(huán)境判斷,請求攔截器等功能。跟組件一樣,可以用不同前端框架實現(xiàn)。
部署可視化搭建服務(wù)
tmagic-editor提供的是開源代碼,并不是一個saas服務(wù),因此業(yè)務(wù)需要自己部署可視化搭建平臺的服務(wù)。
構(gòu)建和發(fā)布頁面
業(yè)務(wù)需要管理自己的組件庫,在發(fā)布環(huán)節(jié)基于拿到的頁面js Schema描述文件,基于runtime進(jìn)行打包構(gòu)建,并把打包構(gòu)建的產(chǎn)物部署到自己的服務(wù)器/CDN。
其它定制需求
如果對編輯器有一些擴展需求,編輯器已經(jīng)預(yù)留了相應(yīng)的擴展能力,業(yè)務(wù)可以開發(fā)相應(yīng)擴展功能。tmagic-editor提供了vue2/vue3、react的runtime,業(yè)務(wù)可以修改runtime,或者開發(fā)其它前端框架的runtime。
tmagic-editor能力項