<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
儘管現在越來越多的人開始對低程式碼開發感興趣,但已有低程式碼方案的一些侷限性仍然讓大家有所保留。其中最常見的擔憂莫過於低程式碼缺乏靈活性以及容易被廠商鎖定。
顯然這樣的擔憂是合理的,因為大家都不希望在實現特定功能的時候才發現低程式碼平臺無法支援,也不希望從某個廠商的低程式碼平臺遷出時發現應用需要徹底的重寫。
一些已有產品機智地將低程式碼的使用場景限定在了特定領域中,例如內部工具或者是官網,因為在這些場景中使用者更關心開發效率而不是靈活性與客製化能力。但當我們希望使用低程式碼在更多場景中提升效率時,這類產品就不能滿足需求了。
因此,我們開始開發 Sunmao 這個專案,在開源開發的基礎之上,我們專注於這個低程式碼 UI 框架的拓展性。
Sunmao 的命名來源於中文榫卯,它是一種從古至今一直被使用的木結構技術,以精巧、穩固著稱。我們非常喜歡這個名字,因為榫卯結構與我們將各類構建單元組合成一個穩固的應用的方式十分相似。
在開發的過程中,我們始終遵循以下設計原則,從而確保我們的抽象方式正確且一致。
在開發 Sunmao 的過程中,我們首先將使用者劃分為了元件開發者與應用構建者兩個角色,角色的劃分是我們後續設計中最重要的概念。
元件開發者應該更加關注程式碼質量、效能以及使用者體驗等部分,並以此為標準創造出可複用的元件。當元件開發者以他們趁手的方式開發了一個新的元件,他們就可以將該元件封裝為一個 Sunmao 元件並註冊到元件庫中。
應用構建者則選用已有的元件,並實現應用相關的業務邏輯。結合元件與 Sunmao 的平臺特性,應用構建者可以更高效地完成這一工作。
之所以將角色進行劃分,是因為每時每刻都有應用被開發,但元件迭代的頻率則低得多。所以在 Sunmao 的幫助下,使用者可以將元件開發的任務交給少量高階前端工程師完成,而將應用搭建的工作交由初級前端工程師、後端工程師、甚至是無程式碼開發經驗的人完成。
如之前所說,Sunmao 並不將使用者侷限於只能使用按鈕、輸入框等基礎元件開發應用,而是可以由元件開發者註冊各類複雜、適用於特定領域的元件,以此覆蓋應用需求以及延續已有的視覺設計體系。
在開發 Sunmao 的過程中,我們也投入了大量的精力來保證我們的實現不會給使用者的應用帶來限制。
舉個例子來說,許多低程式碼工具的視覺化編輯器都提供了懸浮在元件上時進行高亮的效果。相當一部分編輯器在實現這個功能時都是通過在每個元件之外包裹一個 <div>
元素,並對該元素進行事件的監聽與高亮樣式的修改。但這樣的實現方式有諸多弊端,例如增加了 DOM 節點數量、使元件無法被設定 inline 樣式以及增加了隱式的巢狀關係,這些對於 Sunmao 來說都是不可接受的。
儘管我們花費了更多時間才找到一個避免以上所有缺陷的實現方式,但我們相信這樣的付出是值得的。因為只有這樣,我們才能做到發揮程式碼的威力,贏得開發者的認可。
Sunmao 包含三個層級,分別是核心規範、執行時以及編輯器。
元件與應用的 schema 都在核心規範中進行定義。除去常規的欄位之外,使用者還可以通過新增註解(annotations)的方式注入額外資訊,並在執行時或編輯器中使用。
我們多次提到的元件本身也是可延伸的,元件開發者為元件可以定義各類引數以及與其他元件互動的行為。在下文中我們還會介紹另一種在元件間共用擴充套件能力的方式:trait。
在視覺化的編輯器中,使用者也可以設定每個元件引數在編輯器中的展示方式與輸入方式。
我們沒有選擇開發一個全棧的低程式碼解決方案,而是聚焦於 UI 部分,並且目前僅限 Web UI。
因為我們認為現如今的後端技術日新月異,一個 UI 低程式碼方案可以更靈活的與各類後端服務對接,這樣才能夠為使用者帶來最大的靈活性。
Web UI 開發已經相當成熟,所以 Sunmao 只是在此基礎之上增加少量低程式碼場景中必備的能力,即:
響應式指的是當應用狀態發生變化時,所有依賴該狀態的 UI 都自動重寫渲染。Sunmao 實現了一個高效能的響應式狀態中心,所有元件都可以將自己的狀態同步至其中以及從中存取其他元件的狀態。
例如,當我們想讓 demo 按鈕渲染 demo 輸入框中的值,只需要填寫 {{ input.value.length }}
:
按鈕就能夠響應輸入框的變化實時渲染!
現代 UI 框架往往強調狀態驅動與宣告式的概念,但在低程式碼場景中過份追求這兩點可能適得其反。
例如當你希望實現點選一個主題按鈕並切換至暗色主題的功能,最符合直覺的方式就是按鈕提供一個 onClick
事件並觸發主題元件的 changeTheme
方法。
在 Sunmao 中,你可以在元件的規範中宣告它會對外傳送的事件以及可以供外部呼叫的一組命令式方法。在此基礎上,任意元件都可以通過事件與方法和其他元件進行互動。
以下是一個監聽事件並執行方法的範例:
當我們開發應用時,最終通常都會將元件組合成一個巢狀結構,例如瀏覽器中的 DOM 樹。
在 Sunmao 的應用 schema 中,我們採用的是一個扁平的陣列結構記錄所有的元件資訊,這樣使得修改與儲存的時候可以更加高效。也因此,我們引入了插槽的概念來表示巢狀結構。
通過以下方式可以實現並宣告一個元件有哪些插槽:
將一個元件放入另一個元件的插槽中:
另一個有極大想象空間的功能是自定義元件的樣式。如果元件開發者能夠將定義元件樣式的能力對外暴露,元件的可複用性就將大大提升。
類似地,我們引入了樣式插槽的概念實現自定義樣式的功能。
通過以下方式可以實現並宣告一個元件有哪些樣式插槽:
在樣式插槽中自定義樣式:
在低程式碼場景中,型別安全可以極大地提升開發體驗與應用搭建速度。所以在 Sunmao 中我們重度使用 typescript 與 JSON schema 來實現極佳的型別系統。
如果元件開發者使用 typescript 進行開發,Sunmao 能夠從元件的 JSON schema 定義中推斷 typescript 的型別,從而幫助元件開發者編寫型別安全的程式碼。
我們的型別系統也會在搭建應用的過程中提供自動補全與校驗等功能。
許多元件都需要獲取資料、事件節流等通用能力,我們在上文中多次提到的 trait 就是為這一需求而設計的。
試想一下,如果每個元件都自行實現 dataUrl(獲取資料的 URL)
、hidden(是否可見)
、handlers(事件回撥)
等屬性,顯然是十分冗餘的。對於這類需求,trait 系統提供了很好的抽象,幫助開發者將通用的能力以 trait 形式實現並複用於多個元件,從而保證元件實現的簡潔。
Sunmao 的視覺化編輯器讀取所有元件的規範並基於其定義的 JSON schema 自動生成表單。
如果一部分表單需要客製化,元件開發者可以實現自定義的編輯器 widget。關於擴充套件視覺化編輯器的設計可以進一步閱讀這一設計檔案。
從第一天起,Sunmao 就以開源的方式進行開發。但當我們說到“開放”時,我們並不僅僅侷限於以 Apache-2.0 協定開放所有的原始碼。
儘管 Sunmao 是從 SmartX 內部發起的專案,我們在開發過程中還是選擇將所有的提案、討論與設計決策放在公開的 Github 倉庫中進行,而不是其他的內部頻道。因為我們相信“保持開放”是 Sunmao 發展的基石,並且我們也視開發者使用 Sunmao 構建自己的低程式碼方案為最大的榮耀。
以上就是JS前端可延伸的低程式碼UI框架Sunmao使用詳解的詳細內容,更多關於JS前端UI框架Sunmao的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45