New*_*oma 3 javascript jquery requirejs
我需要一些帮助,只需要在需要时使用requireJS加载模块
这是我的main.js
require(['jquery', 'path/somemodule'],
function($, somemodule) {
$(document).ready(function() {
somemodule.init()
})
})
Run Code Online (Sandbox Code Playgroud)
并在somemodule.js
define(['jquery', 'path/someothermodule'], function ($, someothermodule) {
"use strict";
var somemodule;
somemodule = {
init: function () {
someothermodule.init()
}
}
return somemodule;
)}
Run Code Online (Sandbox Code Playgroud)
现在somemodule.js和someothermodule.js被加载到所有页面上.如何在需要时才加载它?
当您需要module1中的module2使用标准的define()语法时,module1将不会加载/运行,直到module2完全加载.看起来像这样:
// inside module1
define(['module2'], function(mod2) {
// we don't get here until AFTER module2 has already been loaded
});
Run Code Online (Sandbox Code Playgroud)
lazy-load module2的替代方案如下所示:
// inside module1
define([], function() {
require(['module2'], function(mod2) {
// we don't get here until AFTER module2 has already been loaded
});
// but we DO get here without having loaded module2
});
Run Code Online (Sandbox Code Playgroud)
现在你必须仔细编程,以确保不会遇到任何异步问题.
在您的情况下,您可以修改main.js文件
require(['jquery'],
function($) {
// jquery is loaded, but somemodule has not
if(thisPageNeedsSomeModule) {
require(['path/somemodule'],
function(somemodule) {
// now somemodule has loaded
$(document).ready(function() {
somemodule.init()
})
});
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3266 次 |
| 最近记录: |