Umi 4 RC 發布

大家好,我是若川。感謝大家一年以來的支持和陪伴。這一年疫情反復,年底應該有由于疫情不能回家的小伙伴。在這里先祝福大家,新年快樂。

本打算今天不發文,但看到這篇覺得不錯,就發一下。


大家好,Umi 4 經過幾個月的開發,終于要和大家見面了。相比 Umi 2 到 3,3 到 4 的變化是巨大的,開發時間也更長,但我們盡量把對于開發者的影響降低到最小。按捺住激動的心情,在此先和大家分享下都有哪些變化。

🎉 新官網和文檔

🚀 MFSU V3 & 默認開啟

🎭 雙構建引擎和 ESMi

🕸 Webpack 5

?🏾?♂? React Router 6 & 新路由

🐹 最佳實踐迭代

🛡? 依賴預打包

🤺 Umi Pro

🐛 Low Import 研發模式

?? 強約束功能集成

🎈 Import All From Umi 迭代

🍀 srcTranspiler 和 depTranspiler

🌼 jsMinifier 和 cssMinifier

🌸 應用元數據

?? 微生成器

🧪 貼心小改進

新官網和文檔。下圖是新官網的首頁,包括重新梳理的文檔、信息結構、以及新寫的文檔插件。目前包含基礎的配置、API、升級和快速上手等基礎文檔,剩余文檔還在緊張編寫中。有個變化是之前插件的文檔集成到 Umi 官網中,成為 Umi Pro 的一部分,之后無需跳轉。

647f68435d3ce98ce2daba24d435bbac.png

MFSU V3 & 默認開啟。MFSU 更新了他的第三個大版本,如果你有用 Umi 3 內置的 MFSU 并遇到問題,建議重新嘗試,這個版本有很多改進,解決基本所有之前可能會遇到的詭異問題,并且編譯速度和頁面打開速度都更快。昨天我還有寫一篇《比 Vite 更快的 MFSU》。基于此,我們自信地把這個功能在 Umi 4 中默認開啟。還有值得一提的是,MFSU 可脫離 Umi 運行。

1c1b0cd8706ac6f9e30c1c082f96e91f.png

雙構建引擎和 ESMi。Umi 4 提供 Vite 和 Webpack 兩種構建模式供開發者選擇,并盡可能保證他們之間功能的一致性,可能有些同學會喜歡 dev 用 vite,build 用 webpack 這樣的組合。同時基于 Vite 模式實現了 ESMi 的 Client 端,ESMi 依賴服務端,在外網還無法使用。

Webpack 5。Umi 4 默認使用 webpack 5 并開啟物理緩存。

React Router 6 & 新路由。Umi 4 的路由基于 React Router 6 實現,個人非常喜歡這個版本,因為 Remix 的原因,React Router 6 從設計上考慮了配置式路由的場景,讓我得以刪除大量 Umi 3 中關于路由渲染的代碼。同時基于此,設計了新的路由結構,方便擴展和在未來處理路由的約定式請求。

最佳實踐迭代。針對之前 umijs/plugins 倉庫中的插件進行了重寫、升級,并整合到主倉庫。這么做是為了更好的頂層設計,讓官方插件之間的風格更一致。

依賴預打包。由于服務企業內部,安全和穩定是其中很重要點,加上最近 colors 和 faker.js 鬧得社區沸沸揚揚,誰都不希望睡一覺醒來,自己負責的業務掛了,還背個故障。Umi 4 接著 Umi 3 繼續做依賴預打包的事,并且更徹底,不僅是 node 側的依賴,部分運行時的依賴也會做鎖定,比如 core-js 和 @babel/runtime。

26f40c23238f5b0e6b9ce65b95650cc8.png

Umi Pro。Umi Pro 是內部 Bigfish 框架的對外版本,解我們自己的問題,同時也給社區另一個集中化框架的選擇。

Low Import 研發模式。這是 Umi 4 的試驗性功能之一,目前已開發完成,解的問題是讓開發者少些或不寫 import 語句。項目中大量的 import 其實都可以通過工程化的方式自動處理。Umi 4 里通過 lowImport: {} 開啟,然后就可以無 import 直接用路由相關的 Link、useLocation 等,數據流相關的 connect、useModel,antd 組件 Button、Calendar 等,以及其他更多。

011a7b79388f0f0c325eaf5fb02deff4.png

強約束功能集成。Umi 4 提供 API 讓強約束和代碼校驗變得非常容易。API 包括 api.onCheck、api.onCheckConfig、api.onCheckPkgJSON 和 api.onCheckCode,顧名思義,非常好理解他們分別是干嘛的,可以分別對依賴類、代碼類和配置類的內容做校驗和卡點,適用于團隊。

