我最近一直在使用主干作为我的客户端框架。在我使用 Express.js 的服务器上。尽管如此,我还是在阅读 Meteor 并意识到它是一个相当有趣的“全栈”框架。
Backbone 和 Meteor 的使用是互补的,还是使用 Meteor 可以简单地抛弃 Backbone(或任何其他 MV*)?
我最近一直在使用主干作为我的客户端框架。在我使用 Express.js 的服务器上。尽管如此,我还是在阅读 Meteor 并意识到它是一个相当有趣的“全栈”框架。
Backbone 和 Meteor 的使用是互补的,还是使用 Meteor 可以简单地抛弃 Backbone(或任何其他 MV*)?
这是正确的。Meteor 的不同部分,如Meteor.Collection
(也适用于客户端的 Mongo 数据库 API)和Template
(数据更改时自动重绘的 Handlebars 样式模板)一起工作。因此,每当一个用户进行更改时,所有其他允许访问该数据的选项卡都会自动重绘。如果您正在使用它们,那么您不需要在客户端上有一个单独的库,如主干。
Backbone 是为早期风格的应用程序构建的,在这种应用程序中,您可以使用不同的 API 编写单独的客户端和服务器代码。在该模型中,服务器端公开了一个 REST API,主干的工作是在客户端上提供一些结构,以便如何查询该 API 并根据返回的数据绘制屏幕。但是在你拥有一个实时应用程序之前,你仍然必须手动编写所有的数据同步和模型验证代码,而且你必须这样做两次:一次在客户端,一次在服务器上。
有一个例外:我们中的许多人确实在我们的 Meteor 应用程序中使用骨干网的路由器。下面的代码来自Todo List 示例。
////////// 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});
});
有一个名为meteor-router的现有陨石智能包。也许它可以帮助您迁移现有的主干代码。