2011-09-14 21 views
2

在香草JavaScript中使用JSONP通过创建<script>标记和src,让我考虑在JavaScript插件和其他利用库的JavaScript组件中进行依赖注入,但希望作为独立尽可能。通过动态的JavaScript依赖注入<script>标记

使用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依赖注入的可接受解决方案?对此有何想法?

回答

1

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

关于你的例子:把代码放在一个(匿名)函数中,不要用全部的变量填充全局作用域。

+0

好主意,谢谢! – jondavidjohn

0

是的,我相信这是google.load()背后的概念。

+0

呵呵,但这本身就是一个非注入依赖......对吗? – jondavidjohn

+0

:)是的。关键是,这不仅是一种有效的方法,而且是由一个备受尊敬的大型软件公司和图书馆开发人员使用的方法。我并不是说你必须使用Google才能使用该技术。 – gilly3