Node.js是构建完整网站的好选择吗?

时间:2011-06-19 19:13:35

标签: javascript ruby-on-rails-3 node.js express

我想知道使用Node.js(express.js)是否是选择完整网站的最佳选择。我一直在使用Rails + Node.js,我想知道这是否仍然是最好的选择,或者我是否应该完全转移到Node.js。

是否有完全使用node.js构建的网站?我想它必须缺少Rails提供的许多东西。

4 个答案:

答案 0 :(得分:27)

  

我想它必须缺少很多东西   Rails提供。

我在下面给出了一个简短的列表,但我想知道你可能缺少什么,我认为(几乎可以肯定)我们可以在node.js上给你一些替代方案。


模块

node.js正在变得非常完整,我认为您可以使用node.js运行整个站点,例如使用以下模块。我猜你知道npm。如果没有,我真的建议你去谷歌,并了解它。要搜索npm,您可以使用http://search.npmjs.org

网络框架:

  
      
  1. 高性能,高级网络   Node.js的开发   https://github.com/visionmedia/express

  2.   
  3. Socket.IO旨在让每个浏览器和移动设备都能实现实时应用   设备,模糊了差异   不同的运输之间   机制。   https://github.com/learnboost/socket.io-node

  4.   

我相信通过这两个网络框架,您可以创建很多网站。例如,express是一个非常强大的Web框架,支持很多很酷的东西,如:

  • session支持。
  • 功能强大template engines。我喜欢Jade。您也可以在很多时候轻松地在客户端和服务器之间共享这些内容。
  • 优秀routing

仅举几例。

数据库:

  
      
  1. Redis是一个开源的,先进的   键值存储。它经常被提及   从那以后作为数据结构服务器   键可以包含字符串,哈希,   列表,集合和排序集   https://github.com/mranney/node_redis

  2.   
  3. MongoDB(来自“humongous”)是一个可扩展的高性能开源软件,   面向文档的数据库。   Mongoose是一个MongoDB对象建模工具,设计用于工作   不同步的环境   https://github.com/learnboost/mongoose/

  4.   

有了这两个数据库,我认为你应该能够完成大部分任务。好消息是Redis是非常快/简单的高级KV存储(内存中的数据集/也支持VM)并支持复制,而Mongodb更完整(比redis慢)并且还支持分片。

验证

  
      
  1. 您的node.js Connect和Express应用程序的身份验证和授权(密码,Facebook和更多)   https://github.com/bnoguchi/everyauth
  2.   

就像我之前说过的那样,只有这些模块才能走得很远。

答案 1 :(得分:15)

Express.js更类似于Sinatra。它们比rails更简单。

Express的网站列表相当小http://expressjs.com/applications.html

所以我认为查看Sinatra的列表http://www.sinatrarb.com/wild.html

也是一件好事

所以以相反的顺序回答你的问题。是的,它缺乏铁轨的所有功能。是的,有完全用Express写的网站。转到100%Node.js可能是您网站的正确决定。

这取决于您错过哪些功能以及您需要的性能。

答案 2 :(得分:8)

我不确定,但我想这完全有可能。我已经使用普通服务器端javascript构建了完整的站点多年没有问题。 node.js的优点似乎是它的事件驱动模型和socket.io之类的东西。我刚开始尝试它,我可能会尝试将现有网站移植到node.js。

使用node.js构建的

Here you can find a large list个网站。

最后,您可能需要阅读:What it’s like building a real website in Node.js

答案 3 :(得分:2)

是的,截至目前,node.js缺少很多(好的,至少是少数)rails提供的东西。最终,可用的node.js模块集将共同为RoR提供良好的替代方案。或至少针对相同基本问题的不同(通常更现代)方法。 node.js生态系统中仍然缺少一些重要的东西,包括用于postgresql的良好ORM(rails具有很好的ActiveRecord)和良好的数据库模式管理子系统。截至目前,这两个都不存在于node.js生态系统中,但肯定会在适当的时候出现。 Rails现在正在努力。

有一些技巧node.js有RoR没有。 node.js中的调试比RoR更加无缝,express.js更灵活。 Express是库方法(你告诉它该怎么做)而rails是框架方法(你填写它为你创建的样板)。还有一些很棒的东西,比如手写笔和玉石,它们在轨道中具有相同的功能,但当你有一个用一种语言编写的完整应用程序(javascript或CoffeeScript,我更喜欢)和一切都在现代node.js / TJ Holowaychuck风格,你获得了一定程度的凝聚力,非常适合在其中工作。

要记住的另一件事是,尽管可用的node.js模块列表非常令人印象深刻,但其中许多模块并不像rails / django模拟器那样成熟和经过实战考验。它是命中还是错过,所以要小心。