天天看點

Ant Design 4.0 正式版釋出:暗色主題、元件重做設計規範更新相容性調整更小的尺寸元件重做如何更新以上

2月28日,廣受開發者歡迎的前端開源項目Ant Design釋出4.0正式版本。這是兩年多以來的首次釋出的裡程碑版本。

大家可以可以通路

ant.design

 了解更多資訊,或在GitHub上關注Ant Design項目。

需要注意的是,v3 版本于 2019 年 12 月合入 3.x-stable 分支并進入維護狀态。我們仍然會為 v3 版本進行半年的維護工作。維護截止日期為 2020 年 5 月。

設計規範更新

我們将基礎圓角由 4px 調整為 2px。中背景産品以效率為第一優先級,圓角樣式作為 UI 上的重要細節,更小的圓角從視覺上減少界面細節,提升了資訊閱讀效率。此外,我們對陰影進行了調整,使其更符合真實陰影,也同時将資訊層級更好展現。

Ant Design 4.0 正式版釋出:暗色主題、元件重做設計規範更新相容性調整更小的尺寸元件重做如何更新以上

暗色主題

我們基于 v3 版本的色彩系統進行了更新,v4 提供了暗色主題。你可以在頁面中點選切換主題功能檢視暗色主題效果:

Ant Design 4.0 正式版釋出:暗色主題、元件重做設計規範更新相容性調整更小的尺寸元件重做如何更新以上

無邊框元件

在業務中,我們發現有些場景會存在輕量級的選擇元件。因而我們提供了一種新的無邊框樣式,讓開發者可以更簡單的嵌入這些元件而不用額外覆寫樣式。

相容性調整

Ant Design 3.0 為了相容舊版 IE 做出了非常多的努力。然而根據業界統計,IE9/10 浏覽器無論是在全球還是在國内份額都在随着 Windows 系統更新而在不斷縮減。我們在 4.0 版本,停止對 IE 9/10 的支援工作(但仍然會支援 IE 11)。因而過去一些低性能的元件,也會随着新的 css 特性而獲得性能提升。

與此同時,我們也将 v4 依賴的 React 最低版本要求更新到了 React 16.9。這意味着,v4 版本将會提供更多的 hooks 以簡化你的代碼。

此外,我們也将在 v3 版本警告的一些廢棄 API 進行了移除。我們強烈建議你将目前項目更新到 v3 的最後一個版本,并根據 warning 資訊将廢棄 API 進行更新。

更小的尺寸

[email protected] 中,我們引入了 svg 圖示。使用了字元串命名的圖示 API 無法做到按需加載,因而全量引入了 svg 圖示檔案,這大大增加了打包産物的尺寸。在 4.0 中,我們調整了圖示的使用 API 進而支援 tree shaking,減少 antd 預設包體積約 150 KB(Gzipped)。

舊版 Icon 使用方式将被廢棄,4.0 中會采用按需引入的方式。此外,我們也對相關依賴進行了精簡,進而降低打包尺寸(Gzipped):

Ant Design 4.0 正式版釋出:暗色主題、元件重做設計規範更新相容性調整更小的尺寸元件重做如何更新以上

元件重做

Form 重做

Form 作為高頻使用的元件,其 API 略顯備援。使用者需要通過 Form.create 的 HOC 方式獲得表單執行個體,而通過 form.getFieldDecorator 來對元件進行資料綁定。此外,每次資料變更便會進行整個表單的重新渲染,這使得在大資料表單中性能堪憂。在 v4 版本中,Form 将自帶表單執行個體,你可以直接通過 Form.Item 的 name 屬性進行資料綁定,進而簡化你的代碼。

我們發現大多數場景下,開發者其實隻關注表單送出成功的值。因而我們提供了 onFinish ,其隻會在表單驗證通過後觸發,而 validateFields 不在需要。

此外,Form 提供了 hooks 方法 Form.useForm 允許你對表單示例進行控制。

Table 重做

由于我們提升了相容性的最低要求,我們改成使用 sticky 樣式進行固定列的實作,因而大大減少了表單擁有固定列時的性能消耗。而對于不支援 sticky 的 IE 11,我們采取降級處理。

同時,我們提供了新的 summary API 用于實作總結行的效果:

Ant Design 4.0 正式版釋出:暗色主題、元件重做設計規範更新相容性調整更小的尺寸元件重做如何更新以上

對于 sorter 提供了多列排序的功能:

Ant Design 4.0 正式版釋出:暗色主題、元件重做設計規範更新相容性調整更小的尺寸元件重做如何更新以上

此外,我們調整了底層邏輯,現在 fixedColumn、expandable、scroll 可以混合使用。提供了 body API 用于自定義表格内容實作,你可以由此實作諸如虛拟滾動的效果。

全新 DatePicker、 TimePicker 與 Calendar

我們對日期元件進行了整體重寫,因而将其與 moment 進行解耦。你可以通過我們提供的 generate 方法生成自定義日期庫的 Picker 元件。為了保持相容,預設的 Picker 元件仍然使用 moment 作為日期庫。

此外,我們提供了全套的時間、日期、周、月、年選擇器以及對應的範圍選擇器。你可以通過 picker 屬性進行設定,不再需要通過 mode 的受控方法來實作特地的選擇器。

在範圍選擇器上,我們也對互動進行了優化。你現在可以單獨的選擇開始或結束時間,并且完美優化了手動輸入日期的體驗。

Ant Design 4.0 正式版釋出:暗色主題、元件重做設計規範更新相容性調整更小的尺寸元件重做如何更新以上

Notification/Modal 提供 Hooks

在過去版本,你或許會遇到 Modal.xxx 和 Notification.xxx 調用方法無法獲得 Context 的問題。這是由于我們對于這些文法糖會額外通過 ReactDOM.render 建立一個 React 執行個體,這也導緻了 context 丢失的問題。在新版中,我們提供了 hooks 方法,讓你可以将節點注入到需要獲得 context 的地方。

虛拟滾動

v4 中,我們将 Tree、TreeSelect、Select 進行了改造,其預設使用虛拟滾動技術進行性能優化以承載大資料量的選項渲染。

Living demo:

https://ant.design/components/select-cn/#components-select-demo-big-data

此外,也對鍵盤互動以及無障礙進行了優化。

更多新功能/特性/優化部分

  • ConfigProvider 提供 direction 配置以支援 rtl 語言國際化。
  • Form 與 ConfigProvider 支援 size 設定包含元件尺寸。
  • Typography 增加 suffix 屬性。
  • Progress 增加 steps 子元件。
  • TextArea 支援 onResize。
  • Grid 使用 flex 布局。
  • ......

如何更新

為了盡可能簡化更新,我們保持了最大相容。但是仍然有一部分 breaking change 需要注意。你可以首先嘗試使用我們提供的 codemod 工具進行遷移,對部分無法遷移的内容進行手工遷移。更新請參考官方文檔。

以上

Ant Design 4.0 的誕生離不開社群志願者的貢獻與支援,感謝 @saeedrahimi 實作了 rtl 的國際化功能,@shaodahong 對于相容包的貢獻,以及每個參與幫助開發的人。是你們為開源的貢獻讓 Ant Design 變得更加美好!

繼續閱讀