百度外賣如何做到前端開發配置化,百度外賣做到前端

73689fc06c34ab9b0d43ac9b641f3a230617c991

9688ef1b2f9790af7deb2566808488e9a8d0392c


內容來源:2024年5月13日,徐辛承在“H5夢工廠”進行《前端開發配置化方案》演講分享。愛掏網 - it200.comIT大咖說作為獨家視頻合作方,經主辦方和講者審閱授權發布。愛掏網 - it200.com

?

?閱讀字數:2024 ?| 9分鐘閱讀


摘要

前端開發的主要職能就是把網站的界面更好地呈現給用戶,它涵蓋的知識面非常廣,既有具體的技術,又有抽象的理念。愛掏網 - it200.com百度外賣高級前端工程師徐辛承,為我們帶來關于百度外賣前端開發配置化方案的分享。愛掏網 - it200.com


內部平臺開發中的痛點

所有業務線由一個大的內部平臺來完成,最后集中下放到APP中。愛掏網 - it200.com這個系統的缺點就是重復性工作很多。愛掏網 - it200.com


以banner配置為例,我們發現頁面功能相似度高,重復工作較多。愛掏網 - it200.com我們之前的開發模式在搭建基礎頁面時,主要靠復制另一個類似項目的代碼,在此基礎上進行修改來完成。愛掏網 - it200.com同時由于一個代碼可能要多人開發,代碼風格難以統一。愛掏網 - it200.com


受到了百度H5的啟發,我們最終想到要通過一個平臺來解決這些問題。愛掏網 - it200.com百度H5是通過拖拽的方式來生成H5活動頁面的一個平臺,它的組件非常豐富。愛掏網 - it200.com它整個頁面的設計思路和現在一些組件化框架的思路很相似。愛掏網 - it200.com它把頁面中的元素拆分到以組件為最小單位,通過組件構成一個頁面。愛掏網 - it200.com


但其實它并不適合我們的業務場景。愛掏網 - it200.com因為在這樣一個平臺中,我們內部平臺的交互無法支持,組件也不能拓展。愛掏網 - it200.com


我們想要的得是一個簡單的平臺,所有角色都能使用,拖拽界面適用度高,大家樂于接受。愛掏網 - it200.com


我們希望任何頁面都能用可視化的方式去完成。愛掏網 - it200.com我們會提供豐富的組件庫、交互的配置方式,同時也提供了自定義拓展腳本,通過配置化的方式去生成頁面。愛掏網 - it200.com


因為是我們自己的團隊來開發這個項目,所以我們希望這個項目的可維護性很強。愛掏網 - it200.com我們會用熟悉的技術棧開發,用可擴展性強的方式去挖掘技術棧底層內容,模塊會拆分得很詳細。愛掏網 - it200.com


最終基于這些想法,我們開發了Blocks平臺。愛掏網 - it200.com


頁面配置平臺Blocks

1什么是Blocks?

Blocks是一個拖拽+配置生成的系統。愛掏網 - it200.com組件是頁面中的最小單位,Blocks有拖拽形式的頁面畫布,可以支持組件的添加和擴展、支持自定義腳本。愛掏網 - it200.comBlocks是基于vue2.0開發。愛掏網 - it200.com


0935b2a6e20fc64ed65d15d4b5283f5c105fad8a


2頁面配置模塊


頁面配置模塊主要分為組建列表、頁面畫布和設置組件屬性。愛掏網 - it200.com它的輸出是config.js,同時會在mapConfig.js里預留事件鉤子。愛掏網 - it200.com


3腳本配置模塊


因為現在還沒有完全實現可視化,我們在JSON文件里開發擴展腳本,生成了一些事件鉤子去更快地開發代碼。愛掏網 - it200.com


4頁面渲染引擎


頁面渲染引擎是最核心的部分。愛掏網 - it200.com通過JSON配置文件生成頁面,解析組件的配置和層級關系,以及解析配置文件里的自定義擴展腳本,最后渲染出頁面。愛掏網 - it200.com


3edc2c1c843a11af5869f5237193a5fcc4d46a54

平臺核心設計


1核心思想


我們最初的想法是,輸入是JSON,輸出是Web Page。愛掏網 - it200.com后來經過思考發現在一個JSON中實現輸入有些困難,所以把JSON拆分為Config.js和MapConfig.js。愛掏網 - it200.com


2Config.js


909821a201f18bbfa27202593a45121a02fadc44

3為什么這么做?


因為Virtual Dom Tree結構為object,代碼量有明顯減少。愛掏網 - it200.com基于Virtual Dom的實現,它的拓展性是很強的。愛掏網 - it200.com


4每一個節點


針對每一個Virtual Dom的節點,主要有三個屬性。愛掏網 - it200.com

第一個是Tag,就是節點名稱,也可以理解為這個節點用的組件。愛掏網 - it200.com

第二是Data,節點屬性。愛掏網 - it200.com

Children是這個節點包含的所有節點。愛掏網 - it200.com


5MapConfig.js


以前用的框架是MVC,Model和View沒有框架實現,它們之間的交互都是通過Controller來解決。愛掏網 - it200.com


這種命令性的開發方式會導致Controller開發效率底下,容易變得臃腫和難以維護。愛掏網 - it200.com


