翻webpack 源码的时候,发现webpack的所有导出模块都用memorize函数处理了一下,具体代码如下, github 源码地址
commonjs 的 require 内容应该是缓存在内存中的,为什么还要加一个memorize 处理
翻webpack 源码的时候,发现webpack的所有导出模块都用memorize函数处理了一下,具体代码如下, github 源码地址
commonjs 的 require 内容应该是缓存在内存中的,为什么还要加一个memorize 处理
13 回答13.1k 阅读
8 回答3k 阅读
3 回答1.4k 阅读✓ 已解决
2 回答5.3k 阅读✓ 已解决
5 回答1.5k 阅读
3 回答2.4k 阅读✓ 已解决
5 回答1.8k 阅读✓ 已解决
简单看了一下这个函数的实现,作用是把一个函数包装成只能执行一次的新函数,第二次再执行会直接返回第一次的执行结果。
看起来就是个简单的性能优化。例如某个函数执行结果可能很久、或是占用内存很大,但一旦执行结束后,就可以把执行结果缓存下来,后面直接取这个结果就行了,不用再重复耗时执行。
而且我翻了一下提交记录,这个函数在 2018 年 12 月的一次 commit 中被引入。但直到 2020 年 4 月,还有相关的 commit,也没啥变化,就是把
require
之类的方法全都用memorize
又包了一层,实在是没看明白有啥用,require
本来就是只会执行一次啊。