我开发了一个 JavaScript 系统,它被分成一堆文件(大约 20-25 个)。其中大多数是核心文件,需要存在才能使系统正常运行,但有些文件充当插件,如果不需要该功能,可以省略。
我担心的是,我有一堆 HTML 页面使用这个系统和不同的插件组合,所有这些页面都有 <script>
的巨大墙。页面开头的标签需要仔细排序,以便首先加载文件的所有依赖项。感觉我或其他人搞乱 HTML 文件之间这些标签的复制/粘贴和内容中断只是时间问题。
所以,我一直在研究 jQuery 的 getScript()
功能并考虑创建一个安装文件,该文件采用一些参数指定要使用的插件组合,然后动态加载幕后的所有内容,将其全部减少为单个 <script>
每个文件的标签(不包括 jQuery 等)
这有什么重要的缺点吗?据推测,由于 jQuery 初始化等原因,加载会花费更长的时间,但这可能很重要吗?另外,是getScript
如果依赖项在其依赖项之前完成下载,跨文件依赖项可能不安全?是否还需要考虑浏览器兼容性问题?
我真的很想清理这面标签墙,所以如果有更多经验的人可以帮助我,我将不胜感激。
最佳答案
我不是 jQuery 专家,但我相信 getScript()
是异步的,而您的脚本加载则不是。这有优点也有缺点。这是 getScript()
实际执行的操作:
$.ajax({
url: url,
dataType: 'script',
success: success
});
如果你有一个页面高度依赖于这个 javascript 那么这将是一个坏主意。如果您的页面不需要快速加载脚本,那么使用 getScript()
应该没问题。另外,如果您需要按特定顺序加载脚本,则这根本无法异步工作(因为脚本可以按 getScript()
中的任何顺序运行)。
还需要注意的是,getScript()
不会附加脚本元素。相反,它在全局上下文中运行它们。这对于大多数应用程序来说应该无关紧要,但对于某些应用程序来说确实会产生影响。
此外,我建议查看DurandalJS 。它包括 jQuery 以及 Knockout(一个很棒的库,但并不真正适用于本文)和 RequireJS ,一个可以帮助您完成所需任务的库!
关于javascript - 我应该使用 jQuery 的 getScript() 还是大量的 <script> 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20076360/