voxblog/apps/api/examples/view-constructor/index.js

49 lines
1.1 KiB
JavaScript

'use strict'
/**
* Module dependencies.
*/
var express = require('../../');
var GithubView = require('./github-view');
var md = require('marked').parse;
var app = module.exports = express();
// register .md as an engine in express view system
app.engine('md', function(str, options, fn){
try {
var html = md(str);
html = html.replace(/\{([^}]+)\}/g, function(_, name){
return options[name] || '';
});
fn(null, html);
} catch(err) {
fn(err);
}
});
// pointing to a particular github repo to load files from it
app.set('views', 'expressjs/express');
// register a new view constructor
app.set('view', GithubView);
app.get('/', function(req, res){
// rendering a view relative to the repo.
// app.locals, res.locals, and locals passed
// work like they normally would
res.render('examples/markdown/views/index.md', { title: 'Example' });
});
app.get('/Readme.md', function(req, res){
// rendering a view from https://github.com/expressjs/express/blob/master/Readme.md
res.render('Readme.md');
});
/* istanbul ignore next */
if (!module.parent) {
app.listen(3000);
console.log('Express started on port 3000');
}