主頁 > 企業開發 > Ng-Matero v15 正式發布

Ng-Matero v15 正式發布

2022-12-31 07:03:03 企業開發

前言

Angular 按照既定的發版計劃在 11 月中旬發布了 v15 版本,推遲了一個月(幾乎每個版本都是這個節奏??),Ng-Matero 也終于更新到了 v15,其實 Ng-Matero 本身的更新非常簡單,但是同步維護的 Material Extensions 這個庫要先于 Ng-Matero 發布,所以大部分精力都耗費在組件庫上面了,

我已經很久沒有寫關于 Ng-Matero 的發版文章了,上次介紹發版還是 v10 版本,竟然已經是兩年前的事情了,在這兩年的開源生涯中,主要精力都在 Material 的擴展組件庫上面,值得興奮的是,就在 2022 即將過去時,Material Extensions 的周下載量終于破萬了??,六月份時這個資料還只是 5k+,從 0 到 5k 用了兩年,而從 5k 到 1w 只用了半年,

本文主要聊一下 Ng-Matero 升級 v15 時遇到的一些問題及感觸,同時也簡單說一下近期在 v14 中新增的幾個功能,

GitHub: https://github.com/ng-matero/ng-matero

日期時間組件 Datetimepicker 的重磅更新

日期時間組件 datetimepicker 是在 v12 中添加的,同時也增加了 moment-adapter 日期模塊,但是 datetimepicker 的時間選擇模塊并沒有完全遵循 Material 規范(缺少時間輸入模式),這也影響了很多需求的實作,在外國友人的幫助下,14.6.0 終于加上了時間輸入功能,效果如下所示:

?? 在線體驗地址

時間輸入功能默認是關閉的,需要添加 timeInput 引數啟用該特性,

<mat-form-field>
  <input [mtxDatetimepicker]="datetimePicker" matInput>
  <mtx-datetimepicker #datetimePicker [timeInput]="true"></mtx-datetimepicker>
  <mtx-datetimepicker-toggle [for]="datetimePicker" matSuffix></mtx-datetimepicker-toggle>
</mat-form-field>

另外一個比較重要的更新是增加了 luxon-adapterdate-fns-adapter 兩個日期模塊,這算是和 Angular Material 對齊了,同樣要感謝外國友人的幫助,具體使用方式可以參考這個 issue,

側邊欄導航的焦點管理

側邊欄導航的聚焦功能是在 14.3.0 中添加的,可能很多人沒有注意到這個不顯眼的功能(使用 TAB 鍵即可快速的切換焦點,按 space 或者 enter 鍵可以展開收起二級選單,按 enter 鍵可以跳轉路由),具體效果如下圖所示:

?? 在線體驗地址

焦點管理屬于 a11y 的范疇,使用 Angular Material 可以很輕松的完成 a11y 的需求,同時 Angular CDK 中也有 A11yModule 用于自定義焦點管理,總之非常方便,但是我并沒有借助 CDK 來實作側邊欄導航的聚焦,只是使用了原生的 HTML 標簽,具體方法不在此贅述,感興趣的小伙伴可以留言咨詢,

另外,側邊欄選單按鈕使用語意化標簽進行了優化,關于按鈕的選擇可以參考 Angular Material 在 Button 檔案中的說明:

Angular Material 使用原生的 <button><a> 元素,來保留默認的無障礙性體驗, 當要執行某些動作時,應該使用 <button> 元素, 當用戶要導航到其它視圖時,應該使用 <a> 元素,

很多人可能覺得這個功能不重要,但是作為一個互動細節強迫癥患者來說,真的無法忍受按 TAB 鍵時焦點亂飛且不知所蹤的問題,題外話,我好奇的嘗試了大部分高人氣的 admin 后臺(包括其它技術堆疊 React、Vue),發現 99% 的專案都沒有處理 TAB 聚焦??,

基于 MDC 的 Angular Material 組件

我覺得 v15 最大的變化不是 Angular,而是 Angular Material,大部分組件都切換到了 MDC 風格,之前這些組件都是在 material-experimental 這個庫中,現在轉正了,而之前的組件都加上了 legacy- 前綴,

直接使用 ng update 升級的話,所有參考的組件都會自動改為 legacy 組件,所以并不會出現 break changes,但是 legacy 的組件都被標記為 deprecated(會顯示中劃線),看起來不舒服,update 完成之后可以再使用遷移工具將指定的組件升級到 MDC,還是挺方便的,詳情參考官方檔案 遷移到基于 MDC 的 Angular Material Components,里面詳細介紹了組件的變化內容以及升級時的注意事項,

說一下自己的感受:

