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_Amd_Js Amd - Fatal编程技术网

Javascript 主干网和要求有效负载

Javascript 主干网和要求有效负载,javascript,backbone.js,requirejs,amd,js-amd,Javascript,Backbone.js,Requirejs,Amd,Js Amd,我看了很多关于如何开始用requireJS开发BB应用程序的例子,但我有点迷茫 我认为AMD有一个目标,它加载文件,只有当他们真的需要。不早 为什么我只看到开发人员将几乎所有文件作为依赖项放在主文件开头的示例 以下是一个例子: 此应用程序立即加载main.js,它依赖于加载路由器的app.js/home.js,后者需要视图/view.js,后者加载视图的模板和模型/model.js,后者。。。结束 我看不出如何扩展这个应用程序,例如使用更多视图,其中视图的依赖项(其模型、模板、集合、第三方AP

我看了很多关于如何开始用requireJS开发BB应用程序的例子,但我有点迷茫

我认为AMD有一个目标,它加载文件,只有当他们真的需要。不早

为什么我只看到开发人员将几乎所有文件作为依赖项放在主文件开头的示例

以下是一个例子:

此应用程序立即加载main.js,它依赖于加载路由器的app.js/home.js,后者需要视图/view.js,后者加载视图的模板和模型/model.js,后者。。。结束

我看不出如何扩展这个应用程序,例如使用更多视图,其中视图的依赖项(其模型、模板、集合、第三方API等)仅在路由器调用并初始化它们时加载。另一种方法是使用AMD,在初始化应用程序时加载所有文件,这将是毫无意义的

类似的例子如下: 查看router.js文件。实际上,它加载“视图/项目/列表”和“视图/用户/列表”依赖项,而路由器还不知道用户将来是否需要它们


请提前告知,谢谢

在这样一个小的示例应用程序中很难看到,因为您必须在初始路径上加载某些内容,而在主干中加载某些内容通常意味着一个模型、一个集合和一个视图。由于您链接的示例每个只有一个,因此是的,您几乎加载了所有内容

您开始看到“按需”功能的地方是添加额外的路由/视图/模型等。但是,请记住,按需加载可能是AMD/RequireJS的次要目标。主要目标是。然后,它们为您提供了很多选择,可以按需加载内容,也可以通过

此外,也没有任何内容表明必须将所有require()放在文件的开头。您可以稍后执行这些操作(例如,在启动路由时)。下面是第一个链接示例中home.js的修改版本。如果您使用的是Chrome开发工具,“debugger;”语句暂停执行时,您可以查看网络选项卡。然后继续执行并查看如何加载其余脚本

define([
    'jquery', 
    'backbone', 
    'underscore'
    ], 
function($, Backbone, _){
    var Router = Backbone.Router.extend({
        initialize: function(){
            Backbone.history.start();
        },
        routes: {
            '': 'home'
        },
        'home': function(){
            debugger;
            require(['views/view'], function (mainView) {
                mainView.render();
            });
        }
    });

    return Router;
});

请参阅以了解更多背景信息以及下一步的方向。

我添加了另一个示例,其中有更多视图,但应用程序逻辑仍然缺少此按需点。谢谢!你的例子和文章对我帮助很大。太好了。每一条路线我都要加载大量文件。现在事情进展得很快!谢谢