Umi是一款前端应用框架

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

根据官方文档要求,node版本>=10.13

yarn create @umijs/umi-app

安装依赖

yarn

启动项目

yarn start

构建项目(默认生成到./dist)

yarn build

路由(src\.umi\core\routes.ts)

"routes": [
    {
        "path": "/",
        "component": require('@/pages/index').default,
        "exact": true
   },{
        "path": "/admin",
        "component": require('@/pages/admin').default,
        "exact": true
    }
]

组件文件放在src\pages下

path是路径,component是组件路径,绝对和相对都可以用,也可以有require(’@/pages/xxx’)的方式

exact表示是否严格匹配,就是path和组件路径是否要完全对应,默认为开启,如果设置为false,表示模糊匹配

子组件

"routes": [
  {
    "path": "/",
    "redirect": '/admin',
  },{
    "path": "/admin",
    "component": require('@/pages/admin').default,
    routes: [
        { path: '/admin/archives', redirect: '/' },
        { path: '/admin/category', component: 'category' },
    ]
  }
]

redirect是跳转路由,当访问/的时候,跳转到/admin


文件路由(根据目录和文件名来分析路由)

如果没有routes路由配置,那么就会触发该文件路由,通过分析src/pages目录

注意:用.或者_开头的文件,用d.ts结尾的文件,不是 .js,.jsx,.ts或tsx文件,文件没有jsx元素的等等都不会被注册为路由

动态路由

使用[]包裹的路由将认为动态路由,例如:

"routes": [
    {
        "path": "/",
        "component": require('@/pages/index').default,
        "exact": true
   },{
        "path": "/:data/admin",
        "component": require('@/pages/[data]/admin').default,
        "exact": true
    }
]

像[ $]的就是可选的,不是必须的

当目录下存在_layout.tsx的时候将生成嵌套路由

约定src/pages/404.tsx是404页面,要返回react组件,会默认生成路由,{ component: ‘@/pages/404’ }

页面跳转一样分为声明式和命令式

和在react一样,通过to属性指定路径,例如:

import { Link } from 'umi'
export default () => (
    <Link to="/admin">Go</Link>
)

命令式

import { history } from 'umi'
function goPage() {
    history.push('/list')
}

也是可以通过props.history.push()实现

umi约定如果存在src/pages/document.ejs文件,那么作为默认的模板

umi约定/mock文件夹下全部文件都为mock文件

支持数组和对象

例如:

export default {
    'GET /api/name': { name: ["root", "admin"] },
    '/api/id': { id: 123 },
    'POST /api/users/create': (req, res) => {
        res.setHeader('Access-Control-Allow-Origin', '*')
        res.end('ok')
    }
}

访问http://localhost:8000/api/name,可以获得{“name”:[“root”,“admin”]},访问/api/id可以{“id”:123}

使用mock: false禁用当前mock文件

.env文件为环境变量配置文件,例如

PORT=3000

那么就会以3000端口启动服务


###umi cli

umi build

umi dev

umi generate

umi plugin

umi help

umi version

umi webpack


umi约定src/global.css为全局样式,如果存在这个文件,那么会自动引入

css模块化

import styles from ‘./styles.css’

umi内置less


引入图片

<img src={require(’./img.jpg’)} />

也是可以用@来指向src目录