我有一个应用程序,我正在使用快速开发,几乎是一个纯静态站点,除了发布到服务器的两个表单(联系表单和请求表单)。该网站有大约10个静态页面和两个服务器端路由来接受表单提交。
我开始使用jade,stylus和coffeescript开发应用程序的前端,使用grunt作为开发服务器和构建工具来输出所有这些静态的生产就绪版本(concat,min等等)资产。
现在进入两个服务器端路由。我很好奇人们对这种情况的想法,其中应用程序包含90%的静态HTML,只有一个或两个服务器端路由。
到目前为止,我已经考虑了三种选择:
选项#1:纯静态HTML并将两种形式“外包”给像Wufoo这样的人
这将消除在生产中完全表达的需要。我可以继续使用grunt来构建应用程序。但是,我不喜欢这种方法,因为我不能完全控制表单提交。更不用说,提供免费帐户的表单提交数量有限。
选项#2:纯服务器端使用express和Jade
我不喜欢这种方法,因为我会定义10个左右的服务器端路由,所有这些路由都只是渲染玉石模板。那不是太难了吗?使用app.get()
次调用时,我的路线将会出现问题,这些调用在回调中包含一个res.render()
。此外,即使我们可能正在谈论毫秒,为什么在不需要它的页面上包含中间件呢?
选项#3:#1和#2的混合,使用express.static()中间件
对于此选项,我会使用类似grunt-express的内容。这是我最喜欢的选项,但混合客户端和服务器端jade模板似乎有点“脏”。我的意思是快递应用程序将有(两个)服务器端路由负责呈现玉模板。将此与对express.static()
的调用混合,该调用指向包含从jade编译的静态HTML文件的目录,这对我来说似乎有点“肮脏”。我不确定为什么。
如果我选择选项#3,我的grunt构建脚本将如何工作?最好,我希望构建输出一个dist/
文件夹,其中包含一个生产就绪快递应用程序,包括我的小app.js
文件。
非常感谢任何想法!
答案 0 :(得分:2)
选项#2
res.render(...)非常聪明
只需使用选项#2,并确保浏览器获得304静态内容。如果您只是nodejs的新手,请确保以“生产”模式启动节点,因为“开发”中的jade很慢。
答案 1 :(得分:0)
您可以使用类似
的内容呈现所有服务器端模板app.get('/:template', function (req, res) {
res.render(req.params.template);
});