【发布时间】:2021-10-18 09:24:45
【问题描述】:
在我的项目(Next.js v10)中,不可变库用于与 redux 一起工作。现在我解决了优化的问题,因为我遇到了“红色”首先加载js的问题。
我在这方面还不是很强,但我会努力学习和理解一切。我在页面本身上应用了动态导入,正如到处都建议的那样,它有很大帮助,因为情况比现在更糟。我检查了 _document.js 和 _app.js,一切似乎都很好,除了:
//_app.js
const {serialize, deserialize} = require('json-immutable');
...
const wRedux = withRedux(makeStore, {
serializeState: state => state ? serialize(state) : state,
deserializeState: state => state ? deserialize(state) : state
})(MyApp);
export default wRedux;
按照现在的方式,我得到:
如果我完全关闭序列化和反序列化的使用(在 _app.js 中),并且 index.tsx(没有 redux 请求,也没有 React 以外的导入)只会返回一个空 div => 我明白了:
const wRedux = withRedux(makeStore, {
serializeState: state => state,
deserializeState: state => state
})(MyApp);
一些块丢失了,但不可变块仍然存在( 虽然由于某种原因它的大小略有不同,但哈希是相同的):
我发现这篇文章:https://betterprogramming.pub/try-these-instead-of-using-immutable-js-with-redux-f5bc3bd30190 并查看https://www.npmtrends.com/immutable-vs-immer-vs-seamless-immutable
问题是整个项目已经在语法immutable-js(post.get('prop'))上
我的问题:
- Immer 会好多少?
- 他(Immer)是否也会“进入一般区块”?
- 还有哪些其他方法可以减小“First Load JS 所有人共享”的大小?
- 也许还有其他一些缺点,由于缺乏经验,我没有注意到,但可以在报告中看到它们?
感谢您的帮助!
【问题讨论】:
-
感谢您的信息,Immer 的引入确实产生了积极的影响。
标签: next.js immutable.js webpack-bundle-analyzer