2013-05-02 37 views
3

我一直在使用docpad預生成前端html/js應用程序(使用docpad generate --env static)。在經過幾次hangup和來自balupton的錯誤修復後,它現在效果很好,併爲我節省了很多時間。我只是將這些文件複製到現有的apache服務器上進行部署。集成express.js應用程序和docpad

我現在還創建了一個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理念。我錯過了另一個選擇嗎?

謝謝。

+0

Does http://stackoverflow.com/questions/16389994/static-vs-dynamic-content-in-docpad-system-how-to-create-dynamic-content/16390466#16390466有幫助嗎? – balupton 2013-05-06 00:19:02

+0

你好巴魯普頓。鏈接問題中的#3關閉。我可以將自定義路由添加到docpad.coffee,但我認爲這意味着我需要部署整個docpad樹結構(與上面的#3相同)。我想最終我只想部署生成的靜態內容和一個或兩個node.js文件,以通過ajax查詢啓動靜態文件和動態內容。 – hypercubed 2013-05-07 01:55:34

+0

問題變成了我在哪裏把服務器生成JavaScript(稱之爲'app.js')?在「docpad.coffee」旁邊的項目文件夾根目錄下或在「src /'目錄下?那麼在測試過程中,我怎麼才能使用docpad來代替內置的服務器。謝謝你的幫助。 – hypercubed 2013-05-07 01:58:23

回答

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

您也可以越過serverHttpserverExpress通過docpadInstanceConfiguration如果你想定義自己的DocPad應該使用的快遞服務器docpad。 More info here.