gpt4 book ai didi

javascript - 有 requirejs 在加载模块时运行回调

转载 作者:行者123 更新时间:2023-11-29 10:11:36 24 4
gpt4 key购买 nike

我需要在加载我的模块时加载 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);
}

requirejs.config({ paths: paths, shim: {
'easyzoom': {
'deps': ['jquery'],
init: function () { loadCss('/lib/easyzoom/css/easyzoom.css'); }
}}
});

它适用于其他库,例如 Datatables,因为它们是非 Amd 模块。但是对于 Amd 模块,requireJs 不会寻找垫片,因此不会引发我的 init 函数。

有没有办法在模块加载后调用回调?或者加载一个 Amd 模块,因为它是一个普通的 javascript 文件来查找垫片?

最佳答案

为适当的 AMD 模块(调用 define 的模块)定义 shim 会导致未定义的行为。

你可以做的是使用 map如下:

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 加载后立即执行。

关于javascript - 有 requirejs 在加载模块时运行回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32417570/

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