通过动态<script>标记</script>注入JavaScript依赖项

时间:2011-09-14 21:03:52

标签: javascript jquery dependency-injection script-tag

通过使用<script>创建src标记在vanilla JavaScript中使用JSONP,让我考虑在JavaScript插件和其他利用库但希望如同的JavaScript组件中使用相同的依赖注入方法尽可能独立。

使用jQuery作为可能需要注入的流行库的示例......

// make sure we don't load it if already loaded.
if (typeof jQuery === 'undefined') {
    var dependency = document.createElement('script');
    dependency.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js";
    document.getElementsByTagName('head')[0].appendChild(dependency);
}

window.onload = function() {
    // jQuery is now available w/o the extra <script> tag added by the end user...
}

真的在这一点上它主要是概念性的(但确实有效),但我想知道这是否会被认为是JavaScript依赖注入的可接受解决方案?有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在实施此技巧之前,您应该考虑为什么需要它。在代码至关重要时使用该方法是可以接受的,并且必须在未知环境中使用。当您为外部网站构建Web插件时,请尝试强制开发人员包含所需的库。它更有效,也更可靠。

关于你的例子:把代码放在(匿名)函数中,不要用不必要的变量填充全局范围。

答案 1 :(得分:0)

是的,我认为这是google.load()背后的概念。