【发布时间】:2014-12-22 22:05:00
【问题描述】:
我正在创建一个 Web 应用程序,其中包含多个内容页面,我使用 AJAX 和 HTML5 History API 动态加载这些内容。当用户尝试更改页面时,新内容会使用 $.get 加载并注入正文,如下所示:
$.get("somepage.html", function (data)
{
$("body").html(data);
});
这些页面中的大多数都需要加载额外的脚本。除了 $(document).ready 在这些脚本加载之前触发之外,这不会是一个问题。 Somepage.html 看起来像这样。
<script src='http://getjquerysomewhere/'></script>
<script src='my_script_that_depends_on_jQuery'></script>
由于这些页面必须能够自行加载,因此这个问题变得复杂。因此,我不确定如何在不影响此行为的情况下消除 $(document).ready 函数。
我应该如何解决这个问题?
【问题讨论】:
-
你可以使用Promise。
-
在我看来你需要一个依赖注入框架,或者,你只需要预先加载所有代码。
-
我假设您的意思是以前的依赖注入?我过去使用过 require.js,似乎做得很好。我对现在可用的东西不太熟悉,因为我有一段时间不需要它了。我倾向于为应用程序预先加载大部分代码,而我的网站使用的 js 很少。
-
我不认为 20kb 会影响加载时间。
-
我倾向于避免在 html 中加载脚本,因为这样您就必须处理删除对已包含的库/插件的引用。那时它开始变得非常复杂。例如,您包含的演示 html 包含指向 jquery.js 的链接。在将元素编译到 dom 节点之前必须将其删除,这只能通过字符串操作来完成。如果你用 jQuery 解析它,它会在你删除它们之前执行脚本,从而破坏了用 ajax 加载页面的意义。
标签: javascript jquery ajax document-ready html5-history