Import All From Umi 迭代。這是兩年前 Umi 3 加的功能,最近發現 Remix、prisma、vitekit 等框架和工具都有類似實現。這種方式有好有壞。好處是通過 umi 將大量依賴管理起來,用戶無需手動安裝。壞處是更黑盒,同時有點 Hack。Umi 4 不能解其黑盒問題,但解了 Hack 問題,讓實現無副作用,可以和 Vite、MFSU 等方案無縫結合。

srcTranspiler 和 depTranspiler。提供針對源碼編譯和依賴編譯更多選擇。源碼編譯可選 babel、swc 和 esbuild,目前沒有銀彈,合適場景做合適的選擇。比如 swc 由于不支持 top level await,和 mfsu 會有些沖突,但他適用于 build,因為有補丁可以兼容到 es7;比如 esbuild 適用于 dev,因為快。數據方面以 ant-design-pro 項目為例,源碼編譯用 esbuild 相比 babel 在 M1 2020 無緩存情況下會快 3s。

jsMinifier 和 cssMinifier。js 壓縮和 css 壓縮 Umi 4 默認都用的 esbuild,因為快。同時也提供更多選擇,js 壓縮還支持 swc、terser 和 uglifyJs,css 壓縮還支持 cssnano。

應用元數據。Umi 4 有通過 api.appData 收集各種項目數據,從配置、路由、package.json、tsconfig.json、npmClient 到數據流、國際化、antd 用了哪個版本、react 和 react-dom 的版本等,應有盡有,這對于插件開發者會非常實用,也適用于有統計需求的場景。

微生成器。沒錯,就是 modern.js 的微生成器,這功能從 modern.js 里學習了不少,名字就不改了。舉個例子,比如 prettier 功能,可能不是每個項目都需要,就比較適用于微生成器,按需啟用、添加配置、安裝依賴。

貼心小改進。還有不少貼心小改進,舉兩個例子。1 是項目中新增 plugin.ts,會默認作為插件添加,方便項目進行一些插件級的擴展;2 是調試問題時通常需要修改編譯后的代碼看看有沒有改對,你把 umi.js 下下來存到項目根目錄,umi 會優先使用這份代碼。

以上是 Umi 4 目前的新功能。

除此之外,還有一些計劃在正式版發布之前做的事情。包括 api route、umi server and adapter、route loader、穩定的 lint、更多命令、組件研發 father 4、文檔工具 dumi 2 等,會在之后的 RC 版本中與大家見面。

最后,歡迎大家嘗鮮 Umi 4,官方文檔有準備 ant-design-pro 從 Umi 3 到 4 的升級文檔。

0003d3c788a244ef565ef3530289143f.gif

·················?若川簡介?·················

你好,我是若川,畢業于江西高校。現在是一名前端開發“工程師”。寫有《學習源碼整體架構系列》20余篇,在知乎、掘金收獲超百萬閱讀。
從2014年起,每年都會寫一篇年度總結,已經寫了7篇,點擊查看年度總結。
同時,最近組織了源碼共讀活動,幫助3000+前端人學會看源碼。公眾號愿景:幫助5年內前端人走向前列。

76ea958083601fb8e0cc3a49ee1ffbc5.png

識別方二維碼加我微信、拉你進源碼共讀

今日話題

略。分享、收藏、點贊、在看我的文章就是對我最大的支持~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/274954.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274954.shtml
英文地址,請注明出處:http://en.pswp.cn/news/274954.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

讓你沉迷的五種設計

讓你沉迷的五種設計 好游戲總是能令人沉迷其中無法自拔,外媒cracked經過分析,發現有五種設計方法必不可少; 1.斯金納箱原理:這是行為心理學派在實驗室內研究動物學習能力的箱形實驗裝置,游戲開發也得益于此&#xff0c…

Java學習路線詳解

