Одно основное отличие, которое раздражало меня в начале использования, заключалось в том, что define
может никогда не вызываться.
Пока в файле есть только один define
, он зарегистрирует этот модуль как доступный под этим именем файла. Однако модули define
загружаются только после того, как функция require
запрашивает каждый из них.
Определите: если вам нужен XXX, сначала загрузите эти другие вещи, а затем верните результат этой функции.
Требовать: Загрузите эти другие вещи, затем запустите эту функцию. (без "если")
Пример. Допустим, вы включили этот JS-файл на свою страницу:
// this is in company/welcomepage.js
define(['company/ui_library'],
function(uiLib) {
console.log('Welcome to {company}!');
}
);
Если это единственный файл Javascript, вы можете открыть свою страницу, и в журнале консоли ничего не будет, несмотря на то, что скрипт говорит приветствовать пользователя. Однако это изменится, если где-то на странице или в другом скрипте вы вставите следующее:
require(['company/welcomepage'], function() {
// optionally insert some other page-initialization logic here
});
Теперь страница будет отображать приветственное сообщение в консоли при загрузке.
Фактически, при наличии второго тега не было бы необходимости вручную включать welcomepage.js в качестве тега <script>
; он загрузит его из своего местоположения, как только увидит запрос и поймет, что он ему нужен.
person
Katana314
schedule
30.08.2013