如何使用标记的md解析器构建Node Js博客

时间:2016-02-28 20:40:33

标签: javascript node.js markdown

目前正在使用NodeJS / Express4创建一个简单的博客引擎。 我想使用降价语言发布博客文章。

我找到了标记:https://github.com/chjj/marked,它非常适合我的需求,并创建了一个真正的基本解决方案,可以从md文件中获取数据并将其显示在客户端中。

我遇到的问题是将我的解决方案实际安装到NodeJS应用程序的正确MVC结构中。这是我生成的,这适用于一个md文件 - 在index.js:

app.get('/test', function(req, res) {
  var path = __dirname + '/node_modules/marked/doc/todo.md';
  var file = fs.readFileSync(path, 'utf8');
  res.send(marked(file.toString()));
});

我还找到了一个解决方案来递归扫描特定目录以使用walk获取所有博客帖子(在md中):

var walker  = walk.walk('./node_modules/marked/doc', { followLinks: false });
walker.on('file', function(root, stat, next) {
  console.log(root + '/' + stat.name);
  next();
});

如何在正确的庄园中将多个md帖子连接成一个html响应 - 其他页面请求如下:

var users = require('./routes/users');
app.use('/users', users);
在index.js中

,然后

router.get('/', function(req, res, next) {
  res.render('users', { title: 'Express' });
});

在路线users.js

我尝试过类似的事情:

var string = '';
app.get('/test', function(req, res) {
  walker.on('file', function(root, stat, next) {
    var path = __dirname + root + '/' + stat.name;
    var file = fs.readFileSync(path, 'utf8');
    string += (marked(file.toString()));
    next();
  });
  res.send(string);
});

这不起作用,它绝对不是最好的解决方案。 有什么建议?

1 个答案:

答案 0 :(得分:1)

这样的事情(完全未经测试)可能有所帮助:

app.get('/test', function(req, res) {
  var string = '';

  walker.on('file', function(root, stat, next) {
    var path = __dirname + root + '/' + stat.name;
    var file = fs.readFileSync(path, 'utf8');
    string += (marked(file.toString()));
    next();
  });

  walker.on('end', function() {
    res.send(string);
  });

  walker.walk(/* whatever */);
});