Bootstrap: 是否可以创建一个可以导入到网站上每个新页面的模板?

Bootstrap: Is it possible to create a template that can be imported to each new page on a website?

我正在使用 Bootstrap 创建个人 website/blog。我是这个框架的新手,一般来说 web-development,所以我很感激一些指示。 我希望我添加的任何新页面都具有相同的布局:侧边导航菜单占据 3 列,内容占据剩余的 9 列。在小格式中,我将让它们各自占据完整的 12 列。 我想制作这个模板,因为如果有一天我决定改变我的网站布局,我不想为了这样做而必须浏览每个单独的文件。 那么有什么方法可以创建一个模板,并导入到每个页面中吗?

我用谷歌搜索了它,但似乎找不到任何相关信息。对我来说,这似乎是一个非常明显的功能,所以我想我会找到一些东西,但我一直没能找到。

这是我的页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Intro</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="../main.css">
    <link rel="stylesheet" type="text/css" href="template.css">
</head>
<body>
    <!-- Top navbar -->
    <nav class="navbar navbar-expand-md">
        <a class="navbar-brand" href="#">Logo</a>
        <button class="navbar-toggler navbar-dark" type="button" data-toggle="collapse" data-target="#main-navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="main-navigation">
            <ul class="navbar-nav">
                <li class="nav-item">
                    <a class="nav-link" href="#">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">About</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Contact</a>
                </li>
            </ul>
        </div>
    </nav>

    <!-- Main body of page -->
    <div class="container-fluid">
        <div class="row">
            <!-- Sidebar -->
            <div class="col-lg-3 col-md-3 col-sm-12" id="sideBar">
                <h4 class="feature-title">Table of Contents</h4>
                <div class="panel-group">
                    <div class="panel panel-default">
                        <div class="panel-heading">
                            <h4 class="panel-title"><a data-toggle="collapse" href="#collapse1">Introduction</a></h4>
                        </div>
                        <div id="collapse1" class="panel-collapse collapse">
                            <ul class="list-group">
                                <li class="list-group-item">One</li>
                                <li class="list-group-item">Two</li>
                                <li class="list-group-item">Three</li>
                            </ul>
                        </div>
                        <div class="panel-heading">
                            <h4 class="panel-title"><a data-toggle="collapse" href="#collapse2">Fundamentals</a></h4>
                        </div>
                        <div id="collapse2" class="panel-collapse collapse">
                            <ul class="list-group">
                                <li class="list-group-item">One</li>
                                <li class="list-group-item">Two</li>
                                <li class="list-group-item">Three</li>
                            </ul>
                        </div>
                        <div class="panel-heading">
                            <h4 class="panel-title"><a data-toggle="collapse" href="#collapse3">Software</a></h4>
                        </div>
                        <div id="collapse3" class="panel-collapse collapse">
                            <ul class="list-group">
                                <li class="list-group-item">One</li>
                                <li class="list-group-item">Two</li>
                                <li class="list-group-item">Three</li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Page Contents -->
            <div class="col-lg-9 col-md-9 col-sm-12" id="main">
                <h3 class="feature-title">Introduction</h3>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
            </div>
        </div>
    </div>

    <!--- Script Source Files -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    <script src="../main.js"></script>
    <script src="template.js"></script>
    <script src="https://use.fontawesome.com/releases/v5.5.0/js/all.js"></script>
</body>

我希望导航栏和边栏在我的所有页面中保持相同。只是页面内容 (id="main") 在 body 中会发生变化。另外,我希望页面标题(在他 header 中)也能改变。有什么方法可以使该变量? 我更喜欢这样做的另一个原因是 table 的内容会随着我添加更多页面而改变,所以我不想遍历每个文件来更改 table 每次创建新页面时的内容。

感谢您的帮助。谢谢

编辑: 这是 CSS 对应 template.css

#main {
  transition: margin-left .5s;
  padding: 20px;
}

#sideBar {
  background: black;
  padding: 20px;
}

.list-group-item {
  background: black;
}

.list-group-item:hover {
  color: green;
}

仅供参考: 根据我的建议,您应该使用一些好的 scripting/programming 语言,例如 Ruby On Rails、Django 或 PHP 实现让一个模板动态呈现所有其他页面内容的功能。所以,你只需要改变你的主模板,就会反映在所有的页面上。这是最佳做法。


好吧,我仍在为您提供解决方案,因为您正处于学习阶段,您可以使用 JQuery 来实现此目的 :) 仅用于学习目的的好主意。

[ Not For Production Purpose - Just a solution for your problem ]

请在 github 存储库中找到您的问题的解决方案。我合并了您的代码并创建了一个示例项目供您使用:

它有一个名为 template.html 的模板和用于 (id="main") index.html、about.html 和 contact.html 的其他不同内容特定页面呈现它的按照 template.html 模板拥有自己的内容。

请查看此 github 存储库: https://github.com/ashishprajapati/template-for-basic-html

   git clone git@github.com:ashishprajapati/template-for-basic-html.git

要启动 html 服务器,请按照以下步骤操作

   npm install http-server -g

请在克隆项目所在的同一目录中使用此命令

   http-server