Umi,中文可发音为乌米,是可扩展的企业级前端应用框架。Umi 以路由为基础的,同时支持配置式路由和约定式路由,保证路由的功能完备,并以此进行功能扩展。然后配以生命周期完善的插件体系,覆盖从源码到构建产物的每个生命周期,支持各种功能扩展和业务需求。
Umi 是蚂蚁金服的底层前端框架,已直接或间接地服务了 3000+ 应用,包括 java、node、H5 无线、离线(Hybrid)应用、纯前端 assets 应用、CMS 应用等。他已经很好地服务了我们的内部用户,同时希望他也能服务好外部用户。
他把大家常用的技术栈进行整理,收敛到一起,让大家只用 Umi 就可以完成 80% 的日常工作。
Umi 支持插件和插件集,通过这张图应该很好理解到他们的关系,通过插件集我们把插件收敛依赖然后支持不同的业务类型。
Umi 的路由既支持配置式,又支持约定式。配置式是对于现实的低头,也是大部分用户在用的,因为他功能强大;约定式是我们希望走去的方向,因为他简洁优雅。
.umi 临时目录是整个 Umi 项目的发动机,你的入口文件、路由等等都在这里,这些是由 umi 内部插件及三方插件生成的。
你通常会在 .umi 下看到以下目录,
.umi core # 内部插件生成pluginA # 外部插件生成presetB # 外部插件生成umi.ts # 入口文件临时文件是 Umi 框架中非常重要的一部分,框架或插件会根据你的代码生成临时文件,这些原来需要放在项目里的脏乱差的部分都被藏在了这里。
你可以在这里调试代码,但不要在 .git 仓库里提交他,因为他的临时性,每次启动 umi 时都会被删除并重新生成。
首先得有 node,并确保 node 版本是 10.13 或以上。(mac 下推荐使用 nvm 来管理 node 版本) $ node -v 推荐使用 yarn 管理 npm 依赖,并使用国内源(阿里用户使用内网源)。
国内源 $ npm i yarn tyarn -g
后面文档里的 yarn 换成 tyarn $ tyarn -v
阿里内网源 $ tnpm i yarn @ali/yarn -g
后面文档里的 yarn 换成 ayarn $ ayarn -v
先找个地方建个空目录。 $ mkdir myapp && cd myapp
通过官方工具创建项目, $ yarn create @umijs/umi-app 或 npx @umijs/create-umi-app Copy: .editorconfig Write: .gitignore Copy: .prettierignore Copy: .prettierrc Write: .umirc.ts Copy: mock/.gitkeep Write: package.json Copy: README.md Copy: src/pages/index.less Copy: src/pages/index.tsx Copy: tsconfig.json Copy: typings.d.ts
$ yarn yarn install v1.21.1 [1/4] 🔍 Resolving packages… success Already up-to-date. ✨ Done in 0.71s.
$ yarn start
Starting the development server…
✔ Webpack Compiled successfully in 17.84s
DONE Compiled successfully in 17842ms 8:06:31 PM
App running at:
Local: http://localhost:8000 (copied to clipboard)Network: http://192.168.12.34:8000 在浏览器里打开 http://localhost:8000/,能看到以下界面,
默认的脚手架内置了 @umijs/preset-react,包含布局、权限、国际化、dva、简易数据流等常用功能。比如想要 ant-design-pro 的布局,编辑 .umirc.ts 配置 layout: {},并且需要安装 @ant-design/pro-layout。
import { defineConfig } from ‘umi’;
export default defineConfig({
layout: {}, routes: [ { path: ‘/’, component: ‘@/pages/index’ }, ], }); 不用重启 yarn start,webpack 会在背后增量编译,过一会就可以看到以下界面,$ yarn build
✔ Webpack Compiled successfully in 17.17s
DONE Compiled successfully in 17167ms 8:26:25 PM
Build success. ✨ Done in 20.79s.
构建产物默认生成到 ./dist 下,然后通过 tree 命令查看, tree ./dist
./dist ├── index.html ├── umi.css └── umi.js
发布之前,可以通过 serve 做本地验证, $ yarn global add serve $ serve ./dist 如果报serve’不是内部命令’错误,则需要先安装serve,安装命令为: $ npm install -g serve
┌────────────────────────────────────────────────────┐ │ │ │ Serving! │ │ │ │ - Local: http://localhost:5000 │ │ - On Your Network: http://192.168.12.34:5000 │ │ │ │ Copied local address to clipboard! │ │ │ └────────────────────────────────────────────────────┘
访问 http://localhost:5000,正常情况下应该是和执行 yarn start 时是一致的。
本地验证完,就可以部署了。你需要把 dist 目录部署到服务器上。