分类:Express模板引擎定制
使用Express的 app.engine(ext,callback)接口来定制自己的引擎。Ext为模板文件后缀,callback为引擎处理模板函数。该函数接受以下参数:文件路径(filePath),选项对象(options),回调函数(callback)。
建立引擎:
//下面是一个简单渲染.ntl模板文件的引擎。
//app.js
var express = require('express');
var app = express();
//即将定制的这个模板引擎需要操作文件,所以引入fs
var fs=require('fs');
//绑定模板后缀:ntl
//绑定引擎函数:
app.engine('ntl',function(filePath,options,callback){
fs.readFile(filePath,function(err,content){
if(err)return callback(err);
//this is an extremely simple template engine
var rendered=content.toString().replace('#title#','<title>'+
options.title+'</title>')
.replace('#message#','<h1>'+options.message+'</h1>')
return callback(null,rendered)
})
})
//绑定模板路径
app.set('views','./views');
//绑定引擎名称?
app.set('view engine','ntl');
书写模板:
下面是一个简单的模板文件。
//views/index.ntl
#title#
#message#
书写路由:
//app.js
//app.listen(8386, '127.0.0.1');//express默认的为3000
app.get('/',function(req,res){ res.render('index',{title:'Hey',message:'Hellothere!'}) })
module.exports = app;
查看效果:
//现在选择app.js文件启动web服务器,访问当前路径127.0.0.1:3000,可以看到view/index.ntl文件的渲染结果。
node run start
改写端口:
app.listen(8386, '127.0.0.1');
/*
查看了一下express的源码,看到它是重写了http的用法:
var http = require('http');
app.listen = function listen() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
*/
网友评论