Przeczytałem dokument requirejs z tutaj API
requirejs.config({
shim: {
'backbone': {
//These script dependencies should be loaded before loading
//backbone.js
deps: ['underscore', 'jquery'],
//Once loaded, use the global 'Backbone' as the
//module value.
exports: 'Backbone'
},
'underscore': {
exports: '_'
},
'foo': {
deps: ['bar'],
exports: 'Foo',
init: function (bar) {
//Using a function allows you to call noConflict for
//libraries that support it, and do other cleanup.
//However, plugins for those libraries may still want
//a global. "this" for the function will be the global
//object. The dependencies will be passed in as
//function arguments. If this function returns a value,
//then that value is used as the module export value
//instead of the object found via the 'exports' string.
return this.Foo.noConflict();
}
}
}
});
ale nie dostaję w tym części podkładki . dlaczego powinienem używać podkładki i jak skonfigurować, czy mogę uzyskać więcej wyjaśnień
czy ktoś może wyjaśnić na przykładzie, dlaczego i kiedy powinniśmy używać podkładki. dzięki.
Underscore
iBackbone
tutaj używamy jak normalnie, coshim
w tym przypadku? Czy mogę użyćrequire( function() { _.extend({}); })
? Czy to rozumie_
?Zgodnie z dokumentacją API RequireJS, podkładka pozwala
- Konfigurowanie zależności
Powiedzmy, że masz 2 moduły javascript (modułA i modułB), a jeden z nich (modułA) zależy od drugiego (modułB). Oba są niezbędne dla twojego własnego modułu, więc określasz zależności w require () lub define ()
Ale ponieważ wymaga podążania za AMD, nie masz pojęcia, który z nich zostanie pobrany wcześniej. Tutaj z pomocą przychodzi podkładka.
Dzięki temu modułB będzie zawsze pobierany przed załadowaniem modułu A.
- Konfiguracja eksportu
Eksport Shim mówi RequireJS, który element w obiekcie globalnym (okno, zakładając, że jesteś w przeglądarce, oczywiście) jest rzeczywistą wartością modułu. Powiedzmy, że modułA dodaje się do elementu
window
„modA” (podobnie jak jQuery i podkreślenie robi odpowiednio jako $ i _), a następnie ustawiamy wartość eksportu jako „modA”.Da RequireJS lokalne odniesienie do tego modułu. Globalny modA będzie nadal istniał na stronie.
- Niestandardowa inicjalizacja dla starszych skryptów „globalnych przeglądarki”
Jest to prawdopodobnie najważniejsza cecha konfiguracji shim, która pozwala nam dodawać skrypty „globalne przeglądarki”, „inne niż AMD” (które również nie są zgodne ze wzorcem modularnym) jako zależności w naszym własnym module.
Powiedzmy, że moduleB to zwykły stary javascript z tylko dwiema funkcjami funcA () i funcB ().
Chociaż obie te funkcje są dostępne w zakresie okna, RequireJS zaleca, abyśmy używali ich poprzez ich globalny identyfikator / uchwyt, aby uniknąć nieporozumień. Więc konfigurując podkładkę jako
Wartość zwracana przez funkcję init jest używana jako wartość eksportu modułu zamiast obiektu znalezionego za pośrednictwem ciągu znaków „export”. Umożliwi nam to użycie funcB w naszym własnym module jako
Mam nadzieję, że to pomogło.
źródło
Aby zadeklarować, musisz dodać ścieżki w requirejs.config, przykład:
źródło