目前正在使用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);
});
这不起作用,它绝对不是最好的解决方案。 有什么建议?
答案 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 */);
});