快速上手

更喜欢观看视频?可以点此观看

环境准备

首先得有 node,并确保 node 版本是 8.10 或以上。(mac 下推荐使用 nvm 来管理 node 版本)

  1. $ node -v
  2. 8.1x

推荐使用 yarn 管理 npm 依赖,并使用国内源(阿里用户使用内网源)。

  1. # 国内源
  2. $ npm i yarn tyarn -g
  3. # 后面文档里的 yarn 换成 tyarn
  4. $ tyarn -v
  5. # 阿里内网源
  6. $ tnpm i yarn @ali/yarn -g
  7. # 后面文档里的 yarn 换成 ayarn
  8. $ ayarn -v

然后全局安装 umi,并确保版本是 2.0.0 或以上。

  1. $ yarn global add umi
  2. $ umi -v
  3. 2.0.0

脚手架

先找个地方建个空目录。

  1. $ mkdir myapp && cd myapp

然后通过 umi g 创建一些页面,

  1. $ umi g page index
  2. $ umi g page users

umi gumi generate 的别名,可用于快速生成 component、page、layout 等,并且可在插件里被扩展,比如 umi-plugin-dva 里扩展了 dva:model,然后就可以通过 umi g dva:model foo 快速 dva 的 model。

然后通过 tree 查看下目录,(windows 用户可跳过此步)

  1. $ tree
  2. .
  3. └── pages
  4. ├── index.css
  5. ├── index.js
  6. ├── users.css
  7. └── users.js

这里的 pages 目录是页面所在的目录,umi 里约定默认情况下 pages 下所有的 js 文件即路由,如果有 next.jsnuxt.js 的使用经验,应该会有点眼熟吧。

然后启动本地服务器,

  1. $ umi dev

快速上手 - 图1

约定式路由

启动 umi dev 后,大家会发现 pages 下多了个 .umi 的目录。这是啥?这是 umi 的临时目录,可以在这里做一些验证,但请不要直接在这里修改代码,umi 重启或者 pages 下的文件修改都会重新生成这个文件夹下的文件。

然后我们在 index 和 users 直接加一些路由跳转逻辑。

先修改 pages/index.js

  1. + import Link from 'umi/link';
  2. import styles from './index.css';
  3. export default function() {
  4. return (
  5. <div className={styles.normal}>
  6. <h1>Page index</h1>
  7. + <Link to="/users">go to /users</Link>
  8. </div>
  9. );
  10. }

再修改 pages/users.js

  1. + import router from 'umi/router';
  2. import styles from './index.css';
  3. export default function() {
  4. return (
  5. <div className={styles.normal}>
  6. <h1>Page index</h1>
  7. + <button onClick={() => { router.goBack(); }}>go back</button>
  8. </div>
  9. );
  10. }

然后浏览器验证,应该已经可以在 index 和 users 两个页面之间通过路由跳转了。

部署发布

构建

执行 umi build

  1. $ umi build
  2. DONE Compiled successfully in 1729ms
  3. File sizes after gzip:
  4. 68.04 KB dist/umi.js
  5. 83 B dist/umi.css

构建产物默认生成到 ./dist 下,然后通过 tree 命令查看,(windows 用户可忽略此步)

  1. $ tree ./dist
  2. ./dist
  3. ├── index.html
  4. ├── umi.css
  5. └── umi.js

本地验证

发布之前,可以通过 serve 做本地验证,

  1. $ yarn global add serve
  2. $ serve ./dist
  3. Serving!
  4. - Local: http://localhost:5000
  5. - On Your Network: http://{Your IP}:5000
  6. Copied local address to clipboard!

访问 http://localhost:5000,正常情况下应该是和 umi dev 一致的。

部署

本地验证完,就可以部署了,这里通过 now 来做演示。

  1. $ yarn global add now
  2. $ now ./dist
  3. > Deploying /private/tmp/sorrycc-1KVCmK/dist under chencheng
  4. > Synced 3 files (301.93KB) [2s]
  5. > https://dist-jtckzjjatx.now.sh [in clipboard] [1s]
  6. > Deployment complete!

然后打开相应的地址就能访问到线上的地址了。