在同一页面上多次为同一模块调用YUI.add是否安全?

时间:2012-03-14 18:17:43

标签: javascript yui portlet

我在门户网站环境中工作。我希望多个portlet使用一些常见的YUI模块。我也想让portlet 100%自包含。换句话说,我不想在门户级别将YUI.add调用放在通用JS中。

因此,每个porlet都有一个相同JS代码的副本(由构建过程从公共依赖项添加,我不手动保持代码在portlet之间同步)。如果同一页面上有多个portlet,则表示每个都会调用YUI.add。这会导致问题吗?我可以将所有JS放在一个单独的servlet中,让YUI动态加载器来处理它,但这会带回一个外部依赖。为了使这些portlet能够工作,必须部署servlet ......

1 个答案:

答案 0 :(得分:0)

YUI跟踪已加载的模块:

http://yuilibrary.com/yui/docs/api/files/yui_js_yui.js.html#l568

每次在模块上调用YUI.add(时,它都会循环通过YUI实例并检查它们是否已加载模块。如果实例未加载模块,则add方法将模块提供给实例的加载器。

因此冗余调用add会产生微小的开销,但这并不严重。