我认为没有简单的“最佳”解决方案可以满足您的要求。我确实在各种项目中使用了许多不同的方法。他们都做得很好——重要的是你喜欢如何组织代码,所以你可以很容易地在更长的时间内维护它。这当然是一件相当私人的事情。
我自己喜欢将 CDN 用于 jQuery - 它比(非常不可能的)风险具有更多优势,即 google-CDN 服务器停机时间超过 5 秒。即使这样,您也可以在您的代码中构建故障保存以加载本地托管的 jQuery 框架,以防 CDN 无法访问,如下所示:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/lib/jquery-1.10.2.min.js"></script>')</script>
关于代码组织:我更喜欢按以下结构管理我的文件
/app
+- /js
| +- /src <- my custom scripts go into "/js/src"
| | +- general-ui.js <- I create/edit this file
| | Usually I only edit files in this directory
| +- general-ui.min.js <- the minified version is automatically stored in "/js"
| | I never edit a file in here
| +- /lib <- external libraries go in here.
| | NEVER edit a file inside the "/js/lib" folder!
| +- jquery-1.10.2.min.js <- Always add version-number to the files in /js/lib
+- /css
| +- /scss <- my SCSS source files which compile into "/css/style.css"
| +- /lib <- stuff like twitter bootstrap css. Never edit files in here
| +- /font <- webfonts used by the css
+- /inc <- my own PHP classes/modules/etc
| +- /lib <- external PHP modules (again: never edit these files yourself)
+- /img <- all images used by the application
+- /web <- my own PHP/HTML files
+- index.php <- this will load the /inc/application.php class which handles the rest
+- debug.php <- same as index, but enables some debugging flags enabled
+- config.php <- config stuff (DB, etc)
在我的方法中,我将始终在应用程序快照中包含所有外部文件(例如,包括 jquery 和其他库的版本号)——因为毕竟应用程序是为某个外部库构建、测试并依赖于某个外部库的;所以我想将这些库“硬链接”到代码,因为它们形成一个单元。
所以我的建议是不要使用 git 子模块,而是拥有一个包含所有文件的单一存储库,您可以完全控制这些文件。但是使用 CDN 加载库(您可以准确控制要加载的版本,这使得这个解决方案非常好)。新版本的 jQuery?首先在本地实现,测试一下,然后将新的jQuery文件添加到/js/lib文件夹中(不要覆盖旧的,而是添加一个具有唯一版本号的新文件)