Интеграция приложения express.js и docpad

Я использовал docpad для предварительного создания внешнего приложения html/js (используя docpad generate --env static). После нескольких зависаний и исправления ошибок от balupton теперь все работает отлично и экономит мне много времени. Я просто копирую эти файлы на существующий сервер Apache для развертывания.

Теперь я также создал серверное приложение node.js/express.js, которое использует простой API для передачи данных клиенту. Этот код был создан и запущен независимо от файлов docpad/static, сгенерированных, как я говорил выше.

Теперь я хотел бы объединить эти два. Как это обычно делается в мире docpad? Я вижу несколько вариантов:

1) Внутренний и внешний код хранятся отдельно. Docpad используется для создания внешних статических файлов, а для обслуживания статических файлов и данных используется отдельное внутреннее приложение. На сервер для развертывания копируются только статические файлы и экспресс-приложение.

2) Внутренние исходные файлы создаются вместе с внешними файлами и копируются на сервер для развертывания. Я предполагаю, что это почти то же самое, что и № 1, за исключением того, что каталог src/files должен включать файлы приложения express.js и позволит мне запускать препроцессоры на внутреннем источнике.

3) Мое внутреннее приложение requires docpad (которое создает каталог out/ и добавляет промежуточное ПО docpad) затем запускает сервер (что-то вроде показанного здесь: https://github.com/bevry/docpad/issues/342).). Это упростило бы тестирование, но всю структуру каталогов проекта (src/, out/ и все остальные) нужно было бы скопировать на сервер для развертывания.

Я не спрашиваю подробностей о том, как это сделать, но задаюсь вопросом, что считается философией docpad по этому поводу. Есть ли еще один вариант, который я пропустил?

Спасибо.


person hypercubed    schedule 02.05.2013    source источник
comment
stackoverflow.com/questions/16389994/ вообще помочь?   -  person balupton    schedule 06.05.2013
comment
Привет балаптон. # 3 в связанном вопросе закрыть. Я могу добавить свои собственные маршруты в docpad.coffee, но я думаю, что это означает, что мне нужно развернуть всю древовидную структуру docpad (такую ​​же, как в моем № 3 выше). Я думаю, что в конечном итоге я хотел бы развернуть только сгенерированный статический контент и один или два файла node.js, чтобы начать обслуживать статические файлы и динамический контент с помощью запроса ajax.   -  person hypercubed    schedule 07.05.2013
comment
Возникает вопрос, куда мне поместить сервер, генерирующий javascript (назовем его app.js)? В корне папки проекта рядом с docpad.coffee или в каталоге src/? Тогда как мне заставить docpad использовать это вместо встроенного сервера во время тестирования. Спасибо за вашу помощь.   -  person hypercubed    schedule 07.05.2013


Ответы (1)


Возникает вопрос, куда мне поместить сервер, генерирующий javascript (назовем его app.js)? В корне папки проекта рядом с docpad.coffee или в каталоге src/? Тогда как мне заставить docpad использовать это вместо встроенного сервера во время тестирования. Спасибо за вашу помощь

Для этого вы должны создать app.js, который содержит что-то вроде того, к чему относится документация по API:

var docpadInstanceConfiguration = {
    env: 'static'
};
require('docpad').createInstance(docpadInstanceConfiguration, function(err,docpadInstance){
    if (err)  return console.log(err.stack);
    var generateOpts = {};
    docpadInstance.action('generate', generateOpts, function(err,result){
        if (err)  return console.log(err.stack);
        // ...
    });
});

Затем вы обновите свою Procfile (для heroku) и основную запись package.json (для всего остального), чтобы они указывали на app.js вместо ./node_modules/.bin/docpad-server по умолчанию.

Вы также можете передать serverHttp и serverExpress в docpad через docpadInstanceConfiguration, если хотите определить свой собственный экспресс-сервер, который должен использовать DocPad. Дополнительная информация здесь.

person balupton    schedule 11.05.2013