内容简介:不寒暄了,经过一周的开发,我们增加和改进了以下功能。通过一个自定义的 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)。
构成如下,
详见 mpa 配置 。
编译提速
把 Umi 3 增加的时间降回来,而且降地更多一些。
分别试了下最简项目和 antdpro 项目,最简项目无缓存编译从 7s 到 2s,antdpro 初始项目无缓存编译从 48s 到 27s。
背后我们做了几件事,
- 允许用户配置不编译 node_modules 依赖(视依赖不同可能减少 30% - 60%)
- 把处理热更新和错误渲染的 webpack-hot-dev-client 提前打包(减少 2-3 秒)
- 允许用户配置在 dev 时 external react、react-dom 等(减少 2-3 秒)
- 允许用户一键切换到 preact(减少 2-3 秒)
- 允许用户配置在 dev 时不开启补丁(减少 2-3 秒)
两种 node_modules 编译方式
node_modules 到底走不走 babel 编译?是个很纠结的问题。Umi 3 时参考 create-react-app 的实践引入了全量编译,但引发了不少编译速度和 OOM 问题。
所以,我们把 Umi 2 时不编译 node_modules 的方式也加了回来,供大家选择。
两种方式,
- 全量编译,但不编译某些依赖
- 不编译,但只编译某些依赖, es5-imcompatible-versions 下声明过的始终编译
详见 nodeModulesTransform 配置文档 。
优化 defineConfig 的 TypeScript 体验,支持插件配置
之前的 defineConfig 只支持内置的配置项,现在通过把 joi 的 schema 定义自动转为 ts 定义的方式,支持了插件的配置项的 TS 提示和校验。
其他
- 依赖升级,Babel 升级到 7.9.5
- 脚手架在 postinstall 里执行 umi generate tmp,并且默认不编译 node_modules
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 提速 10%,V8 引擎推出全新 Liftoff 基线编译器
- 提速 10%,V8 引擎推出全新 Liftoff 基线编译器
- 主题模型工具包 Gensim 3.4.0 发布,提速再提速
- 亚洲数字身份识别技术发展提速
- 优化总结:有哪些 APP 启动提速方法?
- 部署Envoy代理来为Monzo提速
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。