react router官方文档_阿里开源可插拔 React 跨端框架 UmiJS

点击上方“开发者技术前线”,选择“星标”

18:30 在看 真爱

作者:Tamic  |  编辑: 可可

8ecd5962f681a3e71d00ca455520540a.png

阿里之前开源:阿里闲鱼开源 Flutter 应用框架 Fish Redux! 今天介绍的是前端React 框架- UmiJS。

介绍

umi官方宣称是一个可插拔的企业级 react 应用框架。umi 以路由为基础的,支持类 next.js 的约定式路由,以及各种进阶的路由功能,并以此进行功能扩展,比如支持路由级的按需加载。然后配以完善的插件体系,覆盖从源码到构建产物的每个生命周期,支持各种功能扩展和业务需求,目前内外部加起来已有 50+ 的插件。

umi 是蚂蚁金服的底层前端框架,已直接或间接地服务了 600+ 应用,包括 支持java、node、H5 无线、离线(Hybrid)应用、纯前端 assets 应用、CMS 应用等。他已经很好地服务了我们的内部用户,同时希望他也能服务好外部用户。

特性

  • ? 开箱即用,内置 react、react-router 等

  • ? 类 next.js 且功能完备的路由约定,同时支持配置的路由方式

  • ? 完善的插件体系,覆盖从源码到构建产物的每个生命周期

  • ? 高性能,通过插件支持 PWA、以路由为单元的 code splitting 等

  • ? 支持静态页面导出,适配各种环境,比如中台业务、无线业务、egg、支付宝钱包、云凤蝶等

  • ? 开发启动快,支持一键开启 dll 和 hard-source-webpack-plugin 等

  • ? 一键兼容到 IE9,基于 umi-plugin-polyfills

  • ? 完善的 TypeScript 支持,包括 d.ts 定义和 umi test

  • ? 与 dva 数据流的深入融合,支持 duck directory、model 的自动加载、code splitting 等等

架构图

7051df687931776b9021f531cc1ab7b1.png

从源码到上线的生命周期管理

市面上的框架基本都是从源码到构建产物,很少会考虑到各种发布流程,而 umi 则多走了这一步。

下图是 umi 从源码到上线的一个流程。

6792b2e5ce010e4ea6233380a9cf4a8a.png

umi 首先会加载用户的配置和插件,然后基于配置或者目录,生成一份路由配置,再基于此路由配置,把 JS/CSS 源码和 HTML 完整地串联起来。用户配置的参数和插件会影响流程里的每个环节。

他和 dva、roadhog 是什么关系?

简单来说,

  • roadhog 是基于 webpack 的封装工具,目的是简化 webpack 的配置

  • umi 可以简单地理解为 roadhog + 路由,思路类似 next.js/nuxt.js,辅以一套插件机制,目的是通过框架的方式简化 React 开发

  • dva 目前是纯粹的数据流,和 umi 以及 roadhog 之间并没有相互的依赖关系,可以分开使用也可以一起使用,个人觉得 umi + dva 是比较搭的

为什么不是...?

next.js

next.js 的功能相对比较简单,比如他的路由配置并不支持一些高级的用法,比如布局、嵌套路由、权限路由等等,而这些在企业级的应用中是很常见的。相比 next.js,umi 在约定式路由的功能层面会更像 nuxt.js 一些。

roadhog

roadhog 是比较纯粹的 webpack 封装工具,作为一个工具,他能做的就比较有限(限于 webpack 层)。而 umi 则等于 roadhog + 路由 + HTML 生成 + 完善的插件机制,所以能在提升开发者效率方面发挥出更大的价值。

安装

入门非常简单

e

# 新建页面

$ umi generate page index

# 本地开发

$ umi dev

# 构建上线

$ umi build

环境准备

首先得有 node,并确保 node 版本是 8.10 或以上。(mac 下推荐使用 nvm 来管理 node 版本)

$ node -v

8.1x

推荐使用 yarn 管理 npm 依赖,并使用国内源(阿里用户使用内网源)。

# 国内源

$ npm i yarn tyarn -g

# 后面文档里的 yarn 换成 tyarn

$ tyarn -v

# 阿里内网源

$ tnpm i yarn @ali/yarn -g

# 后面文档里的 yarn 换成 ayarn

$ ayarn -v

