我想知道使用Node.js(express.js)是否是选择完整网站的最佳选择。我一直在使用Rails + Node.js,我想知道这是否仍然是最好的选择,或者我是否应该完全转移到Node.js。
是否有完全使用node.js构建的网站?我想它必须缺少Rails提供的许多东西。
答案 0 :(得分:27)
我想它必须缺少很多东西 Rails提供。
我在下面给出了一个简短的列表,但我想知道你可能缺少什么,我认为(几乎可以肯定)我们可以在node.js上给你一些替代方案。
node.js正在变得非常完整,我认为您可以使用node.js运行整个站点,例如使用以下模块。我猜你知道npm
。如果没有,我真的建议你去谷歌,并了解它。要搜索npm,您可以使用http://search.npmjs.org:
高性能,高级网络 Node.js的开发 https://github.com/visionmedia/express
- 醇>
Socket.IO旨在让每个浏览器和移动设备都能实现实时应用 设备,模糊了差异 不同的运输之间 机制。 https://github.com/learnboost/socket.io-node
我相信通过这两个网络框架,您可以创建很多网站。例如,express是一个非常强大的Web框架,支持很多很酷的东西,如:
仅举几例。
Redis是一个开源的,先进的 键值存储。它经常被提及 从那以后作为数据结构服务器 键可以包含字符串,哈希, 列表,集合和排序集 https://github.com/mranney/node_redis
- 醇>
MongoDB(来自“humongous”)是一个可扩展的高性能开源软件, 面向文档的数据库。 Mongoose是一个MongoDB对象建模工具,设计用于工作 不同步的环境 https://github.com/learnboost/mongoose/
有了这两个数据库,我认为你应该能够完成大部分任务。好消息是Redis是非常快/简单的高级KV存储(内存中的数据集/也支持VM)并支持复制,而Mongodb更完整(比redis慢)并且还支持分片。
- 您的node.js Connect和Express应用程序的身份验证和授权(密码,Facebook和更多) https://github.com/bnoguchi/everyauth
醇>
就像我之前说过的那样,只有这些模块才能走得很远。
答案 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模拟器那样成熟和经过实战考验。它是命中还是错过,所以要小心。