3

我一直在使用 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)我的后端应用程序requiresdocpad(生成out/目录并添加 docpad 中间件)然后启动服务器(如下所示:https ://github.com/bevry/docpad/issues/342 )。这将简化测试,但需要将整个项目目录结构(src/out/和 all )复制到服务器以进行部署。

我不是在询问如何做到这一点的细节,而是想知道这方面的 docpad 哲学是什么。我错过了另一个选择吗?

谢谢你。

4

1 回答 1

2

问题变成了我在哪里放置生成 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

如果您想定义自己的 DocPad 应该使用的快速服务器,您也可以通过docpad传递serverHttp和传递。更多信息在这里。serverExpressdocpadInstanceConfiguration

于 2013-05-11T03:13:46.667 回答