2010-09-13 85 views
1

我们目前正在开发一个ASP.NET MVC应用程序,该应用程序将部署在企业内部网上,并在公共互联网上提供稍微修改后的面向客户的版本。本地或外部引用JavaScript库?

我们正在使用一些外部JavaScript库(例如jQuery),并且讨论了关于引用库的内容 - 我们是否应该从外部源引用它们(例如通过Google load jQuery方法)或保留我们自己的版本,并从那里参考?

项目经理有点担心如果我们从那里引用Google(或任何人)的“依赖关系”,并认为拥有自己的图书馆副本使我们更加独立。另一方面,我听说让别人托管图书馆还有很多好处 - 例如,他们为我们处理版本控制,Google不会很快去任何地方......

(为此目的的讨论假设我们托管的内部网具有外部访问 - 显然如果事实证明它并不是我们为此做出的决定!)

所以,这很重要吗?如果是这样,我们该怎么做,为什么?我不知道这是否是社区维基的候选人,让我知道如果我应该有这个问题的话。把它放在那里,我会知道未来!)

谢谢:)

回答

2

是应用到内部用户的关键?如果“互联网瘫痪”,您的企业会因为内部用户无法访问应用程序而受到影响吗?它的确比风险更重要。

此外,如果有变化或其他方面,你不想管理'升级'?

+0

这很关键。但是我们正在考虑降级 - 所以无论如何,它应该最低限度地运行,而不需要javascipt。我更感兴趣的是外部托管的利弊,因为缺点显而易见。您绝对正确,但这些都是可能的担忧,谢谢! – randomsequence 2010-09-13 11:50:42

0

,你可以这样做

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

<script type="text/javascript"/> 
if(window.$) { 
    // jquery script goes here 
} else { 
    var elmScript = document.createElement('script'); 
    elmScript .src = 'jQuery.js'; // path to jquery 
    elmScript .type = 'text/javascript';   
    document.getElementsByTagName('head')[0].appendChild(elmScript); 
} 
</script> 
0

尽管从具有您的代码分散在多个地点,其中一些你不控制出现的复杂性的问题,也有一个轻微的性能损失支付用于从多个域中提取内容(例如,额外的dns查找)。对于一个公共网站来说,很多用户将成为第一人,但是代码已经被缓存可能会带来一些好处,但除此之外我并不认为这一点。

1

通常使用托管库的原因是性能。我的浏览器只会下载每台主机的有限数量的文件。因此,使用托管库将从不同的主机加载文件,因此与其他文件并行加载。

第二个原因是这些文件通常被压缩并且缓存头设置正确。这些文件通常存储在CDN中,这意味着您的用户将从离它们最近的主机下载文件。

但是,所有这些原因在Intranet环境中并不那么重要。

0

这样做的主要原因是因为@ Kau-Boy已经提到的性能原因。 JQuery是一个相对较小的库(它为你提供的),它将被外部用户的浏览器/代理/ ISP缓存在本地。所以除了小延迟增益之外,它不会给你任何东西。

如果您发现自己添加了许多外部Javascript文件,那么您应该重新考虑整体设计策略。选择一个好的通用库(我个人认为jQuery是无与伦比的 - 这是主观部分),并从内部学习它。无论如何,您不应该再添加更多的库,而应该将其包含在逐页的基础上。

顺便提一下其他人在这里的一些很好的答案。