Node.js和Meteor.js有什么区别?

88

所以我听说/阅读了很多关于meteor.js的内容。教程使其看起来作为一个框架非常运动,但是当涉及到Web编程时,我还是有点新手。

在过去的一个半月里,我一直在努力学习node.js并弄清它如何整合在一起。我喜欢它的快速和容易上手的方式,以及伴随而来的社区(这通过您可以获取的Node框架的惊人数量得到体现)。

但是meteor呢?它的真正优势是什么,它与其他框架的区别是什么?是否有任何作为node.js用户开始“转换”的人,或者它仍然是一个好奇的新框架?

3个回答

159
一个类比是,“Meteor对于Node就像Rails对于Ruby一样。”它是一个使用Node作为服务器的大型、有主见的框架。Node本身只是提供发送和接收HTTP请求以及执行其他I/O操作的低级框架。
Meteor的雄心勃勃:默认情况下,它服务的每个页面实际上都是一个Handlebars模板,并与服务器保持同步。试试Leaderboard example:你创建一个简单的模板,只列出名称和分数,每当任何客户端更改名称或分数时,页面将更新为新数据 - 不仅适用于该客户端,而且适用于查看该页面的所有人。
另一个区别是:虽然Node本身稳定并广泛用于生产,但Meteor处于“预览”状态。有严重的错误,并且某些不符合Meteor数据中心概念模型的事物(如动画)非常难以处理。
如果你喜欢尝试新技术,请试试Meteor。如果你想要一个更传统、稳定的基于Node构建的Web框架,请看看Express

2
自去年以来,Meteor在“严重错误”方面有所改进吗? - danorton
3
是的,我肯定会这么说。对于某些应用程序来说,Meteor现在已经相当可行,并且是一种非常愉快的开发方式。 - Trevor Burnham
4
请注意,随着Meteor不断发展,并得到相当大的财务支持以加快开发时间,本回答最终可能不完全准确,希望能带来更新,使其走出“预览”阶段。 - Goddard

12

Meteor是建立在node.js之上的框架。它使用node.js进行部署,但有几个不同之处。

其中关键的一点是它使用自己的打包系统而不是基于模块的Node系统。这使得使用Node制作Web应用程序变得容易。Node可以用于各种事情,但仅凭它本身无法提供动态Web内容。Meteor的库使所有这些变得容易。


4
版本0.6.0现在直接支持NPM模块。http://meteor.com/blog/2013/04/04/meteor-060-brand-new-distribution-system-app-packages-npm-integration - ChatGPT

9
Meteor的优点在于它的实时更新功能,这个功能对于一些社交应用程序非常有效,你可以看到所有人正在工作的更新。这些更新围绕着MongoDB集合的子集进行复制,并作为本地小型Mongo数据库更新在您的Web浏览器下(这会导致模板上触发多个渲染事件)。
然而,多个渲染更新的后半部分也是其弱点。如果您希望您的UI控制UI何时刷新(例如经典的jQuery AJAX页面,在这些页面中,您加载HTML并控制所有AJAX调用和UI更新),则会遇到问题。
Meteor使用一组不错的Node.js插件(Handlebars.js、Spark.js、Bootstrap css等),但使用自己的打包机制而不是npm,以及MongoDB作为存储层,您不需要考虑这些。但有时候您也可能会遇到问题...例如,如果您想要自定义Bootstrap主题,则会干扰Bootstrap响应式.css文件的加载顺序,因此它不再是响应式的(但是这很快会在Bootstrap 3.0发布时得到解决)。
因此,就像所有“全栈框架”一样,只要您的应用符合预期的范围,那么一切都将运行良好。一旦您超越了这个范围并推动了边界,您可能会遇到框架的问题...

2
Meteor V0.6.0+具有npm集成功能: http://www.meteor.com/blog/2013/04/04/meteor-060-brand-new-distribution-system-app-packages-npm-integration - Manav Kataria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接