我正在为一个项目评估feathers.js。我喜欢它的愿望。所以,我决定尝试建立一个基本的内容管理系统,就像学习一样。事情进展顺利。但是,我想在应用启动时将一些静态内容(文章)加载到内存中。我无法弄清楚如何做到这一点。
我的数据/文章目录中有我的文章。每篇文章都标记为[title] .md。我在一个控制台应用程序中测试了一块JavaScript,它将markdown转换为HTML。该代码使用markdown-js将HTML转换为JSON对象。它看起来像这样:
const fs = require('fs');
const markdownConverter = require('markdown');
let articles = [];
let files = fs.readdirSync('./data/articles');
for (let i=0; i<files.length; i++) {
let title = files[i].substr((files[i].lastIndexOf('/')+1), (files[i].length-3));
let markdown = fs.readFileSync(files[i], 'utf8');
let html = markdownConverter.toHTML(markdown);
articles[title] = html;
}
我在Feathers中添加了一条如下所示的路线:
app.use('/articles/:slug', function(req, res) {
console.log('loading article: ' + req.params.slug);
let content = '';
// TODO: How to get access to the articles array.
// I want to get the HTML using content = articles[req.params.slug];
res.render('article', { content: content });
});
我不知道在哪里将加载markdown的代码放入我可以在用户请求文章时访问的数组中。这属于哪里?我的猜测是在使用yeoman生成器创建Feathers项目时生成的app.js文件中。然而,我不确定实际上是什么样的。
答案 0 :(得分:3)
由于feat是Express应用程序,因此您应该能够使用快速中间件。我推荐这个允许你为你缩减创建HTML模板并静态地提供它们而不创建任何解析器或for循环。
https://github.com/natesilva/node-docserver
var docserver = require('docserver');
...
app.use(docserver({
dir: __dirname + '/docs', // serve Markdown files in the docs directory...
url: '/'} // ...and serve them at the root of the site
));
或者,这个中间件会在将其作为Jade模板中的HTML提供之前预先解析Markdown。