React 第十二章 UmiJs

本文介绍了Umi.js,一个由蚂蚁集团推出的前端框架,其特点包括插件化设计、开箱即用的功能、约定式路由、可扩展性和与AntDesign等工具的高整合度。文章详细阐述了其生命周期插件、配置与运行时的区别,以及如何利用这些特性提升开发效率和应用扩展性。
摘要由CSDN通过智能技术生成

Umi.js 介绍

Umi 是由蚂蚁集团推出的可扩展的企业级前端应用框架。Umi 以路由为基础,同时支持配置式路由和约定式路由,保证路由的功能完备,并以此进行功能扩展。然后配以生命周期完善的插件体系,覆盖从源码到构建产物的每个生命周期,支持各种功能扩展和业务需求。

image-20221105145301148

Umi.js 特点

  1. 插件化:UmiJS 的整个生命周期都是插件化的,这意味着框架内部的功能大多由插件实现。这种设计使得框架非常灵活,开发者可以通过引入不同的插件来扩展或修改框架的行为。例如,按需加载、一键切换 Preact、一键兼容 IE9 等功能,都是由插件实现的。
    开箱即用:UmiJS 内置了路由、构建、部署等功能,开发者仅需一个依赖即可开始开发。这大大简化了开发流程,无需额外安装 React、Preact、Webpack、React-Router、Babel、Jest 等工具或库。
  2. 约定式路由:UmiJS 采用了约定式路由,这意味着开发者无需再维护一份冗余的路由配置。框架会根据文件目录结构自动生成路由配置,并支持权限、动态路由、嵌套路由等功能。这种设计不仅简化了路由管理,还提高了开发效率。
  3. 可扩展性:UmiJS 支持插件和插件集,这使得框架能够支持各种不同的功能需求。无论是添加新的功能、修改现有功能,还是优化性能,都可以通过引入或开发插件来实现。
  4. 业务整合:由于 UmiJS 是阿里系的前端框架,它对自家的 Ant Design、ahooks、dva 等工具或库的整合度非常高。这使得开发者在使用这些工具或库时,能够获得更好的兼容性和性能。

约定式路由

约定式路由并不是 Umi 独有的东西,像基于 VueNuxt.js,基于 ReactNext.js 框架,都提供了约定式路由的方式。

而早期在 Umi 2.x 时代,团队借鉴了这种方式,加入了约定式路由的功能,并沿用至今。

所谓约定式路由,简单来讲,就是根据你的页面级组件自动生成路由的配置,而不再需要我们自己去书写路由配置。

有关约定式路由的说明,在 v4 的文档中介绍相对比较简单:https://umijs.org/docs/guides/directory-structure#pagesv4 更多的是介绍配置式路由。

如果想要了解约定式路由,这里可以参阅 v2v3 的文档:

  • v2 文档:https://v2.umijs.org/zh/guide/router.html

  • v3 文档:https://v3.umijs.org/zh-CN/docs/convention-routing

注意
不同版本之间会有略微的差异,例如动态路由在 v2v3 中的使用方式就有所区别,当发现差异时,应该查询自己对应版本的文档说明

插件机制

Umi 中,采用了插件的机制,所涵盖的其他技术都以插件的形式引入。

要开启某个插件,我们可以在 .umirc.js 中进行配置,例如:

export default defineConfig({
  antd: {},
  access: {},
  model: {},
  initialState: {},
  request: {},
  layout: {},
  dva: {},
  npmClient: 'npm',
});

另外,如果*.umiirc.js* 文件配置的内容很多的话,可以单独提取出来,放入到 config/config.js 里面(二选一,.umirc.js 优先)

构建时配置和运行时配置

v2 版本开始,Umi 就一直包含两个配置文件,到了 v4 也一直保持这一特点。

构建时配置

Umi 中,约定项目根目录下的 .umirc.js/ts 为构建时配置,当我们启动 Umi 项目时,Umi 会对整个项目进行一次构建,在 src 目录下生成一个 .umi 的临时目录,构建时配置则决定了所生成的 .umi 目录的样子。

.umi 目录的结构如下:

+ .umi
  + core     # 内部插件生成
  + pluginA  # 外部插件生成
  + presetB  # 外部插件生成
  + umi.ts   # 入口文件

因此,在构建时配置中,一个很重要的用途就是开启插件。

有关 .umirc.js/ts 具体的配置项,请参阅:https://umijs.org/docs/api/config

运行时配置

运行时配置和配置的区别是他跑在浏览器端,基于此,我们可以在这里写函数、tsximport 浏览器端依赖等等,注意不要引入 node 依赖。

umi 中,约定 src 目录下的 app.js/ts/jsx/tsx 为运行时的配置文件。

有关运行时配置项目,可以参阅:https://umijs.org/docs/api/runtime-config

总结

UmiJS 是一个强大且灵活的企业级前端应用框架,基于 React 和插件化的思想构建。它提供了丰富的功能和插件生态系统,使得开发者能够高效地构建出稳定、可扩展的 Web 应用。

无论是初创公司还是大型企业,都可以通过 UmiJS 来提高开发效率、降低维护成本,并构建出高质量、可扩展的 Web 应用。

umijs 是一个可插拔的企业级前端应用框架,它基于 React,支持约定式路由、按需加载和简单易用的插件机制。react-wow 是一个 React 的库,用于实现基于滚动的元素动画效果。 以下是一个使用 umijsreact-wow 的简单示例,展示如何在 umijs 应用中实现滚动动画效果: 1. 首先,确保你已经安装了 umijs。如果还没有安装,可以通过 npm 或 yarn 来安装: ``` npm install -g umi # 或者 yarn global add umi ``` 2. 创建一个新的 umijs 项目: ``` umi init ``` 3. 安装 react-wow: ``` npm install react-wow --save # 或者 yarn add react-wow ``` 4. 在 umijs 项目的某个页面组件中使用 react-wow,例如在 `pages/index.js` 文件中: ```javascript import React from 'react'; import { Link } from 'umi'; import Wow from 'react-wow'; function Index() { return ( <div> <h1>欢迎来到 umijs 世界!</h1> <Link to="/user">跳转到用户列表</Link> <div style={{ margin: '20px 0' }}> <Wow animation="zoomIn" offset={100} delay="0.5s" duration="1.5s"> <h2 style={{ color: '#1DA57A' }}>这是带有 zoomIn 动画的标题</h2> </Wow> </div> <div style={{ margin: '20px 0' }}> <Wow animation="fadeInLeft" offset={100} delay="1s" duration="1s"> <p style={{ fontSize: '16px' }}>这是一个从左侧淡入的文本</p> </Wow> </div> </div> ); } export default Index; ``` 在上面的代码中,我们创建了一个简单的欢迎页面,并且使用了 `react-wow` 来给两个不同的元素添加了滚动动画。`offset` 属性定义了元素距离页面顶部多少像素时开始触发动画,`delay` 属性定义了动画开始前的延迟时间,`duration` 属性定义了动画的持续时间。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值