Когда следует использовать require() и когда использовать define()?
Я играю с requirejs в течение последних нескольких дней. Я пытаюсь понять различия между define и require.
Определить, по-видимому, разрешить разделение модулей и разрешить привязку зависимостей. Но он загружает все файлы, необходимые для начала. Пока требуется только то, что вам нужно, когда вам это нужно.
Могут ли эти два использоваться вместе и для каких целей каждый из них будет использоваться?
Ответы
Ответ 1
С define
вы регистрируете модуль в require.js, который затем может зависеть от других определений модулей или требовать операторов.
С помощью require
вы просто загружаете/используете модуль или файл javascript, который может быть загружен require.js.
Для примера рассмотрим документацию
Мое правило:
-
Определите: если вы хотите объявить модуль, другие части вашего приложения будут зависеть от.
-
Требовать: если вы просто хотите загрузить и использовать материал.
Ответ 2
Из исходного кода 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()
принимает два необязательных параметра (строку, которая представляет идентификатор модуля и массив требуемых модулей) и один требуемый параметр (метод factory).
Возврат метода factory MUST возвращает реализацию для вашего модуля (так же, как Module Pattern делает).
Функция require()
не должна возвращать реализацию нового модуля.
Используя define()
, вы спрашиваете что-то вроде "запустите функцию, которую я передаю в качестве параметра, и назначьте все, что возвращается в идентификатор, который я передаю, но прежде, убедитесь, что эти зависимости загружен".
Используя require()
, вы говорите что-то вроде "функция, которую я передаю, имеет следующие зависимости, проверьте, загружены ли эти зависимости до ее запуска".
Функция require()
- это то, где вы используете определенные модули, чтобы убедиться, что модули определены, но вы не определяете там новые модули.
Ответ 3
"определить" метод для облегчения определения модуля
а также
"require" метод обработки загрузки зависимостей
define используется для определения именованных или неназванных модулей на основе предложения с использованием следующей подписи:
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*function for instantiating the module or object*/
);
требуют, с другой стороны, обычно использовать для загрузки кода в файле JavaScript верхнего уровня или в модуле, если вы хотите динамически извлекать зависимости
Подробнее см. https://addyosmani.com/writing-modular-js/.
Ответ 4
require() и define(), которые используются для загрузки зависимостей. Существует существенное различие между этими двумя методами.
Его очень простые парни
Требовать(): метод используется для немедленной работы.
define(): метод используется для определения модулей для использования в нескольких местах (повторное использование).
Ответ 5
Общие правила:
Вы используете определение, когда вы хотите определить модуль, который будет использоваться повторно
Вы используете require для простой загрузки зависимости
//sample1.js file : module definition
define(function() {
var sample1 = {};
//do your stuff
return sample1;
});
//sample2.js file : module definition and also has a dependency on jQuery and sample1.js
define(['jquery', 'sample1'], function($,sample1) {
var sample2 = {
getSample1:sample1.getSomeData();
};
var selectSomeElement = $('#someElementId');
//do your stuff....
return sample2;
});
//calling in any file (mainly in entry file)
require(['sample2'], function(sample2) {
// sample1 will be loaded also
});
Надеюсь, это поможет вам.