2016-03-31 9 views
1

Ich bewerte feathers.js für ein Projekt. Ich mag seine Bestrebungen. Also habe ich beschlossen, ein grundlegendes Content-Management-System als Lernprojekt zu entwickeln. Die Dinge sind ziemlich reibungslos verlaufen. Ich möchte jedoch einige statische Inhalte (Artikel) in den Speicher laden, wenn die App startet. Ich kann nicht herausfinden, wie das geht.Feathers.js - Laden Statischer Inhalt

Ich habe meine Artikel im Verzeichnis data/articles. Jeder Artikel ist Markdown namens [title] .md. Ich habe einen JavaScript-Block, den ich in einer Konsolenanwendung getestet habe, die den Markdown in HTML konvertiert. Dieser Code verwendet markdown-js, um den HTML-Code in ein JSON-Objekt zu übernehmen. Es sieht wie folgt aus:

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

ich eine Route in den Federn hinzugefügt haben, die wie folgt funktioniert:

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

Ich bin mir nicht sicher, wo Sie den Code setzen, die die Abschlags in ein Array lädt, Ich kann darauf zugreifen, wenn ein Benutzer einen Artikel anfordert. Wo gehört das hin? Meine Vermutung liegt in der Datei app.js, die beim Erstellen eines Feathers-Projekts mit dem Yeoman-Generator generiert wird. Aber ich bin mir nicht sicher, wie das eigentlich aussieht.

Antwort

1

Da Federn eine Express-App ist, sollten Sie Express-Middleware verwenden können. Ich empfehle diese, die es Ihnen ermöglicht, HTML-Vorlagen für Ihre Abschriften zu erstellen und sie statisch zu bedienen, ohne Parser oder For-Schleifen zu erstellen.

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

Oder diese Middleware, die die Markdown vor dem Servieren als HTML in einer Jade-Vorlage preparse wird.

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