有很多的[Java請添加鏈接描述](http://www.hfxms.com.cn/java/)程序員,在初期學習時,通常會對如何學習而感到迷茫。[合肥學碼思請添加鏈接描述](http://www.hfxms.com.cn/)小編就為大家分析如何學好Java編程,相信能幫助那些正在處于迷茫狀態的…

figma下載_在Figma中將約束與布局網格一起使用

figma下載While doing research for the book “Designing in Figma”, I discovered a powerful way to lay out objects using a combination of Layout Grid and Constraints. The interface of Figma does not indicate a connection between the two, so it can be discov…

換一種方式表達

http://player.youku.com/player.php/sid/XMjY2MTE5NDU2/v.swf 轉載于:https://www.cnblogs.com/JCSU/archive/2012/03/17/2403324.html

新的一年,碎片化學習前端,我推薦這幾個公眾號~

大家好,我是若川。假期余額不足,無法充值。快樂的時光總是短暫的。馬上又開始一年的學習和“奮斗”。前端技術日新月異,發展迅速,作為一個與時俱進的前端工程師,需要不斷的學習。這里強烈推薦幾個前端開發工程師必備的…

Java單元測試之JUnit4詳解

2019獨角獸企業重金招聘Python工程師標準>>> Java單元測試之JUnit4詳解 與JUnit3不同,JUnit4通過注解的方式來識別測試方法。目前支持的主要注解有: BeforeClass 全局只會執行一次,而且是第一個運行Before 在測試方法運行之前運行…

我在黑暗中看到你眼中的月光_你好黑暗,我的老朋友

我在黑暗中看到你眼中的月光(Originally published on https://web.dev/prefers-color-scheme/.)(最初發布于https://web.dev/prefers-color-scheme/ 。) 介紹 (Introduction) 📚 I have done a lot of background research on the history and theory of dark mod…

ant 實現批量打包android應用

很多的應用中需要加上應用推廣的統計,如果一個一個的去生成不同渠道包的應用,效率低不說,還有可能不小心弄錯了分發渠道,使用ant可以批量生成應用。一、添加渠道包信息為了統計渠道信息,就不得不在程序的某個地方加入渠…

Element Plus 正式版發布啦!

大家好,我是若川。祝大家新年快樂,開工大吉。公眾號回復「紅包」可以領取源碼共讀紅包封面。持續組織了6個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12 參與,每周大家一起學習200行左右的源碼,共同進步。同時…

大型網站技術架構(一)大型網站架構演化

2019獨角獸企業重金招聘Python工程師標準>>> 看完了有一本書,就應該有所收獲,有所總結,最近把《大型網站技術架構》一書給看完了,給人的印象實在深刻,再加上之前也搞過書本上講的反向代理和負載均衡以及ses…

永不示弱_永不過時的網頁設計:今天和2000年的在線投資組合

永不示弱重點 (Top highlight)Philippe Starck, a renowned industrial designer, once said:著名的工業設計師Philippe Starck曾經說過: “A designer has a duty to create timeless design. To be timeless you have to think really far into the future, not …

如何使用 React 創建一個作品集網站

大家好,我是若川。持續組織了6個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12 參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。今天,你…

博弈論入門 HDU 1850

Problem Description 一年在外 父母時刻牽掛春節回家 你能做幾天好孩子嗎寒假里嘗試做做下面的事情吧陪媽媽逛一次菜場悄悄給爸爸買個小禮物主動地 強烈地 要求洗一次碗某一天早起 給爸媽用心地做回早餐如果愿意 你還可以和爸媽說咱們玩個小游戲吧 ACM課上學的呢~下…

新的一年,如何高效學習前端前沿知識~

今天強烈推薦一些互聯網行業內優質技術公眾號,互聯網人大部分都關注了,包括目前主流的公司技術團隊號,技術社區號,個人技術號,這些號行業深耕已久,會給你帶來事半功倍的效果。公眾號那么多,文章…

RabbitMQ學習總結(7)——Spring整合RabbitMQ實例

2019獨角獸企業重金招聘Python工程師標準>>> 1.RabbitMQ簡介 RabbitMQ是流行的開源消息隊列系統,用erlang語言開發。RabbitMQ是AMQP(高級消息隊列協議)的標準實現。 官網:http://www.rabbitmq.com/ 2.Spring集成Rabbi…

UIScrollView實現不全屏分頁的小技巧

瀏覽一系列圖片時,我們會經常使用UIScrollView來進行實現,因為其自帶的pagingEnabled屬性,可以非常方便的自動支持手勢左右輕掃切換切換頁面。pagingEnabled不過最近做的一個產品,設計的效果有所不同,希望每一頁圖片的…

談談對java中分層的理解_讓我們談談網頁設計中的卡片設計

談談對java中分層的理解“I want a card”, this is the first demand point that the customer said in the last issue when talking to me about demand. There is no doubt that the card type is excellent for both PC and mobile phones. From online shopping malls to…

1-jdk的安裝與配置

1- Jvm、jdk、jre之間的關系 JVM:Java虛擬機,保證java程序跨平臺。(Java Virtual Machine)JRE: Java運行環境,包含JVM和核心類庫。如果只是想運行java程序,只要安裝JRE即可。(Java R…

來自未來,2022 年的前端人都在做什么?

大家好,我是若川。持續組織了6個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12 參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。來自上帝視角的總覽…

模擬

狀態壓縮 uva 12368 - Candles 2011 - Dhaka 1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<string> 5 #include<algorithm> 6 #include<math.h> 7 #include<map> 8 #include<queue> 9 using…