Sails.js vs Meteor - 两者有什么好处?

时间:2014-03-05 15:41:14

标签: javascript node.js model-view-controller meteor sails.js

我一直在阅读Nodejs及其框架,并且最近完成了我的第一个完整的javascript前端(使用Angularjs)。

我已经决定使用这两个框架中的一个,我的下一个宠物项目将是Nodejs冒险:

我已经读过两者,但仍然无法完全理解他们的差异,为什么我应该选择使用一个而不是另一个。所以请戴上你最好的推销员帽子,挑选一个框架,然后把它卖给我。

我的宠物项目需要的一些功能是:

  • 现场比分
  • 类似Reddit的线程,实时
  • 类似维基百科的页面版
  • 用户/角色

4 个答案:

答案 0 :(得分:135)

我无法代表Meteor,但我可以提供一些关于Sails的背景知识,因为我创建了它。

<强> tldr; Sails并不是解决所有网络问题的灵丹妙药 - 但我相信Node.js是。 Sails的目标是提供一个实用的框架,用于开发基于node.js的完整,可扩展,启动和企业友好的应用程序。我开始Balderdash问题&#34;我们可以将Node.js用于所有内容吗?&#34;。帆是答案。


来自我们的new docs

  

Sails当然是一个Web框架。但退后一步。那是什么意思?有时,当我们提到&#34; web&#34;时,我们指的是前端网络。&#34;我们考虑Web标准,HTML 5或CSS 3等概念;和Backbone,Angular或jQuery等框架。帆不是那种&#34;那种&#34;一个Web框架。 Sails适用于Angular和Backbone,但你绝不会使用Sails而不是那些库。

     

另一方面,有时当我们谈论&#34; web框架&#34;时,我们指的是&#34;后端网络。&#34;这唤起了REST,HTTP或WebSockets等概念;并基于Java,Ruby或Node.js等技术构建。 A&#34;后端网络&#34;框架可以帮助您执行构建API,与数据库交互,提供HTML文件以及处理数十万个并发用户等操作。帆是#34;那种&#34;网页框架。

几年前,我承诺将Node.js用于所有事情 - it was love at first sight。我在ExpressSocket.io之上构建了Sails,因为它们(并且仍然是)用于各自用例的最完善的Node模块。 Sails中的请求处理代码与Express兼容,还具有对Socket.io的隐式支持的额外优势。

Sails旨在兼容您在Angular,Backbone,iOS / ObjC,Android / Java中构建前端的任何策略,甚至只提供另一个Web使用的原始API服务或您的开发者社区。如果你最终改变你的方法(例如从Backbone切换到Angular)或完全构建一个新的前端(例如构建一个Windows Phone本机应用程序),你的Sails应用程序仍然可以工作。正如您可能已经知道的那样,有些人将此方法称为面向服务的体系结构,或者SOA(Joe McCann在该主题上有一个很好的套牌。)

同样,Sails维护着其他熟悉的用于构建Web服务器的约定 - 标准MVC结构,创建干净API的能力以及开放,可配置,可扩展甚至可交换的核心模块。这意味着可以定制Sails以适应其用户的需求。需要,尽可能低级别。

2013年,该框架在人气方面取得了巨大的增长,我们的咨询业务也在增长。其余的核心维护者和我扩大了我们的重点,使后端开发尽可能快速和直接。由于我们的核心团队和(不断扩展的)Sails社区的努力,去年的钩子(插件),测试和文档等Sails的相关方面都有很长的路要走。我们仍然有很多路线图项目,但我相信Sails是今天在Node上进行稳定,可维护的MVC开发的最佳选择。团队的其他成员和我致力于其持续的维护和功能开发,并且因为我们将它用于所有客户项目,所以它不会去任何地方。

我坚持不懈地致力于使Sails成为最好的Web框架,但绝不会牺牲Node.js.核心团队和我坚持不懈地致力于增强Node生态系统,这意味着拥抱NPM,利用现有的Node技术和最佳实践等。不仅因为它更有意义,而且因为我们是Node.js开发人员。我们所有努力的动机是使Node更易于访问,而不是取代它。所以,如果在一些奇怪的平行宇宙中,我在将Sails转换为其他语言之间给予了Faustian选择,或者完全抛弃Sails但仍然能够使用Node,我会选择后者。


其他资源:

FAQ | Sails 101 | Original screencast | Contribution Guide | Stackoverflow

Google Group | Roadmap | IRC: #sailsjs on Freenode | Build Status

答案 1 :(得分:30)

我已经与Meteor建立了几个项目,但尚未与Sails合作。所以我的观点肯定是有偏见的,希望无论如何都是有用的。

构建前端

Meteor提供了自己的前端框架Blaze,将包含在即将发布的0.8版本中。 Meteor负责将您的集合中的数据绑定到您的视图。因此,您不必担心告诉您的观点更新,他们只是这样做。

另一方面,Sails只提供后端框架,您必须自带前端框架。

与大多数Node.js框架不同,Meteor是同步的

Meteor在一个循环中运行,如果你想使用Node.js软件包,你必须some extra work来确保它们在Meteor中正常运行。

Sails似乎是一个简单的MVC Node.js框架,因此当你研究它时,不应该有任何太令人惊讶的事情。

您应该将MongoDB与Meteor一起使用

是的,您可以将其他数据库与Meteor一起使用,但它们与MongoDB没有任何接近相同的支持。而对于Sails,看起来他们有几个数据库的ORM。

<强>性能

适用于大规模应用Meteor may not perform well。为解决这个问题已经做了很多工作,到2014年底,我们可以期待Meteor的扩展解决方案。

<强>稳定性

流星仍然非常新鲜,尚未达到1.0。您应该期望在接下来的两个版本中进行一些更改,这些更改将破坏向后兼容性。如果您尽快开始使用它,那么您可能需要考虑使用0.8-rc0分支。话虽如此,管道中的一些功能非常棒,并且会使1.0版本非常诱人。

最后的想法?

我喜欢Meteor因为它的特质。你将不得不学习Meteor的做事方式,但是一旦你开始这样做,你就会觉得你喝醉了kool-aid。由于数据绑定到视图的方式,服务器和客户端之间的线路并不遥远。 Meteor代表了应用程序架构的范式转换,如果你还没有尝试过,我会推荐它。

PS Checkout the roadmap以了解即将发生的事情。

答案 2 :(得分:19)

我只能对风帆发表意见。我是一个非常有经验的Javascript开发人员,并且自90年代以来一直在构建基于Javascript构建的嵌入式机顶盒应用程序。

效果非常好的事情   - 入门很棒,我觉得发表的材料非常支持   - 学习曲线非常短暂,帆背后有一个健康的社区   - 在初步学习之后,很容易快速创新

可以改进的事情   - 复杂的数据结构很难实现   - Passport.js集成很痛苦,因为没有干净的参考资料

<强>推荐   - 庞氏编码器有一个很棒的教程,它确实帮助我开始了https://www.youtube.com/user/ponzicoder   - 当您尝试更复杂的数据挑战时,了解有关快递和水线的更多信息将有所帮助

总的来说,我会推荐帆。

答案 3 :(得分:9)

我目前使用Meteor并且没有使用过Sails.js.

Meteor的使用非常愉快,我认为它是实时网络应用的绝佳选择。关于用户/角色,您可以查看集成的Accounts包,还可以搜索Atmosphere社区提供的角色/权限包。

最终,我建议尝试使用这两种技术的小项目,看看你更喜欢哪种。