UMI3学习笔记

929 阅读2分钟

官方文档:umijs.org/zh-CN/docs/…

完整指南:v2.umijs.org/zh/guide/

ant-design-pro:pro.ant.design/zh-CN/docs/…

1、创建项目

#1、创建
yarn create @umijs/umi-app
# 或 npx @umijs/create-umi-app
#2、安装依赖
yarn install v1.21.1
#3、启动项目
yarn start

2、修改配置

默认的脚手架内置了 @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' },
  ],
});

3、部署发布

#构建
yarn build
#构建产物默认生成到 ./dist 下

4、本地验证

 

$ yarn global add serve
$ serve ./dist

 

   ┌────────────────────────────────────────────────────┐
   │                                                    │
   │   Serving!                                         │
   │                                                    │
   │   - Local:            http://localhost:5000        │- On Your Network:  http://192.168.12.34:5000    │
   │                                                    │
   │   Copied local address to clipboard!               │
   │                                                    │

 

5、目录结构

umijs.org/zh-CN/docs/…

.
├── package.json
├── .umirc.ts
├── .env
├── dist
├── mock
├── public
└── src
    ├── .umi
    ├── layouts/index.tsx
    ├── pages
        ├── index.less
        └── index.tsx
    └── app.ts

6、sass支持

npm i --save-dev @umijs/plugin-sass
npm i --save-dev dart-sass sass-loader


.umirc.ts添加配置
"sass": { }
默认是 Dart Sass。


如果要切换到 Node Sass,可安装 node-sass 依赖,然后配置,
npm i --save-dev sass-loader@5.0.0 node-sass@4.14.1
export default {
  sass: {
    implementation: require('node-sass'),
  },
}

image.png

7、route配置

umijs.org/zh-CN/docs/…

v2.umijs.org/zh/guide/ro…

pro配置说明

pro.ant.design/zh-CN/docs/…

1、配置路由

path: string, #配置可以被 path-to-regexp@^1.7.0 理解的路径通配符
component: string, # location 和 path 匹配后用于渲染的 React 组件路径。可以是绝对路径,也可以是相对路径,如果是相对路径,会从 src/pages 开始找起,如果指向 src 目录的文件,可以用 @,也可以用 ../。比如 component: @/layouts/basic',或者 component: '../layouts/basic',推荐用前者。
exact: boolean, #Default: true,表示是否严格匹配,即 location 是否和 path 完全对应上。
routes: [], #配置子路由,通常在需要为多个路径增加 layout 组件时使用。
redirect: string, #配置路由跳转。
wrappers: string[], #配置路由的高阶组件封装。比如,可以用于路由级别的权限校验:
title: string, #配置路由的标题


#Pro 扩展路由配置
name:string 配置菜单的 name,如果配置了国际化,name 为国际化的 keyicon:string 配置菜单的图表,默认使用 antd 的 icon 名,默认不适用二级菜单的 icon。
access:string 权限配置,需要预先配置权限
hideChildrenInMenu:true 用于隐藏不需要在菜单中展示的子路由。
hideInMenu:true 可以在菜单中不展示这个路由,包括子路由。
hideInBreadcrumb:true 可以在面包屑中不展示这个路由,包括子路由。
headerRender:false 当前路由不展示顶栏
footerRender:false 当前路由不展示页脚
menuRender: false 当前路由不展示菜单
menuHeaderRender: false 当前路由不展示菜单顶栏
flatMenu 子项往上提,只是不展示父菜单
target: '_blank' 点击新窗口打开

2、路由组件参数

路由组件可通过 props 获取到以下属性,

match,当前路由和 url match 后的对象,包含 params、path、url 和 isExact 属性
location,表示应用当前处于哪个位置,包含 pathname、search、query 等属性
history,同 api#history 接口
route,当前路由配置,包含 path、exact、component、routes 等
routes,全部路由信息