Backbone.js与非RESTful应用程序?(Backbone.js适合我当前的项目吗?)

dan*_*ani 5 javascript model-view-controller javascript-framework backbone.js

我正在试图弄清楚Backbone.js是否是我当前项目的正确框架:可视化应用程序.

我有很多问题:

1)状态/路由?

由于这不是典型的RESTful应用程序,而是具有各种图表类型和这些图表设置的可视化应用程序,如何在URL中维护状态?假设我的areaChart模型有许多默认值,如下所示:

AreaChartModel = Backbone.Model.extend({
    defaults: {
        selectedCountries: [],
        year: 1970,
        stacked: false
    },
    initialize: function(){
        [...]
    }
});
Run Code Online (Sandbox Code Playgroud)

在对模型的更新中,我想序列化其中一些属性,以便我可以为特定状态添加书签:chartApp.html#!year = 1970&stacked = false等.

反之亦然,当以这种状态启动应用程序时,我如何"取消"url状态并设置模型?我可以使用Backbone的内在路由吗?

2)控制器和耦合?

看来Backbone有一个非常紧凑的视图模型耦合?这真的是我应该将我的areaChartView绑定到模型吗?

AreaChartView = Backbone.View.extend({
    initialize: function(){
        areaChartModel.bind("change:year", this.render);
    }
});
Run Code Online (Sandbox Code Playgroud)

这通常不是控制器的作用吗?

3)延续:模型与控制器?

鉴于这种情况:在此输入图像描述

"侧栏"中的更改应触发一系列功能:
1)"应加载当前选择的新数据"
2)"基于此数据,应更新"可视化"视图中的比例"
3)"可视化视图应该呈现"

我应该在哪里放置这些函数,如何在状态稳定时触发的模型中创建事件?(即,当调用了所有函数并且是时候设置视图状态了吗?)

Tho*_*vis 3

1)我会尽可能使用 Backbone.js 原生路由 \xe2\x80\x9c:params\xe2\x80\x9d 和 \xe2\x80\x9c*splats\xe2\x80\x9d ,阅读更多。您可以将所有查询放入 Backbone.js 路由中,但我个人会牺牲某些东西来支持直观的 UI 按钮

\n\n

例如,我将默认设置为折线图,您无法使用 URL 来预设它,但只需单击按钮即可更改为堆叠图。

\n\n

我可能会不再使用 ? 和 & 在我的网址中。我可能稍后会回到这一点,因为它很有趣。

\n\n

2)你的例子很好,你只需要记住 Backbone.js MVC 术语与传统 MVC 无关。

\n\n

Backbone 视图本质上是传统 MVC 中的控制器。\n Backbone 控制器只是框架内的一种路由方式。\n 用于 Backbone.js 的模板引擎是传统的 MVC 视图。

\n\n

3)还在写

\n