在第一次得知 Angular 官方將在 v15 全面遷移 MDC 時,內心還是很抵觸的,主要是覺得 MDC 的很多效果做的不如 Angular Material 細膩(比如 form-field 的過渡影片),但是在陸續升級完擴展組件庫及 ng-matero 之后,發現 MDC 還是挺香的,很多樣式得到優化,不需要自己再用 patch 方式修補(比如 icon 按鈕的 hover 效果),

影響最大的組件應該是 sliderchips,之前的寫法都會報錯,必須手動修復,再就是 card 組件,必須配合 mat-card-content 才會出現邊距,如果用到的 card 組件很多,這塊的作業量也挺大的,如果專案中有對 Material 樣式的魔改,大部分的樣式需要將 class 前綴 .mat- 替換成 .mat-mdc-

另外,form-field 組件移除了 legacy 樣式,其實我最喜歡的還是這個風格,比較坑的是外層容器使用了 overflow: hidden 屬性,影響到了 Material Extensions 中的 select 組件,暫時通過設定默認引數 appendTo="body" 臨時修復,后面再考慮更好的方案,

停止更新的 Angular Flex-Layout

萬萬沒想到 Angular Flex-Layout 竟然不再更新到 v15,雖然早就知道一直處于 beta 版本的 Flex-Layout 會在某個版本發生重大變化,但是等來的不是轉正而是棄更??,Angular 官方還專門寫了一篇文章來介紹這件事,建議使用 CSS 來替換 Flex-Layout,其實 Flex-Layout 和 CSS 并不能完全劃等號,Flex-Layout 是一套指令集,GitHub 上面有下面一段介紹:

The real power of Flex Layout, however, is its responsive engine. The Responsive API enables developers to easily specify different layouts, sizing, visibilities for different viewport sizes and display devices.

Flex-Layout 的回應式 API 確實非常強大,它的柵格不受限制,你可以使用 %、px 等任意單位設定回應式布局,使用 CSS 很難做到這一點,一般的 CSS 都是 12 或者 24 列柵格,無法隨意設定柵格的列數,而且想要實作一套基于 CSS 的回應式系統,編譯出來的代碼非常龐大,劃分的列數越細,編譯出來的體積就越大,而基于 JS 動態生成的回應式系統就不會有這種煩惱,如果專案中有自定義 DSL 的話,使用 Flex-Layout 編譯柵格會更加簡便,

說了這么多,其實 Flex-Layout 只是停止更新,v14 還是可以用的??,只是會提示依賴錯誤,不過 Ng-Matero 已經移除了 Flex-Layout,主要是示例專案中沒有必須依賴 Flex-Layout 的地方,Ng-Matero 早就有一套和 Flex-Layout 斷點相同的 grid class,只要將指令替換成 CSS class 就可以,使用方式和 Bootstrap 是一樣的,

使用 Flex-Layout 實作回應式柵格:

<div fxLayout="row wrap" fxLayoutGap="16px grid">
  <div fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-sm="25" fxFlex.gt-md="20"></div>
</div>

使用 grid class 實作回應式柵格:

<div >
  <div ></div>
</div>

總結

這篇文章是本年度的第一篇文章,也是最后一篇,說來真是慚愧,Ng-Matero 從第一版發布至今已有三年半的時間,總共發布了 8 個大版本,但是很多功能依然沒有時間和精力去完善,這幾年持續維護了多個開源專案,感覺很疲憊,但是已經當成了生活的一部分,后面還會一直不忘初心的堅持下去,特別感謝所有朋友的支持與鼓勵,

感謝您的閱讀,如果您對我的文章感興趣,可以關注我的博客,我是敘帝利,下篇文章再見!


開發低代碼平臺的必備拖拽庫 https://github.com/ng-dnd/ng-dnd

基于 Angular Material 的中后臺管理框架 https://github.com/ng-matero/ng-matero

Angular Material Extensions 擴展組件庫 https://github.com/ng-matero/extensions

仿 Windows 照片查看器插件 https://github.com/nzbin/photoviewer

仿 Windows 照片查看器插件 jQuery 版 https://github.com/nzbin/magnify

完美替代 jQuery 的模塊化 DOM 庫 https://github.com/nzbin/domq

簡化類名的輕量級 CSS 框架 https://github.com/nzbin/snack

與任意 UI 框架搭配使用的通用輔助類 https://github.com/nzbin/snack-helper

單元素純 CSS 加載影片 https://github.com/nzbin/three-dots

有趣的 jQuery 卡片抽獎插件 https://github.com/nzbin/CardShow

懸疑科幻電影推薦 https://github.com/nzbin/movie-gallery

鍛煉記憶力的小程式 https://github.com/nzbin/memory-stake

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/541015.html

標籤:其他

上一篇:Vue生命周期

下一篇:年終總結

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more