Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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,主干路由器是否也应该用于嵌套视图,因为它用于在更完整的页面视图和其他类别之间导航?何时使用路由器,何时使用内部视图 例如,主视图页面具有选项卡,每个选项卡用于显示另一个视图及其模型和集合。此主视图类似于Twitter或Facebook。如何呈现此完整页面: 通过路由器导航到选项卡单击上的子视图,并通过子视图渲染功能进行渲染,然后通过homeview渲染将它们放置在主视图页面中,或者路由器不适合此目的。优点:a.可添加书签的子视图,b?更易于维护的代码。缺点:页面上刷新homeview部分未呈现,

主干路由器是否也应该用于嵌套视图,因为它用于在更完整的页面视图和其他类别之间导航?何时使用路由器,何时使用内部视图

例如,主视图页面具有选项卡,每个选项卡用于显示另一个视图及其模型和集合。此主视图类似于Twitter或Facebook。如何呈现此完整页面:

  • 通过路由器导航到选项卡单击上的子视图,并通过子视图渲染功能进行渲染,然后通过homeview渲染将它们放置在主视图页面中,或者路由器不适合此目的。优点:a.可添加书签的子视图,b?更易于维护的代码。缺点:页面上刷新homeview部分未呈现,只有子视图呈现
  • 相反,在选项卡上单击时,应在homeview和中创建子视图 自身呈现并由homeview放置在主视图页面中 render()。优点:以上没有缺点。缺点:以上a、b无优势
  • 更新:

  • 1中刷新问题的混合解决方案。使每个子视图都能够呈现homeview零件、选项卡等,方法是依赖于单独的一个小模板,或者从已编写这些零件代码的模板中获取这些homeview零件。这里的缺点是,子视图需要(作为依赖性)或包含(在其模板中)一些根本不是子视图的东西,但像sup、main之类的东西属于上层模块,从而使模块的分离稍微减少

  • 或者还有其他更好的方法吗?

    归根结底,这是主观的;对于何时应该启动由
    主干.Router
    路由触发的新页面视图,以及何时应该在不涉及路由的情况下重新呈现DOM的一部分的子视图,没有任何规则。实际上,这只是一个问题,你是否希望用户感觉他们已经进入了一个新的页面或没有。问问自己:

    • 您希望他们能够在浏览器中单击后退/前进吗
    • 您是否希望他们能够将“页面”添加到书签中
    • DOM的大部分在改变还是只是一小部分

    换句话说,当用户进入
    主干网.Router
    页面时,表示您的站点状态发生了重大变化。实际上,所有书签/历史记录条目/重要的DOM更改都只是这一点的反映。所以,如果你觉得一个重大的变化正在发生,无论这对你和你的网站意味着什么,那就制定一条路线。否则,只需重新呈现一个
    视图

    有人读过吗,知道答案吗?如果有人刷新页面,任何应用程序/网站都无法呈现,这不是不可取的吗?如果我使用路由器,这就是我面临的情况。或者我不知道如何克服这个刷新问题,同时使用路由器。在我的应用程序中,这些页面一起存在于DOM中,它们只是通过一张完整的页面幻灯片出现在屏幕上(如果不尝试实现,则每次都会被抓取)。它给人的感觉是在滑动之间有着相同的页面。三个问题的答案几乎都是否定的。我只是在尝试获得最佳实践。我认为这是使用路由器作为控制器。我很困惑:你指的是什么“刷新问题”?使用
    路由器
    并为“页面”创建路由的要点之一是,用户可以在刷新时返回到该“页面”。此外,您不应将
    路由器
    视为控制器。来自主干网站:“如果有帮助,在主干中,视图类也可以被视为一种控制器,调度源自UI的事件,HTML模板作为真实视图。我们称之为视图,因为它代表UI的逻辑块,负责单个DOM元素的内容。”换句话说,
    Backbone.View
    不仅仅是MVC中的V,而
    路由器
    只是站点整体控制器的一部分。我指的是这样的情况:当使用路由器显示这些子视图部分时,当我在单击homeview的tab后刷新以按预期显示整个页面的子视图时,在路由器中到达它的路由,因此它的相应方法将创建一个子视图实例,并从路由器内部调用它的render。但一般来说,首先,应用程序在到达某个点之前加载了主视图。它在单击事件时显示子视图以导航到子视图路径,并且它已经呈现了自己的主视图部分,如标题栏和导航栏,其中包括显示子视图的可单击选项卡。我在理解您时有点困难,但我认为你所指的问题是:1)大部分站点负载,2)路由器处理路由,3)页面子视图呈现页面的一部分。因此,您的用户可以看到站点负载的一部分,然后再看到其余部分。这就是问题所在吗?