NodeJS and Swig
http://kmi.tl/or1qe
What is Swig?
- It's just another template.
- Why template?
- Isn't it Easier ?
Basic Usage
var view = require('swig');
var htmlPath = 'resources/html/';
var v = view.renderFile('/path/to/template.html', {
pagename: 'awesome people',
authors: ['Paul', 'Jim', 'Jane']
});
res.writeHead(200, {'Content-type': 'text/html'});
res.end(v);
var http = require('http');
var router = require('httpdispatcher');
var url = require('url');
var view = require('swig');
var querystring = require('querystring');
const PORT = 8080;
var server = http.createServer(handleRequest);
var htmlPath = 'resources/html/';
server.listen(PORT, function() {
console.log("Server listening on: http://localhost:%s", PORT);
});
router.setStaticDirname(__dirname);
router.setStatic('resources');
router.onGet('/', function(req, res) {
var v = view.renderFile(htmlPath+'form.html');
res.writeHead(200, {'Content-type': 'text/html'});
res.end(v);
});
router.onPost('/', function(req, res) {
var json = querystring.parse(req.body);
var v = view.renderFile(htmlPath+'swig.html', {
num: parseInt(json.num),
range: makeRange(1, 12)
});
console.dir(json);
console.log(typeof(json.num));
res.writeHead(200, {'Content-type': 'text/html'});
res.end(v);
});
function handleRequest(request, response)
{
try {
console.log(request.url);
router.dispatch(request, response);
} catch (err) {
console.log(err);
}
}
function makeRange(start, len)
{
return (new Array(len)).join().split(',').map(function (n, idx) { return idx + start; });
}
The HTML
<!DOCTYPE>
<html>
<head>
<title> Sample Swig </title>
</head>
<body>
<h1>{{ pagename|title }}</h1>
<ul>
{% for author in authors %}
<li{% if loop.first %} class="first"{% endif %}>
{{ author }}
</li>
{% endfor %}
</ul>
</body>
</html>
Logic Tag
{% if 1 == 1 %}bar{% endif %}
SwigNodeJS
By whcwhc78
SwigNodeJS
- 664