三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 485|回复: 0
打印 上一主题 下一主题

为 Express 开发模板引擎

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-8-18 09:06:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过 app.engine(ext, callback) 方法即可创建一个你自己的模板引擎。其中,ext 指的是文件扩展名、callback 是模板引擎的主函数,接受文件路径、参数对象和回调函数作为其参数。
下面的代码演示的是一个非常简单的能够渲染 “.ntl” 文件的模板引擎。
  1. var fs = require('fs'); // 此模板引擎依赖 fs 模块
  2. app.engine('ntl', function (filePath, options, callback) { // 定义模板引擎
  3.   fs.readFile(filePath, function (err, content) {
  4.     if (err) return callback(new Error(err));
  5.     // 这是一个功能极其简单的模板引擎
  6.     var rendered = content.toString().replace('#title#', '<title>'+ options.title +'</title>')
  7.     .replace('#message#', '<h1>'+ options.message +'</h1>');
  8.     return callback(null, rendered);
  9.   })
  10. });
  11. app.set('views', './views'); // 指定视图所在的位置
  12. app.set('view engine', 'ntl'); // 注册模板引擎
复制代码
现在 “.ntl” 文件就可以被正确地渲染了。接下来在 views 目录下创建一个名为 “index.ntl” 的模板文件,文件内容如下:
  1. #title#
  2. #message#
复制代码
然后,按下面的示例创建一下路由:
  1. app.get('/', function (req, res) {
  2.   res.render('index', { title: 'Hey', message: 'Hello there!'});
  3. })
复制代码
访问网站首页就能看到由 “index.ntl” 文件渲染出来的 HTML 页面了。



回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-11-2 00:41 , Processed in 0.024548 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表