然后全局安装 umi,并确保版本是 2.0.0 或以上。

$ yarn global add umi

$ umi -v

2.0.0

脚手架

先找个地方建个空目录。

$ mkdir myapp && cd myapp

然后通过 umi g 创建一些页面,

$ umi g page index

$ umi g page users

umi g 是 umi generate 的别名,可用于快速生成 component、page、layout 等,并且可在插件里被扩展,比如 umi-plugin-dva 里扩展了 dva:model,然后就可以通过 umi g dva:model foo 快速 dva 的 model。

然后通过 tree 查看下目录,(windows 用户可跳过此步)

$ tree

.

└── pages

├── index.css

├── index.js

├── users.css

└── users.js

这里的 pages 目录是页面所在的目录,umi 里约定默认情况下 pages 下所有的 js 文件即路由,如果有 next.js 或 nuxt.js 的使用经验,应该会有点眼熟吧。

然后启动本地服务器,

$ umi dev

约定式路由

启动 umi dev 后,大家会发现 pages 下多了个 .umi 的目录。这是啥?这是 umi 的临时目录,可以在这里做一些验证,但请不要直接在这里修改代码,umi 重启或者 pages 下的文件修改都会重新生成这个文件夹下的文件。

然后我们在 index 和 users 直接加一些路由跳转逻辑。

先修改 pages/index.js,

+ import Link from 'umi/link';

import styles from './index.css';

export default function() {

return (

Page index

+ <Link to="/users">go to /usersLink>

);

}

再修改 pages/users.js,

+ import router from 'umi/router';

import styles from './index.css';

export default function() {

return (

Page index

+ { router.goBack(); }}>go back

);

}

然后浏览器验证,应该已经可以在 index 和 users 两个页面之间通过路由跳转了。

部署发布

构建

执行 umi build,

$ umi build

DONE Compiled successfully in 1729ms

File sizes after gzip:

68.04 KB dist/umi.js

83 B dist/umi.css

构建产物默认生成到 ./dist 下,然后通过 tree 命令查看,(windows 用户可忽略此步)

$ tree ./dist

./dist

├── index.html

├── umi.css

└── umi.js

本地验证

发布之前,可以通过 serve 做本地验证,

$ yarn global add serve

$ serve ./dist

Serving!

- Local: http://localhost:5000

- On Your Network: http://{Your IP}:5000

Copied local address to clipboard!

访问 http://localhost:5000,正常情况下应该是和 umi dev 一致的。

部署

本地验证完,就可以部署了,这里通过 now 来做演示。

$ yarn global add now

$ now ./dist

> Deploying /private/tmp/sorrycc-1KVCmK/dist under chencheng

> Synced 3 files (301.93KB) [2s]

> https://dist-jtckzjjatx.now.sh [in clipboard] [1s]

> Deployment complete!

然后打开相应的地址就能访问到线上的地址了。

测试与配置检查

测试

umi 内置了基于 jest 的测试工具 umi-test :

$ umi test

Options:

--coverage indicates that test coverage information should be collected and reported in the output

配置检查

使用 umi inspect 列出配置项的内容用以检查:

$ umi inspect

Options:

--mode specify env mode (development or production, default is development)

--rule inspect a specific module rule

--plugin inspect a specific plugin

--rules list all module rule names

--plugins list all plugin names

--verbose show full function definitions in outpu

官方文档

中文文档:https://umijs.org/zh/

Github:https://github.com/umijs/umi

END

开发者技术前线 ,汇集技术前线快讯和关注行业趋势,大厂干货,是开发者经历和成长的优秀指南。

历史阅读

互联网江湖,从此再无 BAT

当年的三本学渣,最后 6 家大厂还不是随便进了

学不动了 ,京东跨端移动开发平台 Ares 发布!

ff0820be2f35967a760249d3b85b5a58.png2860aa6eb38ab754bbfb8ad7ceb44af4.gif510ca2a2b03f85ed0a71abf20d68896b.png喜欢就点个好看吧2860aa6eb38ab754bbfb8ad7ceb44af4.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java约瑟夫环迭代器_Josephus约瑟夫环问题的不同实现方法与总结

/************************************************************************//* Josephus问题——数组实现 *//************************************************************************/#include #include int Josephus(int t…

