umi学习笔记

1.umi安装

详见这里:https://umijs.org/zh/guide/getting-started.html#%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87

2.umi配置

在umi的配置中我们可以进行路由设置,插件设置等内容。

  • extraPostCSSPlugins 的配置
    定义额外的 PostCSS 插件,格式为数组。
    举例:umi配置extraPostCSSPlugins详解http://08643.cn/p/f1f6ce592388
  • alias的配置
    配置 webpack 的 resolve.alias 属性。
    例如定义@表示/src
    修改.umirc.js文件
import path from 'path';
export default {
   alias: {
    '@': path.resolve(__dirname, 'src'),
  },
};

3.umi目录

下面是umi+dva的目录结构

.
├── dist/                          // 默认的 build 输出目录
├── mock/                          // mock 文件所在目录,基于 express
├── config/
    ├── config.js                  // umi 配置,同 .umirc.js,二选一
 |—— public                        //共享资源
└── src/                           // 源码目录,可选
    ├── assets                  // 静态资源
    ├── layouts/index.js           // 全局布局
    ├── models/global.js
    ├── pages/                     // 页面目录,里面的文件即路由
        ├── .umi/                  // dev 临时目录,需添加到 .gitignore
        ├── .umi-production/       // build 临时目录,会自动删除
        ├── a                      //按页面维度进行组织
            ├── index.js
            ├── models
                ├── a1.js
                ├── a2.js
            ├── services
                ├── a.js
        ├── b                      //按页面维度进行组织
            ├── index.js
            ├── model.js
            ├── service.js
        ├── 404.js                 // 404 页面  
    ├── global.css                 // 约定的全局样式文件,自动引入,也可以用 global.less
    ├── global.js                  // 可以在这里加入 polyfill
├── .umirc.js                      // umi 配置,同 config/config.js,二选一
├── .env                           // 环境变量
└── package.json

好处是更加结构更加清晰了,减少耦合,一删全删,方便 copy 和共享。

4.umi路由

umi有两种方式配置路由:

1.在umirc.js中手动配置路由
2.由umi自动生成路由配置

umi路由格式
1.基础路由

目录结构如下:

+ pages/
  + users/
    - index.js
    - list.js
  - index.js
  • 手动配置
    在umirs.js中配置routes:[]:
routes:[
  { path: '/', component: './index.js' },
  { path: '/users/', component: './users/index.js' },
  { path: '/users/list', component: './users/list.js' },
]

component 是相对于 src/pages 目录的

  • 自动配置
    按以上结构组织文件,umi会自动生成路由。
2.动态路由

umi 里约定,带 $ 前缀的目录或文件为动态路由

目录结构

+ pages/
  + $post/
    - index.js
    - comments.js
  + users/
    $id.js
  - index.js
  • 手动配置
routes:[
    {path:'/',components:'/index.js'},
    {path:'/users/:id',components:'/users/$id.js'},
    {path:'/:post/,components:'/$post/index.js'},
    {path:'/:post/comments','/$post/comments.js},
]
  • 自动配置
    按以上结构组织文件,umi会自动生成路由??梢岳斫馕?就是网址中的':'
3.嵌套路由

嵌套路由可以用来做布局页面。
目录结构如下:

+ pages/
  + users/
    - _layout.js
    - $id.js
    - index.js

以上_layout.js就是布局页面,嵌套路由的布局页面必须包含children,children即为要嵌套在布局页面中的内容。
以上_layout.js可以写成如下代码:

export default function(props) {
  return (
    <>
      <Header />
      { props.children }
      <Footer />
    </>
  );
}
  • 手动配置
    在umirs.js中配置routes:[]:
routes:[
  { path: '/users': component: './users/_layout.js'
    routes: [
     { path: '/users/', component: './users/index.js' },
     { path: '/users/:id', component: './users/$id.js' },
   ],
  },
]
  • 自动配置
    自动生成配置路由可以用以在umirc.js中设置需要排除的路由。
export default {
  history: 'hash',
  plugins: [
    ['umi-plugin-react', {
      antd: true,
      dva: true,
      routes: {
        exclude: [
          /model\.(j|t)sx?$/,
          /service\.(j|t)sx?$/,
          /models\//,
          /components\//,
          /services\//,
        ],
      },
    }],
  ],
};

按以上结构组织文件,umi会自动生成路由。

4.权限路由
  • 手动配置umirc.js的Routes来实现。
[
  { path: '/', component: './pages/index.js' },
  { path: '/list', component: './pages/list.js', Routes: ['./routes/PrivateRoute.js'] },
]

Routes中的路径是相对与umirc.js的路径。

  • 自动配置权限路由
    通过注释配置
    比如:
+ pages/
  - index.js

如果 pages/index.js 里包含:

/**
 * Routes:
 *    - ./src/routes/PrivateRoute.js
 */

则会生成:

[
  { path: '/', component: './index.js',
    title: 'Index Page',
    Routes: [ ' ./src/routes/PrivateRoute.js' ],
  },
]

Routes中的路径是相对与umirc.js的路径。

5.我理解的权限路由的几种实现方式

(1)通过嵌套路由实现
(2)通过权限路由实现

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容