包括需要很长时间才能加载,您可以看到它们正在加载

Includes taking a long time to load and you can see them loading

我将一个 HTML 文件包含在另一个文件中,作为重用我的 header 和导航生成逻辑的一种方式。

麻烦的是,当我浏览到我网站上的页面时,我可以看到 没有 包含在包含文件中的 HTML 首先加载。只有这样,您才能看到随后加载的菜单和横幅。我希望所有内容都同时加载。

这是 rendered HTML

这里有一个代码片段向您展示了我是如何生成这些页面的:

<!DOCTYPE html>
<html lang="en">

<head>
    <script src="assets/js/jquery-2.1.3.min.js"></script> 
    <script> 
    $(function(){
      $("#includeHeader").load("includes/templates/header.html");
      $("#includeNavigation").load("includes/templates/navigation.html"); 
    });
    </script>
    <div id="includeHeader"></div>
</head>

<body>

    <div id="wrapper">

        <!-- Navigation -->
        <div id="includeNavigation"></div>

我目前正在使用代码尝试将任何外部库/CSS 移动到页面底部而不是 header 中。但到目前为止,这并没有真正改变或改善任何东西。

您正在使用 $(handler) 加载它们,这是 $.ready() 的一种形式。所以它会等待文档加载所有内容,然后再加载 header.htmlnavigation.html.

尝试

  <head>
    <script src="assets/js/jquery-2.1.3.min.js"></script> 
  </head>
  <body>
    <div id="includeHeader"></div>
    <script> 
      $("#includeHeader").load("includes/templates/header.html");
      $("#includeNavigation").load("includes/templates/navigation.html"); 
    </script>
  </body>

您的问题是在 document.ready 事件触发之前加载函数不会 运行。这可能是在您的页面开始呈现之后。要让所有内容同时出现,您可以使用 .load 的回调来显示所有内容。所以一切都被隐藏了,

$( "#result" ).load( "ajax/test.html", function() {
    /// show your stuff
});

您当然需要知道两者都已加载。

我建议不要使用 javascript 从静态路径呈现 HTML,而是使用服务器端语言来提高速度。

我认为它使关卡速度变快,而不是等待加载所有 dom 元素,我正在考虑 #includeNavigation 元素在 #includeHeader 元素下

  <head>
    <script src="assets/js/jquery-2.1.3.min.js"></script> 
  </head>
  <body>
    <div id="includeHeader"></div>
    <script> 
      $("#includeHeader").load("includes/templates/header.html", function(data){
          console.log("header loaded");
          $("#includeNavigation").load("includes/templates/navigation.html", function(data){
                 console.log("navigation loaded");
          }); 
      });
    </script>
  </body>

您应该使用其中一种模板语言。

如果您的包含文件是简单的 HTML 文件,那么您可以使用 Handlebars or Dust - 您只需复制代码即可,然后在 Javascript 中,您只需要呈现这些模板- 查看文档。

你可以用Jade/Pug代替,但它的语法与HTML不同,所以这不仅仅是复制粘贴的问题。