【发布时间】:2020-11-06 09:38:44
【问题描述】:
我使用 NextJS 生成静态页面列表。
所有页面都需要一个大的静态 Javascript 对象,需要几分钟来初始化(它包含解析许多其他文件的结果)。
const bigData = initializeBigData(); // <- called for every page, instead once
export async function getStaticProps({ params }) {
return { bigData[params.slug] }; // ...
}
不幸的是,我找不到一种方法来初始化这个数据对象一次。相反,每次创建页面时都会运行缓慢的initializeBigData(),这使得构建速度非常慢。
我尝试了以下方法:
- 将模块用作单例
- 使用 ES6 类单例
- 使用 npm 包once
- 将构建线程减少到 1:
npm run build --threads=1
所有这些都没有改变,在构建网站时,每个页面都会调用长 initializeBigData()。
如果可能,我不想使用自定义服务器。
如何在 NextJS 项目的构建过程中只初始化一次对象?
【问题讨论】: