2016-03-31 2 views
1

Я оцениваю feathers.js для проекта. Мне нравятся его устремления. Итак, я решил попробовать создать базовую систему управления контентом, как учебное задание. Все прошло довольно гладко. Тем не менее, я хочу загрузить статический контент (статьи) в память при запуске приложения. Я не могу понять, как это сделать.Feathers.js - Загрузка В статических материалах

У меня есть мои статьи в каталоге данных/статей. Каждая статья - это уценка с именем [title] .md. У меня есть блок JavaScript, который я тестировал в консольном приложении, которое преобразует уценку в 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; 
} 

Я добавил маршрут Перья, который работает так:

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

Я не уверен, куда поместить код, который загружает уценки в массив, Я могу получить доступ, когда пользователь запрашивает статью. Где это? Моя догадка заключается в файле app.js, который генерируется при создании проекта Feathers с использованием генератора yoman. Тем не менее, я не уверен, что это на самом деле выглядит.

ответ

1

Поскольку перья - это приложение 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 
)); 

Или это промежуточное программное что будет preParse в Markdown перед подачей его в качестве HTML в шаблоне Джейд.

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