繁体   English   中英

Backbone和RequireJS有效加载

[英]Backbone and RequireJS effective loading

我在互联网上看了很多例子,如何用requireJS开始开发BB应用程序,但我有点丢失。

我认为AMD的目标是只在真正需要时加载文件。 不久

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

这是一个例子: https//github.com/jcreamer898/RequireJS-Backbone-Starter/tree/master/js

这个应用程序立即加载main.js,这取决于app.js加载router / home.js,这需要view / view.js加载视图的模板和models / model.js ......和结束。

我无法看到如何扩展此应用程序,例如更多视图,其中视图的依赖项(其模型,模板,集合,第三方API等)仅在路由器调用和初始化时加载。 换句话说,在初始化应用程序时加载所有文件时使用AMD是无稽之谈。

类似的例子: http ://backbonetutorials.com/organizing-backbone-using-modules/请参阅router.js文件。实际上它加载'views / projects / list'和'views / users / list'依赖关系,而路由器没有知道用户将来是否需要它们。

请提前,谢谢!

这是一个有点很难在这么小的示例应用来看看,因为你必须加载初始路径上的东西 ,和装载的东西骨干通常意味着一个模型,收集和查看。 由于你链接的样本只有一个,所以是的,你几乎加载了所有东西。

在哪里开始看到“按需”功能,您可以在其中添加其他路径/视图/模型/等。 但请记住,按需加载可能是AMD / RequireJS的次要目标。 主要目标是模块化 然后,他们为您提供了许多选项,可以按需加载,也可以通过优化器捆绑所有内容

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

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;
});

有关更多背景信息,请参阅此人的文章 ,以及您可能会在其中使用它的位置。

暂无
暂无

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

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