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

How to structure a Node Js blog with marked md parser

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

我找到了标记: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);
});

这行不通,而且绝对不是最佳解决方案。 有什么建议么?

像这样的东西(完全未经测试)可能会有所帮助:

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 */);
});