繁体   English   中英

如何在骨干路由器中构造许多视图的使用

[英]How to structure the use of many views in a backbone router

我正在使用Require.js和Backbone.js制作一个单页应用程序。 它是一个相当大的Web应用程序,具有许多不同的“页面”(也称为“视图”)。 以下是我的路由器给您的想法。 有几个带有子页面的主页。

因此,例如,“设置”部分具有多个不同的子页面,例如用户设置,语言设置,电子邮件设置等。

为了简单起见,我将如何构造许多路线及其视图?

现在,我为每个子页面提供了自己的视图,但这意味着我必须将20-30个视图导入到路由器中,以便在路由该页面时可以使用所有可能的视图。

我想到的另一种方法是每个部分都有一个视图,在该视图中我应该加载不同的部分。 这样,我只需要将5-6的剖面视图加载到路由器中即可...但是,随后该视图将必须了解路由。

什么是正确的方法?

我创建了“控制器”对象,这些对象负责视图渲染和模型获取。
我更喜欢一直保持路由器清洁,这意味着我不会因回调功能而使它混乱。 这样做会使路由器随着时间的流逝变得一团糟,而其部分目的是快速了解可用路由。

在Backbone中,我发现创建自己的约定很有用,就像框架一样。
例如,对于我创建的每个视图,我都会创建一个控制器对象。
每个控制器对象都有一个名为“ makeView()”的方法,该方法负责呈现视图以及内存管理。
按照我自己的理论,我创建了一种“级联控制器”的方法,即一个控制器也可以控制其他控制器,并且控制器可以使用“辅助”对象来完成某些任务。 例如,当您说可能需要管理20个视图和子视图时; 我们可以想象某些观点是相互关联的。 将有一个中央控制器负责相关视图之间的常见任务,而一个特定控制器则负责特定的,单独的视图功能。

我的路由器中的路由如下所示:

    auth: function(){ 
        //--- Check the authStatus and render status independent views 
        var auth_ctr = new Auth_ctr(); 
        auth_ctr.makeViews(); 
    }

在给出的示例中,您可以想象将创建并渲染多个视图。 因此,我真正要做的是从该控制器中实例化新的控制器,每个控制器将单独创建和管理视图,提供支持视图的功能,获取集合/模型数据。
创建一种独立的“视图管理器”非常重要,这样可以防止每次渲染新视图时都发生内存泄漏。

这就是我的操作方式,但是,当然,我敢肯定有人这样做的方式有所不同。
我想出了一个理论。 它给了我一个清晰的结构,并且到目前为止对我来说一直很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM