让Express支持Markdown
21 Apr 2012什么是Markdown,就是一种标记语言,能够清楚快捷的输出所要的文本内容(格式上有增强效果),支持html。Github上的readme就是用markdown来实现。今天学习一下为Node.js上Express添加Markdown功能。Express 并不直接支持markdown语法,需要为项目添加markdown-js模块的依赖。
1.修改pacage.json
原版:
{
"name": "application-name"
, "version": "0.0.1"
, "private": true
, "dependencies": {
"express": "2.4.6"
, "jade": ">= 0.0.1"
}
}
修改为:
{
"name": "LazyBlog"
, "version": "0.0.1"
, "private": true
, "dependencies": {
"express": "2.4.6"
, "jade": ">= 0.0.1"
, "markdown-js": ">= 0.0.1"
}
}
然后CMD进入LazyBlog目录,安装依赖:npm install
会在LazyBlog生成node_modules 目录,里边有

现在可以写代码了,打开app.js,导入markdown模块
var express = require('express')
, routes = require('./routes')
, markdown=require('markdown-js');
var app = module.exports = express.createServer();
然后给Express注册Markdown渲染器
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
app.register('.md',{
compile:function(str,options){
var html=markdown.makeHtml(str);
return function(locals){
return html.replace(/\{([^}]+)\}/g,function(_,name){
return locals[name];
});
}
}
});
// Routes
接着添加对markdown的路由(如果这些看起来对你很头大,那么先学学Express.js吧,上一篇文章有写过。如果不知道路由什么意思?那就先去学Node.js吧…)
app.get('/', routes.index);
//app.get('/md5/:string',routes.md5);
app.get('/markdown',function(req,res){
res.render('index.md',{layout:false});
});
路由写好了,它指向index.md,用它来处理markdown语法文本,所以我们要去views目录建立一个index.md文件。
打开index.md ,现在可以写一写markdown标记的文本了,这里我把windows下markdownpad的欢迎界面内容搬过来了,你可以自己写点别的,比如
This is a demo page =================== [Lazynight](http://lazynight.me \"Click\")
MarkdownPad欢迎界面
# Welcome to MarkdownPad # **MarkdownPad** is a full-featured Markdown editor for Windows. ## Full control over your documents ## Want to make something **bold**? Press `Ctrl + B`. How about *italic*? Press `Ctrl + I`. > Write a quote with `Ctrl + Q` No matter what you're working on, you'll have quick access to Markdown syntax with handy keyboard shortcuts and toolbar buttons. ## See your changes instantly with LivePreview ## Don't guess if your [hyperlink syntax](http://markdownpad.com) is correct; LivePreview will show you exactly what your document looks like every time you press a key. ## Make it your own ## Fonts, sizes, color schemes, and even the HTML stylesheets are 100% customizable so you can turn MarkdownPad into your ideal editor.
转载请注明:于哲的博客 » 让Express支持Markdown