LocalLibrary 基础模板
现在我们已经了解了如何使用 Pug 扩展模板,让我们开始为项目创建一个基础模板。它将包含一个侧边栏,其中包含我们希望在整个教程文章中创建的页面的链接(例如,显示和创建书籍、类型、作者等),以及一个主要内容区域,我们将在每个独立页面中覆盖它。
打开 /views/layout.pug 并将内容替换为以下代码。
pug
doctype html
html(lang='en')
head
title= title
meta(charset='utf-8')
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel="stylesheet", href="https://cdn.jsdelivr.net.cn/npm/[email protected]/dist/css/bootstrap.min.css", integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N", crossorigin="anonymous")
script(src="https://code.jquery.com/jquery-3.5.1.slim.min.js", integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj", crossorigin="anonymous")
script(src="https://cdn.jsdelivr.net.cn/npm/[email protected]/dist/js/bootstrap.min.js", integrity="sha384-+sLIOodYLS7CIrQpBjl+C7nPvqq+FbNUBDunl/OZv93DB7Ln/533i8e/mZXLi/P+", crossorigin="anonymous")
link(rel='stylesheet', href='/stylesheets/style.css')
body
div(class='container-fluid')
div(class='row')
div(class='col-sm-2')
block sidebar
ul(class='sidebar-nav')
li
a(href='/catalog') Home
li
a(href='/catalog/books') All books
li
a(href='/catalog/authors') All authors
li
a(href='/catalog/genres') All genres
li
a(href='/catalog/bookinstances') All book-instances
li
hr
li
a(href='/catalog/author/create') Create new author
li
a(href='/catalog/genre/create') Create new genre
li
a(href='/catalog/book/create') Create new book
li
a(href='/catalog/bookinstance/create') Create new book instance (copy)
div(class='col-sm-10')
block content
该模板使用(并包含)来自 Bootstrap 的 JavaScript 和 CSS 来改进 HTML 页面的布局和展示。使用 Bootstrap 或其他客户端网页框架是快速创建吸引人页面的方法,该页面可以在不同浏览器尺寸下良好缩放,它还允许我们处理页面展示而不必深入了解任何细节 - 我们只是想专注于这里的服务器端代码!
注意:这些脚本是跨域加载的,因此在教程的后面,当我们添加安全中间件时,我们需要显式地允许加载这些文件。有关更多信息,请参见 部署 > 使用 Helmet 防御已知漏洞。
如果您已阅读我们上面的 模板入门,则布局应该相当明显。请注意使用 block content
作为占位符,用于放置我们各个页面的内容。
基本模板还引用了一个本地 CSS 文件(style.css),该文件提供一些额外的样式。打开 /public/stylesheets/style.css 并将其内容替换为以下 CSS 代码
css
.sidebar-nav {
margin-top: 20px;
padding: 0;
list-style: none;
}
现在我们有了用于创建带侧边栏页面的基本模板。在接下来的部分中,我们将使用它来定义各个页面。
下一步
- 返回到 Express 教程第 5 部分:显示库数据。
- 继续第 5 部分的下一篇文章:主页。