ecomfe / esl

enterprise standard loader
BSD 3-Clause "New" or "Revised" License
845 stars 228 forks source link

不同module id映射同一文件, 导致该文件初始化多次 #42

Closed lealife closed 9 years ago

lealife commented 9 years ago

通过map或paths映射可以使一个文件拥有不同的module id, 这样require时会使得该模块初始化多次. 这各情况应该是框架来处理(比如将所有模块变成绝对的http地址作为module id) ? 还是由用户(如果用户碰到, 这是一个大坑)来解决?

errorrik commented 9 years ago

嗯,esl确实没管这事,而据我所知,requirejs是有做根据url去重的。

没做的原因主要是:

  1. 在开发时的url重复,是可接受的。上线前通常会经过optimize,将module进行一些合并,这时已经不存在这个问题
  2. 我们确实不太建议在开发时使用paths映射到baseUrl中,原因看这里 http://efe.baidu.com/blog/dissecting-amd-how/ ,查找不要使用paths
  3. 就算你完全不合并,按开发时的状态上线,浏览器也会有缓存机制来解决这个问题