6腳本配置


在state里它是一個驅動應用的數據源。愛掏網 - it200.comView以聲明方式將state映射到視圖。愛掏網 - it200.com而actions是響應在view上的用戶輸入導致的狀態變化。愛掏網 - it200.com

但如果把代碼中的事件寫得很松散的話,并沒有辦法形成一個配置文件。愛掏網 - it200.com所以我們運用了Vuex。愛掏網 - it200.com


Vuex是專為Vue.js應用程序開發的狀態管理模式,也是集中管理狀態的一個工具,它以相應的規則保證狀態以一種可預測的方式發生變化。愛掏網 - it200.com


Vuex.store是MapConfig.js的一部分,它包含了State、Getters、Mutations和Actions。愛掏網 - it200.com組件屬性在State里,組件預埋的鉤子放在Mutations和Actions里,Getters在需要的時候會用到。愛掏網 - it200.com


Vuex提供了輔助函數mapState、mapGetters、mapMutations和mapActions在平臺中進行執行。愛掏網 - it200.com

26061efda75ee08509d7e4f46346a0e0804ea72e

目前新增了頁面配置模塊和腳本配置模塊。愛掏網 - it200.com


7組件的引入


對通用組件庫和業務組件做了一次封裝。愛掏網 - it200.com以input組件為例,在寫input組件模版的時候需要寫一些相應的屬性,組件配置模塊把這些屬性抽離出來,以可視化的模式在表單中進行填寫。愛掏網 - it200.com


每個組件中主要分為index.vue和setting.js。愛掏網 - it200.comIndex.vue是渲染在畫布和頁面中的一個模版文件,setting.js是一個組件設置表單。愛掏網 - it200.com


8腳本配置模塊


腳本配置模塊主要提供了Vuex.store的開發和組建內部事件擴展,未來還會增加常規事件的可視化配置。愛掏網 - it200.com當公司內部RD接口變多的時候,接口規范會很難做到,如果有一個平臺能做到前端的交互和交互的規范,就可以反向約束RD接口的規范,更可以提高開發效率。愛掏網 - it200.com


2f077bb161f2dd92828bd9418bae09cf4531bd10

平臺現狀和規劃


1收益對比


做這個平臺之前,在接口上沒有太多的規范。愛掏網 - it200.com通過這個平臺可以約束RD接口進行規范。愛掏網 - it200.com有了規范之后可以極大地提高工作效率。愛掏網 - it200.com


之前我們每個人代碼風格不同,代碼質量很低,難以維護。愛掏網 - it200.com通過拖拽的方式生成,質量會很高。愛掏網 - it200.com


原來基本所有的工作都是由研發完成的,現在部分工作可以外放,甚至當頁面簡單或者平臺做到極致的時候,就可以實現0成本開發。愛掏網 - it200.com


1902cbf175bbde1b202404b83c228626111f533f

2未來要做的工作


功能:把組件庫做得更豐富,盡量支持更多的組件;提供一個組合件的功能和可視化的交互配置。愛掏網 - it200.com


易用性:增加UI設計,做一些系統交互方面的優化。愛掏網 - it200.com


落地:對老代碼做重構,用這個平臺做新項目開發。愛掏網 - it200.com


我的分享到此結束,謝謝大家!


相關推薦

推薦文章

  • 阿里巴巴前端專家渚薰:H5互動的正確打開方式

  • 微信開發中的前后端之坑

近期活動

  • 直播 | 2024紅象云騰大數據基礎軟件V5.0發布暨合作伙伴大會


9d6412fe41522e1c6e825097949ab68c0e5bff10

點擊【http://www.itdks.com】進入干貨密道

聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
發表評論
更多 網友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 秋霞免费手机理论视频在线观看| h文站着从后面挺进孕妇| 青草视频免费看| 日韩中文字幕在线不卡| 国产成人亚洲综合网站不卡| 亚洲jjzzjjzz在线观看| 日本免费xxxx色视频| 欧洲无码一区二区三区在线观看| 国产精品亚洲专区无码不卡| 亚洲伊人久久大香线蕉啊| 婷婷综合激情网| 日韩精品无码人妻免费视频| 国产成人高清精品免费软件| 久久精品国产亚洲AV麻豆王友容 | 最新无码a∨在线观看| 国产欧美精品区一区二区三区| 亚洲gv天堂无码男同在线观看| 免费网站无遮挡| 日韩中文在线观看| 国产jizzjizz免费看jizz| 三上悠亚日韩精品一区在线| 精品一区二区三人妻视频| 夜夜影院未满十八勿进| 亚洲理论精品午夜电影| 男人天堂资源站| 日韩精品无码免费一区二区三区 | 国产在线观看无码免费视频| 久久久久久亚洲精品成人| 老师的胸好大好软| 女大学生的沙龙| 亚洲福利一区二区三区| 51影院成人影院| 日本欧美在线观看| 午夜三级三级三点在线| 99久久国产热无码精品免费| 欧美人妻精品一区二区三区 | 日产亚洲一区二区三区| 又大又粗又爽a级毛片免费看| eeuss影院免费直达入口| 欧美日韩午夜视频| 国产成人久久av免费|