Node.js:如何在ECT模板中打印URL的一部分
下面是app.js. ECT文件是基于path加载的。
var http = require('http'); var ECT = require('ect'); var renderer = ECT({ root : __dirname + '/views' }); var data = { title : 'Hello, world!', size : 'XXL' }; var product = renderer.render('product.ect', data); var about = renderer.render('about.ect', data); var anypath = renderer.render('anypath.ect', data); var server = http.createServer(function(req, res) { var params; if(params = req.url.match(/^\/product\/(.+)$/)) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end(product); } else if(params = req.url.match(/^\/about\/(.+)$/)) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end(about); } else { res.writeHead(200, {'Content-Type': 'text/html'}); res.end(anypath); } }).listen(80);
如果没有使用ECT文件,当浏览product/255
,我可以打印You browse 255
通过编写You browse 255
:
if(params = req.url.match(/^\/product\/(.+)$/)) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end('You browse ' + params[1]); }
但是如何将params[1]
作为data
一部分呢?
换句话说,如何在ECT模板中打印部分URL
在您知道任何请求信息之前,您正在呈现每个页面的HTML。 您作为parameter passing给createServer
方法的callback函数是每次收到请求时都会调用的callback函数,因此您只能在第二个代码中获取该函数中的参数。
所以你应该能够做到以下几点:
var http = require('http'); var url = require('url'); var ECT = require('ect'); var renderer = ECT({ root : __dirname + '/views' }); var server = http.createServer(function(req, res) { // First element of path will be '', because the path begins with a / var path = url.parse(req.url).path.split('/'); var html; var data = { title : 'Hello, world!', size : 'XXL' }; if('product' === path[1] && path[2]) { data.title += ' You browse a product with the parameter ' + path[2]; html = renderer.render('product.ect', data); } else if('about' === path[1] && path[2]) { data.title += ' You browse at about page with the parameter ' + path[2]; html = renderer.render('about.ect', data); } else { data.title += ' You browse anything else :)'; html = renderer.render('anypath.ect', data); } res.writeHead(200, {'Content-Type': 'text/html'}); res.end(html); }).listen(80);
使用node.js URLparsing器,如: http : //nodejs.org/api/url.html
var url = require('url'); var http = require('http'); http.createServer(function(req, res){ console.dir(url.parse(req.url)); });
- 我如何testing一个基本的JavaScript文件与摩卡?
- 需要外部js文件进行摩卡testing
- 如何避免在条件expression式中的coffeescript隐式“返回”?
- 尽pipe存在服务,但不注入依赖项
- 将SVGpath转换为线段
- 在Node.js上编译CoffeeScript文件,从connect-assets开始
- RailwayJS /铁路快车:一个真正的Node.js替代Ruby On Rails?
- 尝试为Google身份validation器插入二维码图片时出现400错误请求
- Javascript代理:节点代理,和谐,混合对象与魔法getter和setter …在Coffeescript?