当前位置: 首页 > article >正文

将模板引擎用于 Express

目录

将模板引擎用于 Express

res.locals

app.set(name, value)

res.render(view [, locals] [, callback])


在 Express 可以呈现模板文件之前,必须设置以下应用程序设置:

  • views:模板文件所在目录。例如:app.set("views", path.join(__dirname, "views"));
  • view engine:要使用的模板引擎。例如:app.set("view engine", "jade");

将模板引擎用于 Express

然后安装对应的模板引擎 npm 包:

$ npm install jade 

与 Express 兼容的模板引擎(例如 jade)导出名为 __express(filePath, options, callback) 的函数,该函数由 res.render() 函数调用以呈现模板代码。 某些模板引擎并不遵循此约定。Consolidate.js 库通过映射所有流行的 Node.js 模板引擎来遵循此约定,因此可以在 Express 内无缝工作。

在设置视图引擎之后,不必指定该引擎或者在应用程序中装入模板引擎模块;Express 在内部装入此模块,如下所示(针对以上示例)。

app.set("view engine", "jade");

在 views 目录中创建名为 layout.jade 的 jade 模板文件,其中包含以下内容:

doctype html
html
  head
    title= title
  body
    block content

在 views 目录中创建名为 error.jade 的 jade 模板文件,其中包含以下内容: 

extends layout

block content
  h1= message
  h2= error.status
  pre #{error.stack}

 

随后创建路由以呈现 error.jade 文件。如果未设置 view engine 属性,必须指定 view 文件的扩展名。否则,可以将其忽略。

//错误拦截器
app.use(function (err, req, res, next) {
  // 设置通信信息开发环境渲染错误信息
  res.locals.message = err.message;
  res.locals.error = req.app.get("env") === "development" ? err : {};

  // 设置状态码
  res.status(err.status || 500);
  //渲染的错误页
  res.render("error");
});

向主页发出请求时,error.jade 文件将呈现为 HTML。

res.locals

使用此属性设置在使用 res.render 渲染的模板中可访问的变量。res.locals 上设置的变量在单个请求-响应周期内可用,并且不会在请求之间共享。

为了保留局部变量以用于请求之间的模板渲染,请改用 app.locals。

此属性对于向应用中渲染的模板公开请求级信息(例如请求路径名称、经过身份验证的用户、用户设置等)很有用。

app.use((req, res, next) => {
  // Make `user` and `authenticated` available in templates
  res.locals.user = req.user
  res.locals.authenticated = !req.user.anonymous
  next()
})

app.set(name, value)

将设置 name 分配给 value。你可以存储任何你想要的值,但某些名称可用于配置服务器的行为。这些特殊名称列在 应用设置表 中。

为布尔属性调用 app.set('foo', true) 与调用 app.enable('foo') 相同。同样,为布尔属性调用 app.set('foo', false) 与调用 app.disable('foo') 相同。

使用 app.get() 检索设置的值。

app.set('title', 'My Site')
app.get('title') // "My Site"

res.render(view [, locals] [, callback])

渲染 view 并将渲染的 HTML 字符串发送到客户端。可选参数:

  • locals,一个对象,其属性定义视图的局部变量。

  • callback,回调函数。如果提供,该方法将返回可能的错误和渲染的字符串,但不执行自动响应。当发生错误时,该方法在内部调用 next(err)

view 参数是一个字符串,它是要渲染的视图文件的文件路径。这可以是绝对路径,也可以是相对于 views 设置的路径。如果路径不包含文件扩展名,则 view engine 设置确定文件扩展名。如果路径确实包含文件扩展名,那么 Express 将加载指定模板引擎的模块(通过 require())并使用加载模块的 __express 函数渲染它。

有关详细信息,请参阅 使用 Express 模板引擎。

注意:view 参数执行文件系统操作,例如从磁盘读取文件和评估 Node.js 模块,因此出于安全原因不应包含来自终端用户的输入。

局部变量 cache 启用视图缓存。设置为 true,用于在开发过程中缓存视图;默认情况下,在生产环境中启用视图缓存。

// send the rendered view to the client
res.render('index')

// if a callback is specified, the rendered HTML string has to be sent explicitly
res.render('index', (err, html) => {
  res.send(html)
})

// pass a local variable to the view
res.render('user', { name: 'Tobi' }, (err, html) => {
  // ...
})

 


http://www.kler.cn/news/330822.html

相关文章:

  • 65 注意力分数_by《李沐:动手学深度学习v2》pytorch版
  • 前端开发技术框架选型
  • 每日一题|1928. 规定时间内到达终点的最小花费|动态规划、最小路径
  • 强弱依赖(含示例)
  • ANTLR4 与 flex/bision、lex/yacc 的比较
  • Electron 进程通信
  • Spring MVC系统学习(二)——Spring MVC的核心类和注解
  • 五子棋双人对战项目(5)——对战模块
  • Ubuntu编译fftw3
  • 端口隔离配置的实验
  • ElasticSearch学习笔记(三)Ubuntu 2204 server elasticsearch集群配置
  • JavaCV 实现视频链接截取封面工具
  • 掌控物体运动艺术:图扑 Easing 函数实践应用
  • 【Linux 从基础到进阶】Cassandra数据库安装与调优
  • SpringBoot与微服务:网上租赁系统的现代化构建
  • CSS——文字闪烁效果
  • 机器学习框架
  • 虚拟机三种网络模式详解
  • Android常用C++特性之std::sort
  • 影刀---如何进行自动化操作