RequireJS模块检测

时间:2015-07-28 18:10:24

标签: javascript requirejs r.js

在我的项目中,我使用了一些RequireJS模块。我使用了Require JS优化器( r.js )将它们进一步打包到各种模块中。因此,如果我们在打包后需要模块如 a.js,b.js,c.js和d.js ,我们就会得到:

abc.js (这是a.js和b.js的组合)

a.js, b.js

def.js (这是c.js和d.js的组合)

c.js, d.js

我们已经通过CDN提供了这些模块abc.js和def.js,最终用户使用它。有没有办法找出谁正在使用 a.js 以及谁正在使用 b.js ?我的意思是,我们能否检测到谁在其应用程序中下载了哪个模块这变得有点棘手,因为有时它也会从浏览器缓存中加载。至少我们可以在 abc.js def.js 的水平上完成吗?

1 个答案:

答案 0 :(得分:1)

问题是如果你在同一个文件中分发两个模块然后你需要一些方法来跟踪每个模块的使用情况(对吗?)并进一步复杂化,浏览器缓存静态文件,其他用户可以下载你的模块和自我主持人等等。

我认为这是一个稍微偏执的解决方案,但它应该有效。您可以获取像Segment.IO这样的JavaScript分析库:

https://segment.com

在模块A的定义中(在其中"工厂"或定义块),您可以跟踪它的用法:

analytics.track('module A was required');

同样在模块B的定义中:

analytics.track('module B was required');

这种方式即使它们在同一个文件中定义并且可以缓存,只有当用户需要单个模块时才会触发跟踪调用,这样您才能准确知道某个模块的确切时间使用你的。