我是否必须在每个网页中包含所有头部内容?

时间:2017-07-26 11:24:30

标签: javascript html css

我正在用HTML和CSS构建一个基本的前端网站。它由多个网页组成,每个网页共享相同的JS和CSS文件。因此,我的<head>代码包含大约45行代码。我只是想知道这是“最佳实践吗?”有没有办法让一个文件包含各种样式表和脚本的所有共享链接,这样我就可以将所有页面中的45个标题标题缩小到3或4个。

此外,如果我必须更改自定义CSS位置或添加新的自定义JS文件,那么这意味着要添加到我的每个网页。这变得很麻烦,我只想知道是否有任何可以解决的问题。当我完成时,我可能最终得到十几页,这听起来像是很多不必要的代码。

谢谢!

编辑:

我的代码:

<head>

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">

<!-- Favicons generated using realfavicongenerator.net -->
<link rel="apple-touch-icon" sizes="180x180" href="img/favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="img/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="img/favicons/favicon-16x16.png">
<link rel="manifest" href="img/favicons/manifest.json">
<link rel="mask-icon" href="img/favicons/safari-pinned-tab.svg" color="#5bbad5">
<meta name="theme-color" content="#ffffff">

<!-- Bootstrap Core CSS -->
<link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">

<!-- Custom Fonts -->
<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Catamaran:100,200,300,400,500,600,700,800,900" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Muli" rel="stylesheet">

<!-- Plugin CSS -->
<link rel="stylesheet" href="lib/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="lib/simple-line-icons/css/simple-line-icons.css">
<link rel="stylesheet" href="lib/device-mockups/device-mockups.min.css">

<!-- Theme CSS -->
<link href="css/new-age.min.css" rel="stylesheet">
<link href="css/custom.css" rel="stylesheet">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

<!-- jQuery -->
<script src="lib/jquery/jquery.min.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="lib/bootstrap/js/bootstrap.min.js"></script>

<script src="bower_components/riot/riot.js"></script>
<script src="bower_components/riot-route/dist/route+tag.js"></script>

<!-- Plugin JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>

<!-- Theme JavaScript -->
<script src="js/new-age.min.js"></script>

在我的十几个网页中,每个网页都有很多代码。有办法避免这种情况吗?

5 个答案:

答案 0 :(得分:0)

例如,如果您的文件名是index.html,则将其重命名为index.php,然后剪切您的头部并创建一个名为head.php的新文件,并为页脚做。对于您创建的新页面,只包括这些参考如下

<!DOCTYPE hml>
<html>
<?php include 'head.php' ?>
<body>
<?php include 'footer.php' ?>
</body>
</html>

答案 1 :(得分:0)

简短的回答是,您发送到浏览器的每个页面都必须包含完整的<head>,因此您必须包含它。

答案越长,有几种方法可以避免每次都粘贴所有内容。例如,如果你有一个php服务器,你可以有一个单独的head.html文件,其中包含你的头部,你会在每个页面中包含这样的文件:

<?php include('head.html'); ?>

或者,如果您使用的是像express.js,Flask或Symfony这样的Web框架(仅举几例,还有更多),您可以使用模板扩展一个基础。您可以定义一个基本模板,所有其他模板都基于该模板,从而避免重复代码。

如果你根本不使用网络服务器,你可以引入一个类似Gulp的构建管道。 Gulp可以在部署之前获取所有html文件并优化/操作它们。例如,您可以使用插件gulp-inject-html注入所有head内容。

希望这为您提供了很多选择,以决定您希望如何继续:)

答案 2 :(得分:0)

由于您为页面使用了大量外部库,因此添加另一个库不会受到影响。这直接来自W3school,here

header.html(内容)

<html>
  <head>
      <title>test</title>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-bootstrap/0.5pre/assets/css/bootstrap.min.css">
  </head>
  <body>

Content.html(内容)

 <h1>Header1</h1>

footer.html(内容)

   </body>  
</html>

然后在index.html(内容)

<script src="https://www.w3schools.com/lib/w3.js"></script> 

<div w3-include-html="header.html"></div>
<div w3-include-html="content.html"></div> 
<div w3-include-html="footer.html"></div> 

<script>
w3.includeHTML();
</script> 

这只是使用HTML和JavaScript,最有效的方法是使用PHP等服务器端语言。

答案 3 :(得分:0)

您可以创建一个新文件并过去其中的所有头部代码。另存为.php或.html。例如保存在 filePath / headings.html ;

在主页面内必须是一个php文件,执行以下操作:

  <?php include('filePath/headings.html');?> 

或使用

<?php require_once('filePath/headings.html')?>

include内置函数允许您向页面添加文件,如果找不到文件,它将显示一些警告并继续执行WHILE require或require_once将抛出错误并暂停代码执行,如果文件不是找到。 您也可以使用

<?php require('filePath/headings.html')?>

您可以在代码的任何部分使用此功能,例如侧边栏,标题,导航等。 请不要将include或require文件名保存为header.php,而是使用heading.php或head.php

我希望这个帮助

答案 4 :(得分:-1)

我看到你正在使用jQuery:

所以这会对你有所帮助:

$(document).ready(function() {
    $('head').load('pathToCommonCode/head.html');
});

将所有冗余代码放在 head.html 中,并提供其路径。

例如head.html将包含以下内容:

<!-- jQuery -->
<script src="lib/jquery/jquery.min.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="lib/bootstrap/js/bootstrap.min.js"></script>

<script src="bower_components/riot/riot.js"></script>
<script src="bower_components/riot-route/dist/route+tag.js"></script>

<!-- Plugin JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>

<!-- Theme JavaScript -->

注意:此方法适用于同一域中的文件。

如评论中所述:

来自documentation

  

由于浏览器安全限制,大多数&#34; Ajax&#34;要求是   遵守同一原产地政策;请求无法成功   从不同的域,子域,端口或协议中检索数据。