所以我一直在听/读很多关于meteor.js的信息。这些教程使它作为一个框架看起来非常运动,但在 Web 编程方面我仍然是一个新手。
在过去的一个半月里,我一直在努力真正学习 node.js 并弄清楚它是如何结合在一起的。我喜欢它启动和运行的快速和简单,以及随之而来的社区(你可以为 Node 获得的框架数量惊人)。
但是流星呢?它的真正优势是什么,有什么区别?有没有人从 node.js 用户开始并“转换”,或者它仍然是一个奇怪的新框架?
一个松散的类比是,“Meteor 之于 Node 就像 Rails 之于 Ruby”。这是一个在服务器上使用 Node 的大型、固执己见的框架。Node 本身只是一个底层框架,提供发送和接收 HTTP 请求以及执行其他 I/O 的功能。
Meteor 雄心勃勃:默认情况下,它所服务的每个页面实际上都是与服务器保持同步的Handlebars模板。试试排行榜示例:您创建了一个模板,上面只写着“列出姓名和分数”,每次任何客户更改姓名或分数时,页面都会使用新数据更新 — 不仅针对该客户,还针对查看页。
另一个区别:虽然 Node 本身是稳定的并在生产中广泛使用,但 Meteor 处于“预览”状态。存在严重的错误,某些不符合 Meteor 以数据为中心的概念模型(例如动画)的事情很难做到。
如果你喜欢玩新技术,试试 Meteor。如果您想要一个基于 Node 的更传统、更稳定的 Web 框架,请查看Express。
Meteor 是一个建立在 node.js 之上的框架。它使用 node.js 进行部署,但有几个不同之处。
关键是它使用自己的打包系统而不是节点的基于模块的系统。它使使用 Node.js 制作 Web 应用程序变得容易。Node 可以用于多种用途,并且它本身在提供动态 Web 内容方面非常糟糕。Meteor 的库让这一切变得简单。
Meteor 的优势在于它的实时更新功能,它适用于您现在看到的一些社交应用程序,您可以在这些应用程序中看到每个人对您正在处理的工作的更新。这些更新集中在将 MongoDB 集合的子集复制为 Web 浏览器上的本地 mini-mongo(它们的客户端 MongoDB 子集)数据库更新(这会导致在您的模板上触发多个渲染事件)。关于多次渲染更新的后半部分也是弱点。如果您希望您的 UI 控制 UI 何时刷新(例如,加载 HTML 并控制所有 AJAX 调用和 UI 更新的经典 jQuery AJAX 页面),您将与这种机制作斗争。
Meteor 使用了一个很好的 Node.js 插件堆栈(Handlebars.js、Spark.js、Bootstrap css 等,但使用它自己的打包机制而不是 npm)和 MongoDB 一起用于存储层,您不必这样做想一想。但有时你最终也会与之抗争......例如,如果你想自定义 Bootstrap 主题,它会扰乱 Bootstrap 的 responsive.css 文件的加载顺序,因此它不再是响应式的(但这可能会在 Bootstrap 时自行修复3.0 即将发布)。
因此,就像所有“全栈框架”一样,只要您的应用符合预期,一切都会很好。一旦你超越了这个范围并突破了边缘界限,你最终可能会与框架抗争......