gpt4 book ai didi

javascript - Backbone 和 RequireJS 有效加载

转载 作者:数据小太阳 更新时间:2023-10-29 04:14:58 25 4
gpt4 key购买 nike

我在互联网上看了很多如何开始使用 requireJS 开发 BB 应用程序的示例,但我有点迷茫。

我认为 AMD 的目标是仅在文件确实需要时才加载它们。不早了。

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

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

此应用程序立即加载 main.js,它依赖于 app.js,它加载 routers/home.js,它需要 views/view.js,它加载 View 的模板和 models/model.js,它......并结束。

我看不出如何扩展此应用程序,例如使用更多 View ,其中 View 的依赖项(其模型、模板、集合、第三方 API 等)仅在路由器调用并初始化它们时加载。否则,在初始化应用程序时加载所有文件的地方使用 AMD 将是无稽之谈。

类似的例子在这里: http://backbonetutorials.com/organizing-backbone-using-modules/请参阅 router.js 文件。实际上,它会加载“views/projects/list”和“views/users/list”依赖项,而路由器尚不知道用户将来是否需要它们。

请指教,提前致谢!

最佳答案

在这么小的示例应用程序中有点难以看到,因为您必须在初始路由上加载something,而在Backbone中加载something通常意味着模型、一个集合和一个 View 。由于您链接的示例只有一个,所以是的,您几乎加载了所有内容。

您开始看到“按需”功能的地方是您添加其他路线/ View /模型/等的地方。但是请记住,按需加载可能是 AMD/RequireJS 的次要目标。主要目标是 modularity .然后,他们会为您提供多种选择,可以按需加载内容,也可以通过 the optimizer 将所有内容捆绑在一起。

也没有说你必须把所有的 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;
});

参见 this person's article了解更多背景知识以及下一步可能去哪里。

关于javascript - Backbone 和 RequireJS 有效加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15665819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com