首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何预先预先计算代价高昂的代码片段?

如何预先预先计算代价高昂的代码片段?
EN

Stack Overflow用户
提问于 2020-01-09 04:19:17
回答 1查看 143关注 0票数 0

我们有一个React组件,它使用一些长时间计算提供的数据。提供的数据(长时间计算的结果)总是相同的(对于所有用户)。

我想要做的是确保这个计算只执行一次(在小型化期间),而不是每次用户加载页面时。

Webpack在生产模式下默认使用TerserPlugin进行小型化。

  • TerserPlugin是否聪明到能够计算出长计算总是返回相同的结果并对其进行优化?
  • 如果是的话,是否有一种方法来检查计算是否在运行时执行?console.log肯定会阻止优化。
  • 如果没有,也许另一个插件就能做到这一点?例如,UglifyJS。

简化webpack配置:

代码语言:javascript
代码运行次数:0
运行
复制
...

module.exports = {
  mode: 'production',

  entry: {
    app: ['...'],
  },
  output: {
    path: '...',
    filename: "[name].bundle.js",
    publicPath: "/"
  },

  module: {
    rules: [
      {
        test: /\.html$/,
        loader: "file-loader?name=[name].[ext]"
      },
      {
        test: /\.(jsx?|tsx?)$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
        }
      },
      ...
    ]
  },
  resolve: {
    extensions: [.ts", ".tsx", ".js", ".jsx"],
    modules: [
      path.join(__dirname, "./src"),
    ]
  },
};

我能想象的唯一方法是创建一个脚本,用所需的数据创建一个json文件。

  • 这是一个很好的解决方案,还是有一个更好、更简单的解决方案?一些缺点,例如:林特可能抱怨进口不存在,更复杂的设置。

下面是一个带有示例用例的演示

EN

回答 1

Stack Overflow用户

发布于 2020-01-09 04:36:45

如果所有用户中的数据是相同的,则如果存在后端,则应将数据缓存在后端。

如果每个客户端的数据都是唯一的,但您希望客户机进行更少的计算,那么请查看react.memo。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59657181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档