RequireJS не имеет встроенной функции выгрузки, но ее можно добавить, возможно, в качестве дополнительной части, которую вы можете встроить в нее. Если вы хотели бы иметь эту функцию, не стесняйтесь предлагать ее в списке рассылки или в виде GitHub выпуска .
Если вы хотите поэкспериментировать, чтобы выяснить, помогает ли это в вашей ситуации, вам нужно сделать следующее:
1) Удалить определенный модуль из кэша модуля RequireJS. Если вы не используете поддержку многоверсии, вы можете сделать что-то вроде:
var context = require.s.contexts['_'];
delete context.defined[moduleName];
delete context.specified[moduleName];
delete context.loaded[moduleName];
2) Затем вы можете попробовать удалить тег script, чтобы увидеть, поможет ли это:
var scripts = document.getElementsByTagName('script');
for (var i = scripts.length - 1; i >= 0; i--) {
var script = scripts[i];
if (script.getAttribute('data-requiremodule') === moduleName) {
script.parentNode.removeChild(script);
break;
}
}
Обратите внимание, что модуль может не собираться мусором, если другой модуль удерживает его через функцию замыкания () {}, которая определяет этот другой модуль. Этот другой модуль тоже нужно будет удалить.
Вы можете попытаться ограничить это влияние, не передавая модуль в качестве аргумента функции, а просто используйте require ("somemodule") внутри определения функции всякий раз, когда вы хотите получить зависимые модули, и не держитесь за которые требуют возвращаемого значения слишком долго.
Кроме того, в приведенном выше примере для модулей, которые для определения себя используют require.def, он должен выглядеть следующим образом (без суффикса .js):
require(["somemodule"], function(m) { m.run(); } );