我一直在使用docpad预先生成一个前端html/js应用程序(使用docpad generate --env static)。在经历了几次麻烦和巴鲁普顿的错误修复之后,它现在工作得很好,节省了我很多时间。我只需将这些文件复制到现有的apache服务器进行部署。
我现在还创建了一个node.js/press.js后端应用程序,该应用程序使用一个简单的api向客户端提供数据。这段代码是独立于上面讨论过的生成的docpad/静态文件创建和运行的。
我现在想把这两者结合起来。在docpad世界中,这通常是如何做到的?我认为有几种选择:
1)将后端代码与前端代码分开。Docpad用于生成前端静态文件,然后使用单独的后端应用程序来服务静态文件和数据。只有静态文件和快递应用程序被复制到服务器进行部署。
2)与前端文件一起生成后端源文件,并复制到服务器进行部署。除了src/files目录需要包含express.js应用程序文件外,我猜这与#1几乎是一样的,并且允许我在后端源代码上运行预处理器。
3)我的后端应用程序requires docpad (它生成out/目录并添加docpad中间件)然后启动服务器(如下所示:https://github.com/bevry/docpad/issues/342)。这将简化测试,但是需要将整个项目目录结构(src/、out/和all)复制到服务器进行部署。
我不是在问如何做这件事的具体细节,而是想知道在这个问题上什么被认为是博士学位的哲学。我还有别的选择吗?
谢谢。
发布于 2013-05-11 03:13:46
问题是,我把生成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而不是detault ./node_modules/.bin/docpad-server
您还可以通过serverHttp和serverExpress通过docpadInstanceConfiguration传递到docpad,如果您想要定义DocPad应该使用的自己的快递服务器。这里有更多信息。
https://stackoverflow.com/questions/16332833
复制相似问题