reactjs - 如何将 Preact 添加到现有的 create-react-app 项目中?
问题描述
我有一个 React 项目,我想将其转换为 Preact 以节省包大小。
我遵循了这个建议,在我的代码中添加了以下元素:
更改package.json
:
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
},
...并添加config-overrides.js
:
const { override, addWebpackAlias } = require('customize-cra');
module.exports = override(
addWebpackAlias({
'react': 'preact/compat',
'react-dom': 'preact/compat'
})
);
当然,我也安装了preact-compat
和preact
.
在构建我的应用程序并使用 Webpack 包分析器查看组件时,我看到了这一点react
,并且react-dom
仍在我的包中。
我的实施做错了什么?
解决方案
react
并且react-dom
出现实际上是正确的!
别名是指您提供了它没有要求的其他内容。
或许为了帮助描述,想象一下你要我要一把螺丝刀来拧紧什么,只有我知道那把螺丝刀不对,而是把正确的给你。您仍然可以完成工作,但您对此一无所知,并将该螺丝刀称为您要求的螺丝刀。你不知道我给了你完全不同的东西。
这里的别名工作方式相同。CRA 最终要求使用 React,但我们放弃了 Preact。由于preact/compat
一切都一样,CRA 并不比我们给它 Preact 更聪明,而不是 React。
您可以通过将别名注释掉并比较构建大小来确认别名是否有效。React 将大几个数量级。因此,如果未注释时,构建大小要小得多,恭喜!别名有效,您正在使用 Preact。
推荐阅读
- android - 从android中的字符串值获取名称ID
- python - python中的伽玛校正
- javascript - 赛普拉斯:有条件地结束链
- android - Recycler Adapter reads data again and again after on click item (ANDROID KOTLIN)
- postgresql - 我应该如何在 PostgreSQL 中使用 COALESCE 函数?
- flutter - 如何将bookmark_outline 更改为onPressed 书签?
- swift - 将结构实例调用到类中?(迅速)
- apache-spark - 为什么广播连接收集数据给驱动程序以打乱数据?
- php - 寻找 PHP 智能格式号
- c++ - 标识符“NULL”未定义,标识符“strncpy”在wsl上的vscode中未定义