【问题标题】:RequireJS module detectionRequireJS 模块检测
【发布时间】:2015-07-28 18:10:23
【问题描述】:

在我的项目中,我使用了一些 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

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

【问题讨论】:

    标签: javascript requirejs r.js


    【解决方案1】:

    问题是,如果您将两个模块分布在同一个文件中,那么您需要一些方法来跟踪每个模块的使用情况(对吗?)并且使事情进一步复杂化,浏览器缓存静态文件,其他用户可以下载您的模块和自托管等。

    我认为这是一个稍微越位的解决方案,但它应该可以工作。你可以获取一个像 Segment.IO 这样的 JavaScript 分析库:

    https://segment.com

    在模块 A 的定义中(在它的“工厂”或定义块内),您可以跟踪它的使用情况:

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

    同样在模块 B 的定义中:

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

    这样,即使它们在同一个文件中定义并且可以被缓存,只有当用户需要单个模块时,您才会触发跟踪调用,因此您将确切知道何时使用您的某个模块.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      相关资源
      最近更新 更多