距離 umi 1.0 發佈 已有半年,umi 在這段時間作了大量的重構和改進,438 個 commit,20 個 beta 版本,今天正式發佈 2.0 版本,並調整定位爲可插拔的企業級 react 應用框架。css
umi,中文可發音爲烏米,是一個可插拔的企業級 react 應用框架。umi 以路由爲基礎的,支持類 next.js 的約定式路由,以及各類進階的路由功能,並以此進行功能擴展,好比支持路由級的按需加載。而後配以完善的插件體系,覆蓋從源碼到構建產物的每一個生命週期,支持各類功能擴展和業務需求,目前內外部加起來已有 50+ 的插件。html
umi 是螞蟻金服的底層前端框架,已直接或間接地服務了 600+ 應用,包括 java、node、H5 無線、離線(Hybrid)應用、純前端 assets 應用、CMS 應用等。他已經很好地服務了咱們的內部用戶,同時但願他也能服務好外部用戶。前端
他包含如下特性:java
umi@1 內置了不少優化方案,好比按需編譯、按需加載、eslint、pwa、antd 校驗等等,這些方案能提高開發體驗和運行效率,但同時也提高了入門 umi 的門檻。node
因此 umi@2 默認關掉了不少優化方案:react
而後把這些功能改由插件來實現,按需開啓,以保證 umi 內核的輕量。同時,默認構建只產生 index.html、umi.js 和 umi.css,對新手來講部署更友好。webpack
umi@1 的插件機制有點過於強大,什麼都能作,什麼都能改。因此 umi@2 重構了插件機制,作了不少約束,明確什麼能作,什麼不能作,並提供了一套更友好的插件 API。git
同時,這套插件機制已在內部得以驗證,由超過 30 個插件構成的很是優秀的內部框架 Bigfish 正在服務於螞蟻金服,包含埋點、後端接入、性能、服務接入、權限等等。github
umi@1 的插件比較散,使用時一般須要安裝多個插件,升級和使用都比較麻煩,因此咱們提供了 umi-plugin-react。umi-plugin-react 是插件集,相似 babel 裏 preset 的概念。web
目前有內置了 13 個插件,包含:
趁 umi@2 的機會,咱們把主要依賴度升級到了最新,除了 webpack@4 和 babel@7,還有 less@三、postcss@七、typescript@3 等,以及帶來相關的構建性能提高。
同時,咱們用了 webpack-chain 來擴展 webpack 配置,這是相比以前的 webpack.config.js
更爲穩妥的方案。
好比:
export default {
chainWebpack(config, { webpack }) {
// 設置 alias
config.resolve.alias.set('a', 'path/to/a');
// 刪除進度條插件
config.plugins.delete('progress');
},
}
複製代碼
umi generate
umi@2 支持 umi generate
(umi g
) 命令快速生成文件,
$ umi g page index
複製代碼
同時 umi generate
是可被擴展的,好比 umi-plugin-dva 就基於此擴展了 dva:model
等文件的快速生成。
.env
和 .env.local
配置環境變量yaml
格式的註釋擴展路由信息@
,指向 src 目錄入門 umi 很簡單,
# 安裝
$ yarn global add umi # 或者 npm install -g umi
# 新建應用
$ mkdir myapp && cd myapp
# 新建頁面
$ umi generate page index
# 本地開發
$ umi dev
# 構建上線
$ umi build
複製代碼
詳見:umijs.org/zh/guide/ge…,也能夠觀看 10 分鐘入門 umi 視頻版。
目前,antd 社區的 antd-pro 和 antd-admin 都已升級到 umi@2,以前 umi@1 的項目可參考文檔或視頻進行升級。
你們能夠加釘釘羣。
也能夠加微信羣(羣滿 100 人,加 sorryccpro
好友備註 umi
邀請加入)。
感謝全部參與貢獻 umi 以及在項目中使用了 umi 的內外部同窗。umi 纔剛剛起步,很但願你能一塊兒來完善他,咱們 Github 見!👋