当前位置: 首页 > news >正文

Umi从零搭建Ant Design Pro项目(1)

文章目录

  • 前言
  • 一、创建项目
  • 二、配置的修改
    • 1.基本配置
    • 2.入口文件
      • (1)改layout的菜单模式
      • (2)网络请求的拦截
      • (3)全局初始状态 getInitialState
  • 小结


前言

炒个旧饭,基于Umi从零创建Ant Design Pro项目,以学习记录为目的。闲言少述,直奔主题。


一、创建项目

关于创建Umi及Umi生成AntDesign Pro简易项目,不作过多叙述。见Umi文档

pnpm run dev

界面类似下面,有点简易
在这里插入图片描述

二、配置的修改

1.基本配置

生成项目后的配置如下,见.umirc.ts,可以将这个配置文件删除,改用config/config.ts。见Umi文档.umirc.ts。这个配置文件,在以后的操作中还会常常修改它。

import { defineConfig } from '@umijs/max';

export default defineConfig({
  antd: {},
  access: {},
  model: {},
  initialState: {},
  request: {},
  layout: {
    title: '@umijs/max',
  },
  routes: [
    {
      path: '/',
      redirect: '/home',
    },
    {
      name: '首页',
      path: '/home',
      component: './Home',
    },
    {
      name: '权限演示',
      path: '/access',
      component: './Access',
    },
    {
      name: ' CRUD 示例',
      path: '/table',
      component: './Table',
    },
  ],
  npmClient: 'pnpm',
});

2.入口文件

初始化app.ts如下:

export async function getInitialState(): Promise<{ name: string }> {
  return { name: '@umijs/max' };
}

export const layout: RunTimeLayoutConfig = ({ initialState }) => {
  return {
    logo: 'https://img.alicdn.com/tfs/TB1YHEpwUT1gK0jSZFhXXaAtVXa-28-27.svg',
    menu: {
      locale: false,
    },
  };
};

(1)改layout的菜单模式

先小试一把

import { RequestConfig, RunTimeLayoutConfig } from '@umijs/max';
//……优美的省略号……
export const layout: RunTimeLayoutConfig = ({ initialState }) => {
  return {
  //……优美的省略号……
    layout: 'mix',
  };
};

layout菜单模式,side | top | mix,详见ProComponents文档-ProLayout - 高级布局的介绍。


(2)网络请求的拦截

还是在app.ts里,还是看文档吧
下面代码示例,因为后端使用thinkphp6thans/tp-jwt-auth,token自动刷新,前面需要将token不时保存更换一下。

//……优美的省略号……
//上面代码中已引入RequestConfig
export const request: RequestConfig = {
  timeout: 1000,
  // other axios options you want
  errorConfig: {
    errorHandler() {},
    errorThrower() {},
  },
  requestInterceptors: [
    (config: any)=> {
      let token = localStorage.getItem('token') || '';
      return {
        ...config,
        headers: {
          ...config.headers,
          authorization: token,
        },
      };

    },
  ],
  responseInterceptors: [
    (response) => {
      // 拦截响应数据,进行个性化处理
      const headers = response.headers;
      // 设置token
      if (headers.authorization) {
        localStorage.setItem('token', headers.authorization);
      }
      return response;
    },
  ],
};

(3)全局初始状态 getInitialState

全局初始状态是一种特殊的 Model。

全局初始状态在整个 Umi 项目的最开始创建。编写 src/app.ts 的导出方法 getInitialState(),其返回值将成为全局初始状态。见文档

getInitialState

小结

到此刚刚开了一个小头,下一章,将记录登录页面及相关proxyroutes相关操作。

相关文章:

  • 准确率(Precision)和召回率(Recall)
  • 【数据结构初阶第十九节】八大排序系列(下篇)—[详细动态图解+代码解析]
  • 正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-5.1 uboot顶层Makefile分析-VSCode工程创建
  • 【RTSP】客户端(四) 解复用器
  • easypoi导入Excel兼容日期和字符串格式的日期和时间
  • HCIA-AI人工智能笔记2:大模型演进趋势
  • Dify Docker 私有化部署遇到的问题
  • 合React宝宝体质的自定义节流hook
  • Compose 实践与探索十 —— 其他预先处理的 Modifier
  • vscode python相对路径的问题
  • 基于 Verilog 的数字电路设计与仿真:乘数器与多路复用器实践
  • LVGL第三方库的使用(中文库)
  • windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC
  • Vue3 开发的 VSCode 插件
  • 996引擎 - 红点系统
  • 前端面试题---vue项目打包时, 内存不足了怎么办 为什么会出现这样的情况
  • SpringBoot事件驱动
  • 翻硬币问题
  • 【Docker compose】neo4j容器安装apoc插件
  • 医疗送药机器人“空间拓扑优化+动态算法决策+多级容错控制”三重链式编程技术解析与应用
  • 联合国秘书长吁印巴“最大程度克制”,特朗普:遗憾,希望尽快结束冲突
  • 一揽子十条货币政策措施出炉:降准降息,设立五千亿服务消费与养老再贷款
  • Neuralink脑接设备获FDA突破性医疗设备认证
  • 《中国医药指南》就“宫颈癌等论文出现男性病例”致歉:辞退涉事编辑
  • 虚构医药服务项目、协助冒名就医等,北京4家医疗机构被处罚
  • 新华每日电讯“关爱青年成长”三连评:青春应有多样的精彩