百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

教你使用UmiJS框架开发React

connygpt 2024-12-19 10:39 3 浏览

1、什么是Umi.js?

umi,中文可发音为乌米,是一个可插拔的企业级 react 应用框架。你可以将它简单地理解为一个专注性能的类 next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助开发,减少我们开发者的代码量。

2、为什么使用Umi.js?

我们做react开发的时候会不会遇到以下问题?: 2.1 项目做大的时候,开发调试的启动和热更新时间会变得很长。 2.2 大应用下,网站打开很慢,有没有办法基于路由做到按需加载。 2.3 dva的model每次都要手写载入,能否一开始就同项目初始化好?

使用乌米,即可解决以上问题,并且还能提供如下优势:

  • 开箱即用,内置 react、react-router 等
  • 类 next.js 且功能完备的路由约定,同时支持配置的路由方式
  • 完善的插件体系,覆盖从源码到构建产物的每个生命周期
  • 一键兼容到 IE9
  • 完善的 TypeScript 支持
  • 与 dva 数据流的深入融合

3、开箱即用的中台前端/设计解决方案 ANT DESIGN PRO

  1. 优雅美观 - 基于 Ant Design 体系精心设计
  2. 常见设计模式 - 提炼自中后台应用的典型页面和场景
  3. 最新技术栈 - 使用 React/dva/antd 等前端前沿技术开发
  4. 响应式 - 针对不同屏幕大小设计
  5. 主题 - 可配置的主题满足多样化的品牌诉求
  6. 国际化 - 内建业界通用的国际化方案
  7. 最佳实践 良好的工程实践助你持续产出高质量代码
  8. Mock 数据 - 实用的本地数据调试方案
  9. UI 测试 - 自动化测试保障前端产品质量

4、安装Umi

npm create umi `projectName`
Select the boilerplate type (Use arrow keys)
? ant-design-pro  - Create project with an layout-only ant-design-pro boilerplate, use together with umi block.
  app             - Create project with a simple boilerplate, support typescript.
  plugin          - Create a umi plugin.

选择 ant-design-pro -> Pro V4 -> JavaScript Ant Design Pro 脚手架将会自动安装。

5、常用目录说明

├── config                   # umi 配置,包含路由,构建等配置
├── mock                     # 本地模拟数据
├── public
│   └── favicon.png          # Favicon
│   └── ......
├── src
│   ├── assets               # 本地静态资源
│   ├── components           # 业务通用组件
│   ├── e2e                  # 集成测试用例
│   ├── layouts              # 通用布局
│   ├── locales              # 国际化
│   ├── models               # 全局 dva model
│   ├── pages                # 业务页面入口和常用模板
│   ├── services             # 后台接口服务
│   ├── utils                # 工具库
│   ├── locales              # 国际化资源
│   ├── global.less          # 全局样式
│   └── global.jsx           # 全局 JS
├── tests                    # 测试工具
├── README.md
└── package.json

6、运行项目

cd `projectName`
npm install
npm start

7、把之前组件,引入到 antd design pro 项目中

React 快速上手实践

  • 移动 ClassComponent \ FunctionComponent 到 components 目录下
  • 修改 Welcome.jsx,使用 ClassComponent \ FunctionComponent 组件
import React from "react";
import { PageContainer } from "@ant-design/pro-layout";
import { Card, Alert, Divider } from "antd";
import { useIntl } from "umi";
// @/ 为引入别名方式,减少引用前缀
import ClassComponent from "@/components/ClassComponent";
import FunctionComponent from "@/components/FunctionComponent";
import styles from "./Welcome.less";
export default () => {
  // 使用国际化,对应 locales 目录下对应文件国际化文案
  const intl = useIntl();
  return (
    <PageContainer>
      <Card>
        <Alert
          message={intl.formatMessage({
            id: "pages.welcome.alertMessage",
            defaultMessage: "欢迎使用",
          })}
          type="success"
          showIcon
          banner
        />
        <ClassComponent title="Class 组件" />
        <Divider />
        <FunctionComponent title="Function 组件" />
      </Card>
    </PageContainer>
  );
};

