지난 며칠 동안 requirejs를 가지고 놀았습니다. define과 require의 차이점을 이해하려고합니다.
Define은 모듈 분리를 허용하고 종속성 순서를 준수하는 것으로 보입니다. 그러나 시작하는 데 필요한 모든 파일을 다운로드합니다. 필요할 때 필요한 것만로드하면됩니다.
이 두 가지를 함께 사용할 수 있습니까? 각 목적을 위해 어떤 용도로 사용해야합니까?
답변
함께 define
하면 당신이 다음 다른 모듈의 정의에 의존하거나 문을 필요로 할 수 require.js에 모듈을 등록합니다. 함께 require
하면 “그냥”로드 / require.js에서로드 할 수있는 모듈이나 자바 스크립트 파일을 사용합니다. 예를 들어 설명서를 살펴보십시오.
내 경험 법칙 :
-
정의 : 모듈을 선언하려면 응용 프로그램의 다른 부분에 의존합니다.
-
필요 : 물건을 적재하고 사용하려는 경우.
답변
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()
함수는 두 개의 선택적 매개 변수 (모듈 ID 및 필수 모듈 배열을 나타내는 문자열)와 하나의 필수 매개 변수 (공장 방법)를 허용합니다.
팩토리 메소드의 반환은 반드시 모듈 패턴 과 같은 방식으로 모듈의 구현을 반환 해야 합니다 .
이 require()
함수는 새 모듈의 구현을 반환하지 않아도됩니다.
define()
당신을 사용하여 “매개 변수로 전달하는 함수를 실행하고 전달중인 ID에 반환 값을 할당하지만 이전에 이러한 종속성이로드되었는지 확인하십시오” 와 같은 것을 묻습니다 .
사용 require()
하면 같은 말을 “나는 통과하는 기능은 다음 종속성이를, 이러한 종속성이 그것을 실행하기 전에로드되었는지 확인” .
이 require()
기능은 모듈이 정의되었는지 확인하기 위해 정의 된 모듈을 사용하는 곳이지만 새 모듈을 정의하지는 않습니다.
답변
모듈 정의를 용이하게하기위한 “정의”방법 및 종속성 로딩을 처리하기위한 “필수”방법
define은 다음 서명을 사용하여 제안을 기반으로 명명 된 또는 명명되지 않은 모듈을 정의하는 데 사용됩니다.
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*function for instantiating the module or object*/
);
반면에 require는 일반적으로 의존성을 동적으로 가져 오려면 최상위 JavaScript 파일 또는 모듈 내에서 코드를로드하는 데 사용됩니다
자세한 내용은 https://addyosmani.com/writing-modular-js/ 를 참조하십시오.
답변
일반적인 규칙:
-
재사용 할 모듈을 정의 할 때 define을 사용합니다.
-
당신은 단순히 의존성을로드하는 데 필요합니다
//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 });
이것이 도움이되기를 바랍니다.
답변
require ()와 define ()은 모두 의존성을로드하는데 사용된다.이 두 방법에는 큰 차이가있다.
아주 간단한 녀석들
Require () : 메소드는 즉각적인 기능을 실행하는 데 사용됩니다. define () : 메소드는 여러 위치에서 재사용 할 모듈을 정의하는 데 사용됩니다 (재사용).