Из исходного кода require.js (строка 1902):
/**
* The function that handles definitions of modules. Differs from
* require() in that a string for the module should be the first argument,
* and the function to execute after dependencies are loaded should
* return a value to define the module corresponding to the first argument's
* name.
*/
define()
Функция принимает два дополнительных параметра (строки , которые представляют собой идентификатор модуля и массив необходимых модулей) и один необходимый параметр (метод фабрики).
Возвращение фабричного метода ДОЛЖНО возвращать реализацию для вашего модуля (так же, как это делает Шаблон модуля ).
require()
Функция не должна возвращать реализацию нового модуля.
Используя, define()
вы спрашиваете что-то вроде: «запустите функцию, которую я передаю в качестве параметра, и присвойте все, что возвращает идентификатору, который я передаю, но перед этим проверьте, загружены ли эти зависимости» .
Если require()
вы говорите что-то вроде «функция, которую я передаю, имеет следующие зависимости, проверьте, загружены ли эти зависимости перед ее запуском» .
В этой require()
функции вы используете определенные вами модули, чтобы быть уверенными, что модули определены, но вы не определяете новые модули там.