- Koa.js 教程
- Koa.js - 主页
- Koa.js - 概述
- Koa.js - 环境
- Koa.js - 你好世界
- Koa.js - 生成器
- Koa.js - 路由
- Koa.js - URL 构建
- Koa.js - HTTP 方法
- Koa.js - 请求对象
- Koa.js - 响应对象
- Koa.js - 重定向
- Koa.js - 错误处理
- Koa.js - 级联
- Koa.js - 模板
- Koa.js - 表单数据
- Koa.js - 文件上传
- Koa.js - 静态文件
- Koa.js - Cookie
- Koa.js - 会话
- Koa.js - 身份验证
- Koa.js - 压缩
- Koa.js - 缓存
- Koa.js - 数据库
- Koa.js - RESTful API
- Koa.js - 日志记录
- Koa.js - 脚手架
- Koa.js - 资源
- Koa.js 有用资源
- Koa.js - 快速指南
- Koa.js - 有用的资源
- Koa.js - 讨论
Koa.js - 模板
Pug 是一个模板引擎。模板引擎用于消除服务器代码与 HTML 的混乱,将字符串与现有的 HTML 模板连接起来。Pug 是一个非常强大的模板引擎,它具有多种功能,例如过滤器、包含、继承、插值等。这方面有很多基础知识需要涵盖。
要将 Pug 与 Koa 一起使用,我们需要使用以下命令安装它。
$ npm install --save pug koa-pug
安装 pug 后,将其设置为应用程序的模板引擎。将以下代码添加到您的 app.js 文件中。
var koa = require('koa'); var router = require('koa-router'); var app = koa(); var Pug = require('koa-pug'); var pug = new Pug({ viewPath: './views', basedir: './views', app: app //Equivalent to app.use(pug) }); var _ = router(); //Instantiate the router app.use(_.routes()); //Use the routes defined using the router app.listen(3000);
现在,创建一个名为views的新目录。在该目录中,创建一个名为first_view.pug 的文件,并在其中输入以下数据。
doctype html html head title = "Hello Pug" body p.greetings#people Hello Views!
要运行此页面,请将以下路由添加到您的应用程序。
_.get('/hello', getMessage); // Define routes function *getMessage(){ this.render('first_view'); };
您将收到的输出为 -
Pug 所做的是将这个看起来非常简单的标记转换为 html。我们不需要跟踪关闭标签,不需要使用 class 和 id 关键字,而是使用 '.' 和“#”来定义它们。上面的代码首先被转换为
<!DOCTYPE html> <html> <head> <title>Hello Pug</title> </head> <body> <p class = "greetings" id = "people">Hello Views!</p> </body> </html>
Pug 的能力远不止简化 HTML 标记。让我们来探讨一下 Pug 的一些功能。
简单标签
标签根据其缩进进行嵌套。就像上面的示例一样,<title>在<head>标记内缩进,因此它位于其中。然而,<body>标签位于相同的缩进位置,因此它是<head>标签的同级标签。
我们不需要关闭标签。一旦 Pug 在相同或外部缩进级别遇到下一个标签,它就会为我们关闭该标签。
有三种方法可以将文本放入标签内 -
- 空间分隔 -
h1 Welcome to Pug
- 管道文本 -
div | To insert multiline text, | You can use the pipe operator.
- 文本块 -
div. But that gets tedious if you have a lot of text. You can use "." at the end of tag to denote block of text. To put tags inside this block, simply enter tag in a new line and indent it accordingly.
评论
Pug 使用与 JavaScript(//) 相同的语法来创建注释。这些注释会转换为 html 注释(<!--comment-->)。例如,
//This is a Pug comment
该评论被转换为 -
<!--This is a Pug comment-->
属性
为了定义属性,我们在括号中使用逗号分隔的属性列表。类和 ID 属性具有特殊的表示形式。以下代码行涵盖了给定 html 标签的属性、类和 id 的定义。
div.container.column.main#division(width = "100",height = "100")
这行代码被转换为 -
<div class = "container column main" id = "division" width = "100" height = "100"></div>
将值传递给模板
当我们渲染 Pug 模板时,我们实际上可以从路由处理程序向其传递一个值,然后我们可以在模板中使用该值。使用以下代码创建一个新的路由处理程序。
var koa = require('koa'); var router = require('koa-router'); var app = koa(); var Pug = require('koa-pug'); var pug = new Pug({ viewPath: './views', basedir: './views', app: app // equals to pug.use(app) and app.use(pug.middleware) }); var _ = router(); //Instantiate the router _.get('//dynamic_view', dynamicMessage); // Define routes function *dynamicMessage(){ this.render('dynamic', { name: "TutorialsPoint", url:"https://www.tutorialspoint.com" }); }; app.use(_.routes()); //Use the routes defined using the router app.listen(3000);
然后,使用以下代码在views目录中创建一个名为dynamic.pug的新视图文件。
html head title = name body h1 = name a(href = url) URL
在浏览器中打开localhost:3000/dynamic,以下应该是输出。-
我们还可以在文本中使用这些传递的变量。要在标签文本之间插入传递的变量,我们使用 #{variableName} 语法。例如,在上面的例子中,如果我们想从TutorialsPoint插入Greetings,那么我们必须使用以下代码。
html head title = name body h1 Greetings from #{name} a(href = url) URL
这种使用值的方法称为插值法。
条件句
我们也可以使用条件语句和循环结构。考虑这个实际的例子,如果用户登录,我们希望显示“嗨,用户”,如果没有,那么我们希望向他显示“登录/注册”链接。为了实现这一点,我们可以定义一个简单的模板,例如 -
html head title Simple template body if(user) h1 Hi, #{user.name} else a(href = "/sign_up") Sign Up
当我们使用我们的路线渲染它时,如果我们传递一个像这样的对象 -
this.render('/dynamic',{user: {name: "Ayush", age: "20"} });
它会给出一条消息,显示“嗨,Ayush”。但是,如果我们不传递任何对象或传递没有用户密钥的对象,那么我们将获得一个注册链接。
包含和组件
Pug 提供了一种非常直观的方式来创建网页组件。例如,如果您看到一个新闻网站,带有徽标和类别的标题始终是固定的。我们可以使用包含,而不是将其复制到每个视图。以下示例展示了我们如何使用包含 -
使用以下代码创建三个视图 -
标头.pug
div.header. I'm the header for this website.
内容.pug
html head title Simple template body include ./header.pug h3 I'm the main content include ./footer.pug
页脚.pug
div.footer. I'm the footer for this website.
为此创建一条路线,如下所示。
var koa = require('koa'); var router = require('koa-router'); var app = koa(); var Pug = require('koa-pug'); var pug = new Pug({ viewPath: './views', basedir: './views', app: app //Equivalent to app.use(pug) }); var _ = router(); //Instantiate the router _.get('/components', getComponents); function *getComponents(){ this.render('content.pug'); } app.use(_.routes()); //Use the routes defined using the router app.listen(3000);
转到localhost:3000/components,您应该得到以下输出。
include还可用于包含纯文本、CSS 和 JavaScript。
帕格还有许多其他功能。但是,这些超出了本教程的范围。您可以在Pug进一步探索 Pug 。