Подтвердить что ты не робот

Requirejs alias/remap

В настоящее время я интегрирую внешний код в наше приложение. Часть процесса, я должен заменить один из их модулей requirejs нашими.

Очевидно, я не могу изменить свой код, иначе мне пришлось бы делать изменения при каждом обновлении. Что я могу сделать, так это изменить main.js(main файл requirejs).

Вот примерно, что у них есть:

requirejs.config({
    packages: [
        'beerpong'
    ]
});

Итак, у них есть пакет beerpong, с некоторыми модулями. Среди этих модулей есть файл beer.js. Это может потребоваться с помощью require('beerpong/beer').

Кроме того, у меня есть файлы в отдельной папке, скажем vodkapong/beersubstitute. Я бы хотел, чтобы всякий раз, когда кто-то require('beerpong/beer'), этот requirejs на самом деле служит ему вместо моего vodkapong/beersubstitute.

tl; dr: как я могу переназначить существующий модуль для использования моего модуля?

PS: К сожалению, мы на самом деле не пишем игру в пивной бар... Возможно, однажды...

4b9b3361

Ответ 1

Вы можете использовать параметр карты . Он может переназначить модуль AMD для определенного модуля или для всех модулей с именем "*". Примером может служить:

require.config({
    map: {
        "*": {
            "beerpong/beer": "vodkapong/beersubstitute"
        }
    },
    ...
});

Ответ 2

Вы можете сделать что-то вроде этого -

require.config({
    paths: {
        jquery_ui_scrollbar: 'libs/jquery/jquery.custom-scrollbar'
    }
});
require(['dependency1', 'dependency2'], function (dep1, dep2) {
   // code goes here
});

И в своем вызове define вы можете сделать это -

define(['jquery_ui_scrollbar'], function(scrollbar) {});