2013-05-02 1 views
3

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

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

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

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

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

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

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

спасибо.

+0

Помогает ли http://stackoverflow.com/questions/16389994/static-vs-dynamic-content-in-docpad-system-how-to-create-dynamic-content/16390466#16390466? – balupton

+0

Привет, балуптон. # 3 в связанном вопросе закрыть. Я могу добавить свои пользовательские маршруты в docpad.coffee, но я думаю, что это означает, что мне нужно развернуть всю структуру древовидной структуры docpad (так же, как и мой № 3 выше). Я думаю, что в конечном итоге я бы хотел развернуть только созданный статический контент и один или два файла node.js, чтобы запустить статические файлы и динамический контент с помощью ajax-запроса. – hypercubed

+0

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

ответ

2

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

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

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 вместо detault ./node_modules/.bin/docpad-server

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