ios 下拉放大 上拉缩小_为啥鞠婧祎发量这么多?截图放大十倍她的“发缝”,网友:真密集...

​鞠婧祎&#xff0c;这位女明星真的是黑&#xff0c;红&#xff0c;黑&#xff0c;红。这不是秘密。鞠婧祎最近几天的确很受欢迎。甚至头发也受到质疑。一般而言&#xff0c;娱乐业的演艺人员由于多年来的工作时间安排不规则以及采取巴拉克拉法帽的行为&#xff0c;通常都有使…

opencv4.5.0安装包_UG NX12.0 软件介绍(附安装包)

【软件名称】 UG NX12.0【文件大小】 5.67GB 【语言支持】 简体中文【系统类型】 64位【兼容系统】 Win7 / Win8 / Win10【下载链接】 文末扩展链接获取软件简介&#xff1a;西门子公司推出了最新版的Siemens NX 12.0版本(UG12.0)&#xff0c;该软件提供了当今市场上唯一可扩展…

win7备份工具_win7系统小白一键系统详细教程

很多朋友给小白留言说&#xff0c;使用了新版小白的一键备份后&#xff0c;不知道如何还原系统。体验过新版的朋友们最大的感受就是这个工具越来越小了。接下来&#xff0c;win7系统的一键还原将为您带来一个详细的教程。在系统一键备份方面&#xff0c;如何减少系统一键还原&a…

iis php网站500错误原因_如何解决iis php 500错误问题

iis php500错误的解决办法&#xff1a;1、打开PHP.ini&#xff0c;设置显示错误&#xff1b;2、把“require(./xxx.php)”改成“require(xxx.php)”&#xff1b;3、给网站的上级目录赋予iis用户读权限即可。推荐&#xff1a;《PHP视频教程》本方法适用于任何品牌的电脑。IIS 配…

win10右键一直转圈_Win10总是自动更新?教你如何关掉自动更新

小白系统免费的人工客服点击联系win10怎么关闭自动更新呢&#xff1f;平时不定期的对系统进行更新虽然可以给让我电脑的运行变得更加流畅&#xff0c;但是&#xff0c;不少用户却遇到了win10更新之后不兼容等一系列的问题&#xff0c;因此&#xff0c;就都将要将自动更新功能关…

springboot 中文文档_还在用 Swagger生成接口文档?我推荐你试试它

JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具。编写和维护API文档这个事情&#xff0c;对于后端程序员来说&#xff0c;是一件恼人但又不得不做的事情&#xff0c;我们都不喜欢写文档&#xff0c;但除非项目前后端代码都是自己写的&#xff0c;否则API文…

wringPi 初始化GPIO 为上拉_玩转GPIO之PWM点亮呼吸灯(非树莓派)

在这篇文章&#xff0c;我介绍了基于逸宸电子开发的总线适配器来点亮LED灯的基本方法&#xff01;myastrotong&#xff1a;玩转GPIO之点灯&#xff08;非树莓派&#xff09;​zhuanlan.zhihu.com这款总线适配器的介绍见这里&#xff1a;工业级高速USB转SPI I2C PWM GPIO UART C…

dnf如何快速拾取物品_DNF手游泰拉该如何获取,游戏蜂窝辅助托管快速获取泰拉...

在DNF手游中&#xff0c;一共存在三种的核心货币——点券&#xff0c;泰拉还有金币。点券是用来买商城道具的主要流动货币&#xff0c;金币则是用来打造装备的&#xff0c;而泰拉是有两种货币的共同点&#xff0c;所以它既能在商城购买各种道具&#xff0c;又能兑换金币。所以说…

java商城_java网上商城系统怎么样?优势又有哪些?

导读&#xff1a;大家都知道Java是一款非常实用的开发语言&#xff0c;而通过Java开发的商城吸引也因为其强大安全性能与使用性能等优势受到了很多企业商家的青睐&#xff0c;那么一款功能丰富的Java商城系统也自然成为...大家都知道Java是一款非常实用的开发语言&#xff0c;而…

php socket keepalive,linux keepalive探测对应用层socket api的影响

问题大部分人都知道tcp的keepalive. 假设读者知道keepalive会如何触发. 这篇文章想讨论keepalive触发后, 对socket使用者的影响.keepalive设置修改/etc/sysctl.confubuntu# vim /etc/sysctl.confubuntu# sysctl -pfs.file-max 131072net.ipv4.tcp_keepalive_time 10net.ipv4.…

