2016-03-31 19 views
1

私はfeathers.jsプロジェクトを評価しています。私はその願望が好きです。そこで、私は基本的なコンテンツ管理システムを学習の努力のように構築しようと決心しました。ものはかなりスムーズに行った。しかし、私はいくつかの静的なコンテンツ(記事)をメモリに読み込み、アプリケーションの起動時にしたい。私はそれを行う方法を理解することはできません。Feathers.js - 静的コンテンツをロード中

私の記事はdata/articlesディレクトリにあります。各記事は[title] .mdというマークダウンです。マークダウンをHTMLに変換するコンソールアプリケーションでテストしたJavaScriptのブロックがあります。このコードでは、markdown-jsを使用してHTMLをJSONオブジェクトに取得します。私は配列への値下げをロードするコードをどこに置くかわからないんだけど

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

:私はこのように動作します羽でルートを追加しました

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; 
} 

:それはこのようになりますユーザーが記事をリクエストしたときにアクセスできます。それはどこに属していますか?私の推測は、yeomanジェネレータを使用してFeathersプロジェクトを作成するときに生成されるapp.jsファイルにあります。しかし、私は実際にどのように見えるか分からない。

答えて

1

feathersはExpressアプリケーションなので、Expressミドルウェアを使用できるはずです。私はマークダウンのためのHTMLテンプレートを作成し、パーサーやループを作成せずに静的にそれらを提供できるようにすることをお勧めします。

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 
)); 

あるいは、ジェイドテンプレートにHTMLとしてそれを提供する前に値下げをpreParseます。このミドルウェア。

https://www.npmjs.com/package/markdown-serve

関連する問題