8、添加自定义界面

  • 由于 antd design pro 集成了 umi、antd (@ant-design/xxx)、dva、react-router-dom(路由) … 等一系列组件和插件,直接可以使用
  • umi 预定式路由,直接在 pages 目录下创建对应文件(文件名称和访问时 url 一致)
  1. 在 pages 目录下创建 Order\list 目录,list 下创建 idnex.jsx (未显示界面)
const OrderList = () => {
  return <div>订单列表</div>;
};
export default OrderList;

在 config 目录 routes.js 文件中添加

{
  name: 'order.list',
  icon: 'table',
  path: '/order/list',
  component: './Order/list',
},
  • name 菜单显示名称(国际化)
  • icon 菜单显示图标
  • path 路由访问地址
  • component 当前路由显示组件
  • authority 权限[],只有在数组中的权限才显示 [‘admin’] 只有 admin 权限才显示 [‘user’] user 权限才显示
  1. 在 locales\zh-CN 目录,menu.js 文件添加和 name 对应中文,显示菜单名称
 'menu.order.list': '订单列表',

如果不设置,默认显示 name 对应的字符串,即 ‘order.list’

9、dva 状态管理

  • 默认集成了 dva, 直接使用即可。
  • 添加一个用户列表界面,把 [React 快速上手实践代码移过来即可

注意:

  1. 由于 antd design pro routes.js 中存在了 user 路由,需要加上 exact: true, 才能加 user.list,因为在 routers.js 中使用布局不一样。
  2. 详细见 移植代码
...
path: '/user',
exact: true,
component: '../layouts/UserLayout',
{
    name: 'order.list',
    icon: 'table',
    path: '/order/list',
    component: './Order/list',
},
    {
    name: 'user.list',
    icon: 'table',
    path: '/user/list',
    component: './User/list',
},
...

antd design pro @ant-design/pro-layout

  • 使用 PageContainer
  • PageContainer 组件可以获取当前页菜单名称,设置面包屑。
import { PageContainer } from "@ant-design/pro-layout";
<PageContainer>
  <Card>// Form body</Card>
</PageContainer>;

其他更多参考

其他设置在 config 目录中进行修改

总结:

  • 可扩展,Umi 实现了完整的生命周期,并使其插件化,Umi 内部功能也全由插件完成。此外还支持插件和插件集,以满足功能和垂直域的分层需求。
  • 开箱即用,Umi 内置了路由、构建、部署、测试等,仅需一个依赖即可上手开发。并且还提供针对 React 的集成插件集,内涵丰富的功能,可满足日常 80% 的开发需求。
  • 企业级,经蚂蚁内部 3000+ 项目以及阿里、优酷、网易、飞猪、口碑等公司项目的验证,值得信赖。
  • 大量自研,包含微前端、组件打包、文档工具、请求库、hooks 库、数据流等,满足日常项目的周边需求。
  • 完备路由,同时支持配置式路由和约定式路由,同时保持功能的完备性,比如动态路由、嵌套路由、权限路由等等。
  • 面向未来,在满足需求的同时,我们也不会停止对新技术的探索。比如 dll 提速、modern mode、webpack@5、自动化 external、bundler less 等等。

相关推荐

3分钟让你的项目支持AI问答模块,完全开源!

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...

干货|程序员的副业挂,12个平台分享

1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...

Github标星超200K,这10个可视化面板你知道几个

在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...

开箱即用的炫酷中后台前端开源框架第二篇

#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...

搭建React+AntDeign的开发环境和框架

搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...

基于.NET 5实现的开源通用权限管理平台

??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...

StreamPark - 大数据流计算引擎

使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...

教你使用UmiJS框架开发React

1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...

简单在线流程图工具在用例设计中的运用

敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...

【开源分享】神奇的大数据实时平台框架,让Flink&amp;Spark开发更简单

这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...

聊聊规则引擎的调研及实现全过程

摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...

【开源推荐】Diboot 2.0.5 发布,自动化开发助理

一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...

微软推出Copilot Actions,使用人工智能自动执行重复性任务

IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...

Electron 使用Selenium和WebDriver

本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...

Quick &#39;n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具

一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...