meteor.js和backbone.js是互补的吗?

时间:2012-11-10 15:12:23

标签: javascript backbone.js meteor

我最近一直在使用骨干作为我的客户端框架。在服务器上我使用Express.js。 不过,我正在阅读Meteor,并意识到这是一个相当有趣的“全栈”框架。

Backbone和Meteor的使用是互补的,还是Meteor可以使用 简单地抛弃Backbone(或任何其他MV *)?

2 个答案:

答案 0 :(得分:27)

没错。 Meteor的不同部分如Meteor.Collection(也可在客户端上运行的Mongo数据库API)和Template(在数据更改时自动重绘的Handlebars样式模板)协同工作。因此,每当一个用户进行更改时,允许访问该数据的所有其他选项卡将自动重绘。如果您正在使用它们,那么您不需要在客户端上使用像骨干这样的单独库。

Backbone是为早期应用程序而构建的,您可以使用不同的API编写单独的客户端和服务器代码。在该模型中,服务器端公开REST API,并且主干的工作是在客户端上提供一些结构,以便如何查询该A​​PI并根据返回的数据绘制屏幕。但是,在拥有实时应用程序之前,您仍需要手动编写所有数据同步和模型验证代码,并且必须执行两次:一次在客户端上,一次在服务器上。

有一个例外:我们很多人都在Meteor应用程序中使用骨干路由器。以下代码来自Todo List example

////////// Tracking selected list in URL //////////

var TodosRouter = Backbone.Router.extend({
  routes: {
    ":list_id": "main"
  },
  main: function (list_id) {
    Session.set("list_id", list_id);
    Session.set("tag_filter", null);
  },
  setList: function (list_id) {
    this.navigate(list_id, true);
  }
});

Router = new TodosRouter;

Meteor.startup(function () {
  Backbone.history.start({pushState: true});
});

答案 1 :(得分:2)

现有一个名为meteor-router的陨石智能包。也许它可以帮助您迁移现有的骨干代码。