從計(jì)劃2.0開始足足進(jìn)行近四個(gè)月,其中發(fā)布過八個(gè)版本。當(dāng)初給2.0做的愿景基本上達(dá)到要求,當(dāng)然一切都還是那句話:【讓開發(fā)者更加專注于業(yè)務(wù)】。
ng-zorro-antd 提供的大量的基礎(chǔ)組件,當(dāng)你熟悉這些組件以后,開發(fā) Angular 會(huì)是一種“爽”體驗(yàn),然而對(duì)于中后臺(tái)而言部分高頻繁組件在大多數(shù)場(chǎng)景下顯得有點(diǎn)臃腫。
所以 2.0 變更主要從兩個(gè)方面:
- 使 CURD 操作更“自然”開發(fā)體驗(yàn)
- 更友好響應(yīng)式開發(fā)
CURD
提供一組 Simple 系列組件:
- sv:查看
- se:編輯
- st:數(shù)據(jù)表格(原
simple-table重新重構(gòu))
以及基于 JSON Schema 的動(dòng)態(tài)表單 sf,這四個(gè) Simple 系列組件相比較 ng-zorro-antd 的原始寫法,更易編寫、閱讀,基本上可以滿足大多數(shù)場(chǎng)景;但它們并非用來(lái)替代原始的寫法,特別是 st 與 sf 它們并不適合復(fù)雜交互,此時(shí),依然應(yīng)該優(yōu)先使用原始方式。
除此之外,2.0 對(duì)部分輸入屬性及接口的多態(tài)性、內(nèi)聚性做一些變更。
屬性多態(tài)性
當(dāng)構(gòu)建一個(gè)數(shù)據(jù)表格時(shí),表格的數(shù)據(jù)源可能來(lái)自遠(yuǎn)程數(shù)據(jù)或本地靜態(tài)數(shù)據(jù),但我們不應(yīng)該過度的將數(shù)據(jù)源做成兩個(gè)不同屬性加以區(qū)分,他們只是不同的數(shù)據(jù)來(lái)源而已,但對(duì)于表格而言是統(tǒng)一:
<table [data]="url"></table>
<table [data]="list"></table>
屬性內(nèi)聚性
同一個(gè)功能的屬性應(yīng)該更內(nèi)聚,例如我們表述一個(gè)HTTP請(qǐng)求時(shí),包含:請(qǐng)求方法、請(qǐng)求域、參數(shù)等,這些屬性應(yīng)該統(tǒng)一在一個(gè)對(duì)象值體現(xiàn),HttpClient 請(qǐng)求就是一個(gè)非常好的例子。
<st [reqMethod]="'GET'" [reqParams]="{ a: 1 }"></st>
<st [req]="{ method: 'get', params: { a: 1 } }"></st>
響應(yīng)式開發(fā)
意指開發(fā)過程中如何使用最小的方式構(gòu)建符合移動(dòng)端的中后臺(tái),ng-alain 默認(rèn)提供一套 響應(yīng)式服務(wù) 規(guī)則,它服務(wù)于最基礎(chǔ)的CURD組件:se、sv 等。例如:當(dāng)你希望構(gòu)建一行兩列的表單,并且若屏幕小于 <576px 將自動(dòng)轉(zhuǎn)化成一列,則只需要這樣:
<div se-container="2">
<se label="Field1"></se>
<se label="Field2"></se>
</div>
當(dāng)然這一切只是簡(jiǎn)化 nz-row、nz-col 的運(yùn)用而已,如果你希望布局也延續(xù)這種方式可以使用 sg 組件。
除此之外,ng-alain 也將 CSS 做為開發(fā)語(yǔ)言非常重要的組成部分,并且將這些語(yǔ)言特征轉(zhuǎn)化成獨(dú)立的單元類,如果你是采用 VSCODE 可借由 ng-alain snippets 提供的智能提醒,減少理解它們的成本。
升級(jí)
Angular Cli 提供的 ng update 命令讓我們可以大膽重構(gòu)、改進(jìn)你的組件,并且用戶升級(jí)只需要簡(jiǎn)單的一行命令就可以完全升級(jí)。
從 1.x 升級(jí)至 2.x 雖然無(wú)法改變 ts 代碼方面的動(dòng)作,但基本上可以完成 HTML 方面的升級(jí),主要還是 ts 代碼的解析無(wú)法像 HTML 那樣預(yù)期。
而 ng-alain 的 1.x 升至 2.0 也只需要一行命令而已,有關(guān)更多細(xì)節(jié),請(qǐng)參考升級(jí)指引。
未來(lái)
直到 ng-zorro-antd 下一大版本更新之前,2.0 保持一段時(shí)間的休息期,不再會(huì)有新功能。之后,會(huì)根據(jù) ng-zorro-antd 的進(jìn)度,對(duì) ng-alain 做一次大的性能重構(gòu)。
新嘗試
ng-alain 正在嘗試提供商業(yè)主題服務(wù),有興趣可以參閱。
(完)