Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何构造主干路由器中多视图的使用_Javascript_Backbone.js_Requirejs - Fatal编程技术网

Javascript 如何构造主干路由器中多视图的使用

Javascript 如何构造主干路由器中多视图的使用,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我正在使用Require.js和Backbone.js制作一个单页应用程序。这是一个相当大的web应用程序,有很多不同的“页面”视图。下面是我的路由器给你一个想法。有几个主页面和子页面 例如,有一个设置部分,它有多个不同的子页面,如用户设置、语言设置、电子邮件设置等 为了简单起见,我将如何构建许多路线及其视图? 现在我给每个子页面提供自己的视图,但这意味着我必须将20-30个视图导入路由器,以便在该页面被路由时,所有可能的视图都可用 我想到的另一种方法是每个部分有一个视图,在该视图中我应该加载不

我正在使用Require.js和Backbone.js制作一个单页应用程序。这是一个相当大的web应用程序,有很多不同的“页面”视图。下面是我的路由器给你一个想法。有几个主页面和子页面

例如,有一个设置部分,它有多个不同的子页面,如用户设置、语言设置、电子邮件设置等

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

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

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


正确的方法是什么?

我创建负责视图渲染和模型获取的“控制器”对象。
我更喜欢保持路由器在任何时候都保持干净,这意味着我不会用回调功能把它弄得乱七八糟。这样做会使路由器随着时间的推移变得一团糟,而其部分目的是快速了解可用的路由

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

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

    auth: function(){ 
        //--- Check the authStatus and render status independent views 
        var auth_ctr = new Auth_ctr(); 
        auth_ctr.makeViews(); 
    }
在给出的示例中,您可以想象将创建和渲染多个视图。因此,我真正要做的是,从这个控制器中实例化新的控制器,每个控制器将分别创建和管理视图,提供支持视图的功能,获取集合/模型数据。
创建一种独立的“视图管理器”非常重要,它可以防止每次渲染新视图时发生内存泄漏

我就是这样做的,但当然,我相信有些人做得不同。
这是我提出的一个理论;它给了我一个清晰的结构,到目前为止,它一直对我很有效