我有一个很大的应用程序,它使用Backbone + vanilla AMD模块。通常我会用一个笨拙的任务来缩小一切,但这是特定的场景。把它想象成一个窗口管理器。
此应用程序将
是否有一种模式可以缩小WindowManagerApp和每个demo +用户应用程序,但在页面加载时只能加载WindowManagerApp并使用Require.js提供的正常异步机制加载其他应用程序?
我们的理由是,并非所有用户都会使用他们可用的所有应用,因此我们不想缩小并为所有用户提供服务(是的,可能只有几MB)
答案 0 :(得分:1)
您可以使用嵌套需求创建多个缩小图层并延迟加载应用。以下只是嵌套需求的一个示例,而不是您应该如何执行此操作。
使用RequireJS' example build file,请注意每个"模块"是一个构建层。
modules: [
{
name: "WindowManagerApp"
},
{
name: "demoLayer",
include: ["demo/apps1", "demo/apps2"],
exclude: ["WindowManagerApp"]
},
{
name: "userLayer",
include: ["user/apps1", "user/apps2"],
exclude: ["WindowManagerApp"]
}]
您可以使用exclude
值创建多个图层,确保它们不会在其依赖项中重叠。
然后,您可以使用嵌套需求加载其他图层,然后加载特定应用
require(["WindowManagerApp","require"], function(manager, require){
manager.init();
// ...
var loader = {
loadDemos: function(){
require(["require", "demoLayer"], function(require){
require(["demo/apps1"], function(app1){
// Do your stuff
}
}
}
}
});
在致电loader.loaderDemos()
之前,演示层不会加载。