在Django可重用应用程序中处理冗余静态媒体(js,CSS)(如jQuery)的最佳实践

时间:2012-04-25 19:49:28

标签: jquery python django

在Django中构建可重用的应用程序时,例如提供可在任何地方使用的特殊小部件的应用程序,处理应用程序所需的静态文件的最佳方法是什么,但也可以由其他应用程序使用。一个很好的例子是jQuery。

如果我使用3个可重复使用的应用程序,并且所有这些应用程序都在其静态目录中使用并捆绑jQuery,则在加载使用所有3个应用程序的页面时,浏览器将加载3次jQuery(可能是不同的版本)。这可能会导致一些问题。例如,如果要加载的最后一个jQuery是旧版本而另一个应用程序需要最新版本,则可能会破坏其他应用程序。此外,它还会在首页加载时添加更多下载时间,并为每个页面添加更多请求。这不是最理想的。

那么如何构建一个可重用的应用程序来避免这个问题?

1 个答案:

答案 0 :(得分:0)

你有三个很大的选择(也许你最好通过它们的组合服务):

  • http://api.jquery.com/jQuery.noConflict/可以帮助您使用jquery,而不会对$变量的控制产生冲突。

  • 你可以使用谷歌的CDN版本来包含一个链接吗?我认为这个技巧用得很多。见Microsoft CDN for jQuery or Google CDN?。你不会以这种方式获得多份副本。

  • 不要自己包含jquery,但要求您的代码只能使用$。只是说这是一个要求。

或者你可以创建一个基本的django应用程序,仅用于包含jquery。 django-staticfiles在这里有帮助。但是你可能想要使用上面的一个提示。