从 Backbone.js 中的“模型”执行 Ajax 请求是否正确?从“路由器”来看是否更正确?我不将 RESTful 用于 Backbone(出于其他原因)。当我说“做 Ajax 请求”时,我的意思是在模型中实现了 Ajax 功能。该函数可以在模型之外调用(并且是)。
我的 Web 应用程序不使用路由器(仅视图和模型)。当我在应用程序中导航时,我不想在浏览器中有 url 路由。会出现什么问题?
从 Backbone.js 中的“模型”执行 Ajax 请求是否正确?从“路由器”来看是否更正确?我不将 RESTful 用于 Backbone(出于其他原因)。当我说“做 Ajax 请求”时,我的意思是在模型中实现了 Ajax 功能。该函数可以在模型之外调用(并且是)。
我的 Web 应用程序不使用路由器(仅视图和模型)。当我在应用程序中导航时,我不想在浏览器中有 url 路由。会出现什么问题?
您的路由器应该尽可能干净,所以绝对不存在。
在您的模型中,您定义模型的 URL。
在您看来,您只需调用 model.fetch()。
我使用(并看到)的最常见模式是这样做:
var MyApp.myModel = Backbone.Model.extend({
url: '/someResourceUrl'
});
var MyApp.myView = Backbone.View.extend({
initialize: function() {
this.model.bind("change",this.render,this);
this.model.fetch();
},
render: function() {
alert('do awesome stuff here');
}
});
将AJAX请求放在模型中是正确的,因为它是业务逻辑。这是根据一般 MVC 原则以及主干.js 文档:
“如果您的应用程序需要从服务器、本地存储、cookie 等收集数据,那么模型就是应该发生的地方。事实上,模型是整个系统中唯一应该知道有关 XMLHttpRequest 的任何地方。您可能在模型层中有代码,可以为您加载代码并创建模型对象。” - http://michaux.ca/articles/mvc-architecture-for-javascript-applications
“模型-视图-控制器 (MVC) 是一种软件架构模式,它将信息的表示与用户与它的交互分开。[1][2] 该模型由应用程序数据、业务规则、逻辑和功能组成。” - http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
“Backbone.Model – 就像 Rails 模型减去类方法。在业务逻辑中包装一行数据。” - http://backbonejs.org/