Javascript 让requirejs在加载模块时运行回调
当我的模块加载时,我需要加载css,所以我使用垫片这样做:Javascript 让requirejs在加载模块时运行回调,javascript,requirejs,amd,js-amd,Javascript,Requirejs,Amd,Js Amd,当我的模块加载时,我需要加载css,所以我使用垫片这样做: function loadCss(url) { var link = document.createElement("link"); link.type = "text/css"; link.rel = "stylesheet"; link.href = url; document.getElementsByTagName("head")[0].appendChild(link); } requ
function loadCss(url) {
var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = url;
document.getElementsByTagName("head")[0].appendChild(link);
}
requirejs.config({ paths: paths, shim: {
'easyzoom': {
'deps': ['jquery'],
init: function () { loadCss('/lib/easyzoom/css/easyzoom.css'); }
}}
});
它适用于其他库,如Datatables,因为它们是非Amd模块。但对于Amd模块,requireJs不寻找垫片,因此不会提升我的init函数
有没有办法在加载模块后调用回调?或者加载一个Amd模块,因为它是一个普通的javascript文件来查找垫片?为一个合适的Amd模块定义一个
垫片(一个调用定义
)会导致未定义的行为
您可以按如下方式使用:
map: {
'*': {
easyzoom: 'easyzoom-intercept'
},
'easyzoom-intercept': {
easyzoom: 'easyzoom'
}
}
这样做的目的是指定当任何模块(“*”
)需要模块easyzoom
,则应加载模块easyzoom intercept
。但是,当easysoom intercept
想要加载easyzoom
时,应该加载模块easyzoom
。然后创建一个easyzoom intercept
模块,如下所示:
define([easyzoom], function (ez) {
loadCss('/lib/easyzoom/css/easyzoom.css');
return ez;
});
此代码将在加载easyzoom
后立即执行。谢谢!对于加载css来说,需要css是很好的,但是你的回答非常适合我的问题。