qt 文字倾斜投影_帅呆!钢铁侠中的激光投影键盘终于量产了,炫酷又好用

看过电影《钢铁侠》的朋友&#xff0c;估计都会被钢铁侠的各种黑科技所折服&#xff0c;比如钢铁装甲、全息投影、人工智能贾维斯等等。不过这些黑科技想要实现还需要一段时间。但其中有一项黑科技已经被国产厂商实现了&#xff0c;那就是——激光投影键盘。早在去年&#xff0…

手机投电脑_把王者荣耀投屏到电脑上玩更爽哦——投屏神器幕享

今天给大家介绍一款投屏神器&#xff0c;它叫做幕享。直接摆观点——现今最好用的投屏工具&#xff0c;没有之一&#xff01;它是全平台都有的软件哦&#xff0c;这意味着除了电脑&#xff0c;你还可以在安卓市场和Appstore下载到它。三个平台都有意味着什么呢&#xff0c;心细…

清华大学镜像_国内开源镜像站信息盘点

一、前言开源镜像站点是一个放置开源系统镜像文件的站点&#xff0c;免费提供镜像文件下载服务&#xff0c;可以刻盘也可以直接用虚拟光驱安装操作系统、开源软件、Linux源码网站。目前&#xff0c;各大高校都纷纷建立了自己的镜像站&#xff0c;一些有实力的大厂也开始为开源事…

labview圆环里实物动画图形_有趣的图形教案

有趣的图形教案作为一名优秀的教育工作者&#xff0c;通常会被要求编写教案&#xff0c;教案是保证教学取得成功、提高教学质量的基本条件。怎样写教案才更能起到其作用呢&#xff1f;以下是小编为大家整理的有趣的图形教案&#xff0c;希望对大家有所帮助。有趣的图形教案1活动…

安卓 图像清晰度识别_螺柱焊位置识别算法初稿

为了保证螺柱焊接时&#xff0c;螺柱焊接位置和螺柱所在凸台偏差太远带来的抱怨&#xff0c;打算采用图像识别的方法识别螺柱在所焊接凸台位置是否居中&#xff1b;在凸台上的的螺柱焊通过计算凸台圆弧的圆心和螺柱的圆心偏差来判断螺柱是否在凸台的中心&#xff0c;分以下几个…

电脑音频服务未运行怎么解决_电脑故障维修技巧教程:新手必看的修电脑技巧!...

日常生活工作中&#xff0c;我们的电脑总会出现各种各样的问题&#xff0c;如果掌握了一定的通用修电脑技巧&#xff0c;除了可以解决问题&#xff0c;说不定还能得到帮女神修电脑的机会&#xff0c;俗话说的好&#xff0c;电脑修的好&#xff0c;对象少不了&#xff01;电脑故…

vue 保留小数点厚一位_2019黑龙江公务员考试行测资料分析:保留有效数字巧解对位数相乘...

在行测考试中&#xff0c;资料分析是很重要的一部分&#xff0c;同学们也都知道这一部分是绝对不能放弃的。资料分析在做题的时候无非就是找数据、列式&#xff0c;最后再计算&#xff0c;那么这个时候问题就来了&#xff1a;数据找得到&#xff0c;列式也能列得对&#xff0c;…

cad计算总长度插件_超实用的CAD插件大合集,视频教程手把手教学,工作效率翻倍...

超实用的CAD插件大合集&#xff0c;视频教程手把手教学&#xff0c;工作效率翻倍&#xff01;今天被单位新来的实习生给上了一课&#xff0c;才知道原来CAD还有这么多好用便捷的插件。我厚着脸皮要来一份试了一下才体验到快速制图的快乐&#xff0c;这些全是平时制图能用得上的…

在linux操作系统Centos上安装服务器相关软件

如果您的服务器没有图形界面(GUI),您可以通过命令行(终端)来安装和配置Tomcat、JDK和MySQL等软件。以下是在没有图形界面GHome的 Linux 系统上安装这些软件的基本步骤: 对于CentOS Stream 9,您可以按照以下步骤在命令行上安装Tomcat、JDK 和 MySQL 数据库: 1. 安装JD…