2013-05-02 4 views
3

저는 docpad를 사용하여 프론트 엔드 html/js 응용 프로그램을 미리 생성했습니다 (docpad generate --env static 사용). 몇 번의 전화 끊기와 balupton의 버그 수정을 통해 이제는 훌륭하게 작동하고 많은 시간을 절약 할 수 있습니다. 이 파일을 배포 용 기존 Apache 서버에 복사하기 만하면됩니다.express.js 응용 프로그램과 docpad 통합

이제 간단한 api를 사용하여 클라이언트에 데이터를 공급하는 node.js/express.js 백엔드 애플리케이션도 만들었습니다. 이 코드는 위에서 설명한대로 생성 된 docpad/static 파일과는 독립적으로 생성되어 실행됩니다.

이제이 두 가지를 통합하고 싶습니다. 이 작업은 일반적으로 docpad에서 어떻게 이루어 집니까? 몇 가지 옵션이 있습니다.

1) 백 엔드 코드와 프런트 엔드 코드는 별도로 유지됩니다. Docpad는 프런트 엔드 정적 파일을 생성하는 데 사용되며 별도의 백엔드 응용 프로그램이 정적 파일 및 데이터를 제공하는 데 사용됩니다. 정적 파일 및 익스프레스 앱만 배포를 위해 서버에 복사됩니다.

2) 백 엔드 원본 파일이 프런트 엔드 파일과 함께 생성되고 배포를 위해 서버로 복사됩니다. 나는 src/files 디렉토리가 express.js 응용 프로그램 파일을 포함해야하고 백엔드 소스에서 전처리 기 (pre-processors)를 실행할 수 있다는 점을 제외하고는 # 1과 거의 같다.) https://github.com/bevry/docpad/issues/342 :

3) 내 백엔드 응용 프로그램 out/ 디렉토리를 생성하고 미들웨어를 docpad 추가합니다 requires docpad()는 다음 여기에 표시된 것처럼 서버 (뭔가를 시작합니다. 이렇게하면 테스트가 간소화되지만 전체 프로젝트 디렉토리 구조 (src/, out/ 및 all)는 배포를 위해 서버에 복사해야합니다.

이 작업을 수행하는 방법에 대해 구체적으로 묻지는 않지만 이에 대한 의사 결정 철학이 무엇인지 궁금 할 것입니다. 내가 놓친 다른 옵션이 있습니까?

감사합니다.

+0

http://stackoverflow.com/questions/16389994/static-vs-dynamic-content-in-docpad-system-how-to-create-dynamic-content/16390466#16390466 전혀 도움이 되나요? – balupton

+0

안녕 balupton. 링크 된 질문 닫기 # 3. 내 사용자 지정 경로를 docpad.coffee에 추가 할 수는 있지만 전체 docpad 트리 구조 (위 # 3과 동일)를 배포해야한다는 것을 의미한다고 생각합니다. 궁극적으로 생성 된 정적 컨텐츠와 하나 또는 두 개의 node.js 파일 만 배포하여 아약스 쿼리를 통해 정적 파일 및 동적 컨텐츠를 제공하고자한다고 생각합니다. – hypercubed

+0

질문은 어디에서 서버에 javascript (app.js라고 부름)를 넣을 수 있습니까? 'docpad.coffee' 옆의 프로젝트 폴더 루트 나'src /'디렉토리에 있습니까? 그렇다면 테스트 중에 내장 된 서버 대신에 이것을 사용하려면 어떻게해야합니까? 당신의 도움을 주셔서 감사합니다. – hypercubed

답변

2

질문은 어디에 자바 스크립트 (app.js라고 부름)를 생성하는 서버를 배치합니까? docpad.coffee 또는 src/디렉토리 옆의 프로젝트 폴더 루트에 있습니까? 그렇다면 테스트 중에 내장 된 서버 대신에 이것을 사용하려면 어떻게해야합니까? 당신의 도움을 주셔서 감사합니다

그래서, 당신은 API docs이 관련된 것 같은 것을 포함 app.js 만들 것이라고 할 수 있습니다 : 당신은 다음 Procfile (Heroku가에 대한)를 업데이트 할

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

을하고 package.json 주를 (다른 모든 것들에 대한) 항목은 또한 serverHttp 및을 통해 전달할 수 있습니다 대신 detault ./node_modules/.bin/docpad-server

app.js를 가리 키도록 DocPad에서 사용할 고속 서버를 정의하려면 docpadInstanceConfiguration을 통해 docpad에 0을 입력하십시오. More info here.

관련 문제