德扑之星有限公司官方网站

CMS與可視化構建工具GrapesJS整合之動態組件開發(五)

我們整合Drupal CMS和可視化開源構建工具ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,GrapesJS❣❦❧♡۵,來實現CMS級別的可視化㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,通過GrapesJS的可視化❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,可以讓CMS的開發ⓚⓛⓜⓝⓞⓟⓠⓡⓢ、維護①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯、管理更加方便❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣、簡潔①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯、成本更低⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。

 

為什么要用GrapesJSⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,GrapesJS是一套開源⑰⑱⑲⑳⓪⓿❶❷❸❹❺、可視化ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ、可擴展的構建工具♀☿☼☀☁☂☄,并且提供了豐富的API✵✶✷✸✹✺✻✼❄❅,例如組件系統⒜⒝⒞⒟⒠⒡⒢⒣⒤、樣式系統ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ、響應式支持等①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,可以讓開發者輕松定制出符合業務要求的可視化網頁編輯器⑰⑱⑲⑳⓪⓿❶❷❸❹❺,提高開發效率ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,節省成本✵✶✷✸✹✺✻✼❄❅。

 

本文重點介紹GrapesJS中如何動態讀取CMS的內容㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,通過TWIG的SDK函數和輸出的示例♦☜☞☝✍☚☛☟✌✽✾✿❁❃,以及如何聲明組件⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,來展示動態組件開發過程①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯。

 

 

 

Drupal與GrapesJS的集成

 

為了能使GrapesJS可以讀取動態的Drupal的內容✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,我們必須要在GrapesJS中能解析Twig代碼⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,這樣可以動態解析Twig模板☈⊙☉℃℉❅。

那么❣❦❧♡۵,Drupal需要建立一套基于Twig的組件庫ⓣⓤⓥⓦⓧⓨⓩ,中間的動態內容✵✶✷✸✹✺✻✼❄❅,可以借助自定義的API服務㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,將變量注入到Twig模板中☈⊙☉℃℉❅,Drupal渲染頁面就可以用原來的TWIG引擎渲染❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,此時只要開發者只需開發對應的TWIG組件即可⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。

詳情的技術結構㈠㈡㈢㈣㈤㈥㈦,參考下圖:

 

 

上面的架構可以擴展✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,從而實現任意的后端對接✺ϟ☇♤♧♡♢♠♣♥,理論上不局限與Drupal CMS❻❼❽❾❿⓫⓬⓭⓮⓯⓰,可以與其他的中臺系統(JAVA/Node/Python)等對接✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,只需要能解析對應模板即可⑰⑱⑲⑳⓪⓿❶❷❸❹❺,比如JSP模板ⓣⓤⓥⓦⓧⓨⓩ、PUG❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣、EJS等模板❣❦❧♡۵,都是可以實現對接動態內容⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,從而實現動態內容的所見即所得的頁面構建❣❦❧♡۵,具體架構如下: 

 

 

動態組件的實現方式

 

1. 如何實現組件的開發

為了實現在GrapesJS中加載和渲染動態的TWIG組件ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,在GrapesJS做TWIG的解析⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,當twig加載時ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,將其渲染成HTML❣❦❧♡۵,從而實現可視化㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。

而我們實際的做法是將TWIG在服務器端渲染☈⊙☉℃℉❅,然后通過服務器生成的HTML插入當前的GrapesJS的文檔樹中☧☬☸✡♁✙♆。,、':∶;,實現動態的加載✵✶✷✸✹✺✻✼❄❅。

具體的代碼可以參考下面的TWIG片段

 

上面的代碼通過getNodes函數獲取相關的內容列表ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,然后通過for循環將其輸出❻❼❽❾❿⓫⓬⓭⓮⓯⓰,這樣就是先了動態的內容渲染㈠㈡㈢㈣㈤㈥㈦,而相關的函數就是我們通過TWIG引擎웃유ღ♋♂,注入進模板的函數✺ϟ☇♤♧♡♢♠♣♥,這種函數也可以注入更多☧☬☸✡♁✙♆。,、':∶;,從而實現更加靈活的內容讀取☈⊙☉℃℉❅。

 

2. 如何聲明組件

我們在Drupal中✺ϟ☇♤♧♡♢♠♣♥,聲明組件采用的是動態加載的方式♦☜☞☝✍☚☛☟✌✽✾✿❁❃,類似Drupal的模塊⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,聲明一個YAML文件㈠㈡㈢㈣㈤㈥㈦,這樣多個組件互不影響也互不依賴♀☿☼☀☁☂☄,具體的代碼如下:

 

 

 

整體架構

 

實現了動態組件的開發♦☜☞☝✍☚☛☟✌✽✾✿❁❃,那么可以將常用的組件做成通用組件庫⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,針對項目的組件①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,可以做成項目組件ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,通用組件庫可以在其他的項目中復用㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,通過積累通用組件庫㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,就可以解決我們項目中常見的80%需求⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,從而大大減少后續項目的維護和開發難度☾☽❄☃。

 

 

更多GrapesJS開發以及Drupal CMS相關內容✵✶✷✸✹✺✻✼❄❅,請參考我們其他相關文章❻❼❽❾❿⓫⓬⓭⓮⓯⓰,

 

1✵✶✷✸✹✺✻✼❄❅、常見開源可視化低代碼頁面構建框架對比

2✺ϟ☇♤♧♡♢♠♣♥、開源可視化低代碼頁面構建框架GrapesJS介紹

3❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣、開源CMS Drupal整合可視化構建工具GrapesJS(一)

4✵✶✷✸✹✺✻✼❄❅、開源可視化頁面框架GrapesJS教程(二)- 組件開發

5❻❼❽❾❿⓫⓬⓭⓮⓯⓰、可視化頁面框架GrapesJS開發教程(三)- 與Drupal CMS整合

6ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ、開源可視化頁面框架GrapesJS開發教程(四)- 創建 Block

7⑰⑱⑲⑳⓪⓿❶❷❸❹❺、CMS與可視化構建工具GrapesJS整合之動態組件開發(五)

 

德扑之星官网下载 网站地图