Umi 3.1,支持 mpa,编译大幅提速,两种 node_modules 编译方式,优化 defineConfig 的 TypeScrip...

栏目: IT技术 · 发布时间: 4年前

内容简介:不寒暄了,经过一周的开发,我们增加和改进了以下功能。通过一个自定义的 Umi 渲染器mpa 由于不会引入 react-router 和 history,一个简单的 mpa 应用尺寸可以控制地很小。试了下 mpa + preact + 禁用 polyfill 的组合,产物只有 18 Kb(gzipped)。

不寒暄了,经过一周的开发,我们增加和改进了以下功能。

支持 mpa

通过一个自定义的 Umi 渲染器 renderer-mpa 实现 mpa 的支持,复用现有的路由配置和绝大部分能力,每个页面需要有一个 React 组件出口。不是传统意义上的 mpa,但 React 应用的场景下够用。

mpa 由于不会引入 react-router 和 history,一个简单的 mpa 应用尺寸可以控制地很小。试了下 mpa + preact + 禁用 polyfill 的组合,产物只有 18 Kb(gzipped)。

Umi 3.1,支持 mpa,编译大幅提速,两种 node_modules 编译方式,优化 defineConfig 的 TypeScrip...

构成如下,

Umi 3.1,支持 mpa,编译大幅提速,两种 node_modules 编译方式,优化 defineConfig 的 TypeScrip...

详见 mpa 配置

编译提速

把 Umi 3 增加的时间降回来,而且降地更多一些。

分别试了下最简项目和 antdpro 项目,最简项目无缓存编译从 7s 到 2s,antdpro 初始项目无缓存编译从 48s 到 27s。

Umi 3.1,支持 mpa,编译大幅提速,两种 node_modules 编译方式,优化 defineConfig 的 TypeScrip...

背后我们做了几件事,

  1. 允许用户配置不编译 node_modules 依赖(视依赖不同可能减少 30% - 60%)
  2. 把处理热更新和错误渲染的 webpack-hot-dev-client 提前打包(减少 2-3 秒)
  3. 允许用户配置在 dev 时 external react、react-dom 等(减少 2-3 秒)
  4. 允许用户一键切换到 preact(减少 2-3 秒)
  5. 允许用户配置在 dev 时不开启补丁(减少 2-3 秒)

两种 node_modules 编译方式

node_modules 到底走不走 babel 编译?是个很纠结的问题。Umi 3 时参考 create-react-app 的实践引入了全量编译,但引发了不少编译速度和 OOM 问题。

所以,我们把 Umi 2 时不编译 node_modules 的方式也加了回来,供大家选择。

两种方式,

  1. 全量编译,但不编译某些依赖
  2. 不编译,但只编译某些依赖, es5-imcompatible-versions 下声明过的始终编译

详见 nodeModulesTransform 配置文档

优化 defineConfig 的 TypeScript 体验,支持插件配置

之前的 defineConfig 只支持内置的配置项,现在通过把 joi 的 schema 定义自动转为 ts 定义的方式,支持了插件的配置项的 TS 提示和校验。

Umi 3.1,支持 mpa,编译大幅提速,两种 node_modules 编译方式,优化 defineConfig 的 TypeScrip...

其他

  • 依赖升级,Babel 升级到 7.9.5
  • 脚手架在 postinstall 里执行 umi generate tmp,并且默认不编译 node_modules

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML5

HTML5

Matthew David / Focal Press / 2010-07-29 / USD 39.95

Implement the powerful new multimedia and interactive capabilities offered by HTML5, including style control tools, illustration tools, video, audio, and rich media solutions. Understand how HTML5 is ......一起来看看 《HTML5》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具