2013-12-09 40 views
1

我有一个应用程序,我正在开发使用快递几乎是一个纯静态站点,除了两种形式发布到服务器(联系表单和请求形成)。该网站大约有10个静态页面和两个服务器端路径来接受表单提交。大多数静态快速应用程序与一个服务器端路由

我开始用jade,stylus和coffeescript开发应用程序的前端,使用grunt作为开发服务器和构建工具来输出所有这些的生产就绪版本(concat,min等)。静态资产。

现在到两个服务器端路由。我很好奇人们对这种情况的看法,其中应用程序包含90%的静态HTML,只有一个或两个服务器端路由。

到目前为止,我认为三个选项:

选项#1:纯静态的HTML和“外包”两种形式,以一个像Wufoo项目

这将完全消除在快递的需要生产。我可以继续使用grunt来构建应用程序。但是,我不喜欢这种方法,因为我不能完全控制表单提交。更何况,提交免费帐户的表格数量是有限的。

选项#2:使用快递和玉

我不喜欢这种方法,无论是因为我将确定10点左右的服务器端的路线,所有这些都只是呈现玉模板纯粹的服务器端。这不是矫枉过正吗?我的路线将会充斥着app.get()的呼叫,其中包含回拨中的单个res.render()。另外,即使我们可能说毫秒,为什么在不需要它的页面上包含中间件?

选项#3:#1和#2混合,使用express.static()中间件

对于这个选择,我会使用类似grunt-express。这是我最喜欢的选择,但是将客户端和服务器端的玉石模板混合似乎有点“肮脏”。我的意思是,快速应用程序将有(两个)服务器端路线,负责渲染一个玉器模板。通过调用express.static()来调用这个指针,该指针指向一个包含从玉石编译的静态HTML文件的目录,这对我来说似乎有点“肮脏”。我不知道为什么。

如果我选择选项#3,我的grunt构建脚本将如何工作?最好是我希望构建输出一个dist/文件夹,其中包含一个生产准备快速应用程序,包括我的小小app.js文件。

任何想法非常感谢!

+0

一种选择是使用另一个网络服务器(比如Nginx)来获取静态资产,并且只保留Node.js用于动态内容。我在这里谈论这个方法:http://hectorcorrea.com/#/blog/running-a-node-js-web-site-in-production-part-2/53 –

+0

我其实很喜欢这个想法,但不知道这两个(前端和后端)如何共存,因为我有多个运行在服务器上的快递应用程序。我会阅读链接的博客。你能提供详细的答案吗?谢谢:) – Feech

回答

2

选项#2

res.render(......)是非常聪明的

  • 它将不会再次生成HTML(如果您不更改res。当地人)
  • 除了该渲染具有智能缓存控制,它会发送“304未修改”浏览器,而不是全身。

只要使用选项#2,并确保浏览器获取304的静态内容。如果你只是nodejs的新手,确保你在'生产'模式下启动你的节点,因为玉的'开发'速度很慢。

0

可以渲染所有的东西在服务器端模板像

app.get('/:template', function (req, res) { 
    res.render(req.params.template); 
}); 
+0

这将如何与404工作?我不喜欢这个的原因之一是因为请求必须通过任何不必要的中间件运行。我还想缩小HTML以提高性能。 – Feech

+1

你可能希望通过一些存在检查来实现这一点,或者使用像'/:template(page1 | page2 | page3)'或其他类似的正则表达式。但我认为你应该选择一个,和它一起生活一段时间,当你了解痛点时切换到别的东西。对于一个小型网站来说,尝试自己而不需要在计算器上进行调查和辩论是一个很好的习惯。 –

+0

我列出三个潜在选项的唯一原因是我已经考虑了一些问题。我可以提出这个问题:“我应该如何处理大多数静态HTML(玉)模板与快速应用程序?” – Feech

相关问题