学习一门框架最快的方式,就是找个简单的栗子上手了。
快速上手
环境准备
node
v8.1
以上推荐用yarn,并使用国内源
1
2
3
4
5
6
7
8
9
10# 国内源
# 需要root权限
$ npm i yarn tyarn -g
# 后面文档里的 yarn 换成 tyarn
$ tyarn -v
# 阿里内网源
$ tnpm i yarn @ali/yarn -g
# 后面文档里的 yarn 换成 ayarn
$ ayarn -v全局安装
umi
1
2
3
4$ yarn global add umi
# 确保版本2.00+
$ umi -v
2.9.6创建项目
1
2
3
4
5
6
7# 找个地方建立空目录
$ mkdir myapp && cd myapp
# umi generate
$ umi g page index
$ umi g page users
# 启动本地服务器
$ umi dev
约定式路由
umi dev
后pages
下多了个.umi
的目录作为umi
的临时目录,每次重启或者pages
下的文件修改都会重新生成这个文件夹下的文件,所以不要直接在里面修改代码。
在index
和users
里直接加一些路由跳转逻辑
1 | //pages/index.js |
1 | //pagess/users.js |
这是,index
和users
两个页面可以路由跳转了。
部署发布
构建
1
2$ umi build
# 构建产物默认生成到./dist下本地验证
1
2
3# 发布之前,做本地验证
$ yarn global add serve
$ serve ./dist部署
1
2$ yarn global add now
$ now ./dist
测试与配置检查
测试
1
2# 内置了基于 jest 的测试工具 umi-test
$ umi test配置检查
1
$ umi inspect
脚手架创建umi
项目
1 | # |
路由 约定式路由
基础路由
1 | // umi根据pages目录自动生成路由配置 |
动态路由
1 | //umi约定,带$前缀的目录或文件为动态路由 |
可选的动态路由
1 | //umi约定带$后缀的为可选动态路由 |
嵌套路由
1 | //umi约定目录下有_layout.js时会生成嵌套路由,以_layout.js为该目录的layout |
全局layout
1 | // umi约定src/layouts/index.js 为全局路由,返回一个 React 组件,通过 props.children 渲染子组件。 |
不同的全局layout
1 | // umi不支持直接配置。 |
404路由
1 | //umi约定pages/404.js为404页面,需返回React组件 |
通过注释扩展路由
1 | // 约定路由文件的首个注释如果包含 yaml 格式的配置,则会被用于扩展路由。 |
配置式路由
一个栗子
1 | // 需要配置.umirc.(ts|js) 或者 config/config.(ts|js)中的routes属性 |
权限路由
配置路由的Routes来实现权限路由
1 | // 约定式的通过 yaml 注释添加,配置式的直接配上即可。 |
路由动效
1 | // 以react-transition-group实现路由动效为例 |
面包屑
面包屑其实就是一个告诉来访者他们目前在网站中所处的位置及如何返回的导航组件。(一般设置为3层结构)
1 | // 以 react-router-breadcrumbs-hoc为例 |
页面间跳转
声明式
1 | // 通常作为组件使用 |
命令式
1 | // 通常在时间处理中被调用 |