define
не является специфическим для RequireJS, оно является частью спецификации AMD . Берк заметит, что RequireJS не реализует в точности то, как AMD это определяет, поскольку AMD на самом деле не учитывала браузеры.
define
не имеет анонимной функции. define
- это метод, доступный для файлов JavaScript на базе AMD для загрузки их данных. Такие библиотеки, как RequireJS, делают это доступным для вас. Конкретная реализация, вероятно, не имеет значения для вас. Поэтому я перейду к тому, что вы указали, так как это наиболее распространенный способ объявления модуля.
define(
[array]
, object
);
Массив - это список модулей, от которых зависит этот модуль. Между модулями и файлами существует отношение 1 к 1. Вы не можете иметь несколько модулей в файле или несколько файлов для одного модуля.
Объект - это модуль, который вы определяете. Это может быть что угодно, структура или функция, которая возвращает структуру. Прочитайте документы по RequireJS для получения более подробной информации.
Если объект является функцией, аргументы, переданные функции, являются модулями, перечисленными как зависимости в первом определяемом аргументе. Также важно отметить, что когда вы передаете функцию как object
, она запускается только один раз. К методам или свойствам, созданным в этом одном экземпляре, можно получить доступ в любое время, однако затем к ним могут обращаться другие модули, которые перечисляют этот модуль как зависимость.
Удачи, я рекомендую поиграть с этим и читать документы, когда вещи не имеют смысла. Документы RequireJS отлично подходят для быстрого начала работы модулей AMD.