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

ped*_*oto 79 javascript model-view-controller node.js meteor sails.js

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

我决定使用以下两个框架中的一个来进行我的下一个宠物项目:Nodejs冒险:

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

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

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

mik*_*eil 135

我不能代表Meteor,但我可以帮助提供一些关于Sails的背景,因为我创建了它.

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


从我们的新文档:

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

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

几年前,我承诺将Node.js用于一切 - 这是一见钟情.我在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是最好的网络框架,但绝不会以牺牲Node.js为代价.核心团队和我不遗余力地致力于增强Node生态系统,这意味着拥抱NPM,利用现有的Node技术和最佳实践等.不仅因为它更有意义,而且因为我们是Node.js开发人员.我们所有努力的动机是使Node更易于访问,而不是取代它.因此,如果在一些奇怪的并行宇宙中,我在将Sails转换为其他语言之间给予了Faustian选择,或者完全抛弃Sails但仍然能够使用Node,我会选择后者.


其他资源:

常见问题 | 帆101 | 原始截屏 | 贡献指南 | 堆栈溢出

谷歌集团 | 路线图 | IRC:Freenode上的#sailsjs | 建立状态

  • 在这里进入另一个关于这个问题的良好观点(第一个答案):https://www.linkedin.com/groups/Just-tested-out-Sailsjs-really-2906459.S.5798118180668850178 (2认同)
  • https://github.com/balderdashy/sails-docs/blob/master/What-Is-Sails.md 是 404'ing (2认同)

MSa*_*ian 30

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

建立前端

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

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

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

Meteor在一个循环中运行,如果你想使用Node.js软件包,你将不得不做一些额外的工作,以确保它们在Meteor中正常运行.

Sails似乎是一个简单的MVC Node.js框架,所以当你研究它时,不应该有任何太令人惊讶的东西.

您应该将MongoDB与Meteor一起使用

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

性能

对于大规模应用,Meteor 可能表现不佳.为解决这个问题已经做了很多工作,到2014年底,我们可以期待Meteor的扩展解决方案.

稳定性

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

最后的想法?

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

PS 查看路线图,了解即将发生的事情.

  • 也许有一件重要的事情是,sails.js仅用于后端,而meteor提供了一个完整的前端javascript框架,可以轻松地与后端一起工作. (8认同)
  • 我建议修改"meteor is synchronous"语句,因为它可能给那些不熟悉nodejs光纤的人留下错误的印象.Meteor在Node.js上运行,因此您仍然可以获得事件驱动的非阻塞优势.Meteor透明地集成节点Fibers,因此服务器端代码可以用线性执行模型编写,而不是将事物分解为传统的回调.这可能是关于在流星上使用`npm`包的最佳参考:http://meteorhacks.com/complete-npm-integration-for-meteor.html (5认同)

sim*_*ott 19

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

效果非常好的事情 - 入门非常棒,我对所发布的材料感到非常支持 - 学习曲线很短,并且有一个健康的社区背后的风帆 - 在最初的学习之后很快就能很快地发挥作用

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

建议 - 庞氏编码器有一个很棒的教程,它真的帮助我开始了https://www.youtube.com/user/ponzicoder - 了解更多有关快速和水线的知识将有助于您在尝试更复杂的数据挑战时

总的来说,我会推荐帆.

  • 嗨Mitermayer,对不起,但我的博客很久以前就因疏忽而死.使护照对我有用的事情是意识到,如果我做了两件事似乎工作正常.1默认字段名称到处(电子邮件和密码)2将req对象传递给回调`passport.use('local-login',new LocalStrategy({usernameField:'email',passwordField:'password',passReqToCallback:true//允许我们从路由传递req(让我们检查用户是否登录)},` (2认同)

ala*_*ing 9

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

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

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