프로그래밍 언어/HTML,CSS,JS

CommonJS, AMD 및 RequireJS 간의 관계

Rateye 2021. 11. 8. 16:14
728x90
반응형
질문 : CommonJS, AMD 및 RequireJS 간의 관계?

나는 많이 읽은 후에도 CommonJS, AMDRequireJS 에 대해 여전히 매우 혼란 스럽습니다.

CommonJS (이전의 ServerJS )는 언어가 브라우저 외부에서 사용될 때 일부 JavaScript 사양 (예 : 모듈)을 정의하는 그룹이라는 것을 알고 있습니다. CommonJS 모듈 사양에는 Node.js 또는 RingoJS 와 같은 구현이 있습니다.

CommonJS , AMD ( Asynchronous Module Definition ) 및 RequireJS 간의 관계는 무엇입니까?

RequireJS 는 CommonJS 모듈 정의의 구현입니까? 그렇다면 AMD 는 무엇입니까?

답변

RequireJS 는 AMD API (소스)를 구현합니다.

CommonJS 는 모듈 내용을 정의 exports 객체의 도움으로 모듈을 정의하는 방법입니다. 간단히 말해서 CommonJS 구현은 다음과 같이 작동 할 수 있습니다.

// someModule.js
exports.doSomething = function() { return "foo"; };

//otherModule.js
var someModule = require('someModule'); // in the vein of node    
exports.doSomethingElse = function() { return someModule.doSomething() + "bar"; };

기본적으로 CommonJS는 종속성을 가져 오기 require() exports 변수 및 요구하는 데 사용되는 모듈 식별자 (이 모듈과 관련하여 해당 모듈의 위치를 설명 함)가 필요함을 지정합니다. 종속성 ( 소스 ). CommonJS에는 언급 한 Node.js를 포함한 다양한 구현이 있습니다.

CommonJS는 브라우저를 염두에두고 특별히 설계되지 않았기 때문에 브라우저 환경에 잘 맞지 않습니다 ( 실제로 이에 대한 소스가 없습니다 . RequireJS 사이트를 포함하여 모든 곳에서 그렇게 말합니다.) 비동기 로딩 등으로 할 수 있습니다.

반면에 RequireJS는 브라우저 환경에 맞게 설계된 AMD를 구현합니다 ( source ). 분명히 AMD는 CommonJS Transport 형식의 스핀 오프로 시작하여 자체 모듈 정의 API로 발전했습니다. 따라서 둘 사이의 유사점. AMD의 새로운 기능은 모듈이로드되기 전에 종속성을 선언 할 수 있도록하는 define() 예를 들어 정의는 다음과 같습니다.

define('module/id/string', ['module', 'dependency', 'array'], 
function(module, factory function) {
  return ModuleContents;  
});

따라서 CommonJS와 AMD는 구현이 다르지만 둘 다 동일한 출처에서 온 JavaScript 모듈 정의 API입니다.

  • AMD 는 모듈 종속성의 비동기로드를 지원하기 때문에 브라우저에 더 적합합니다.
  • RequireJS 는 AMD 의 구현이며 동시에 CommonJS 의 정신을 유지하려고 노력합니다 (주로 모듈 식별자에서).

더 많은 것을 혼동하기 위해 RequireJS는 AMD 구현이면서 CommonJS 래퍼를 제공하므로 CommonJS 모듈을 RequireJS와 함께 사용하기 위해 거의 직접 가져올 수 있습니다.

define(function(require, exports, module) {
    var someModule = require('someModule'); // in the vein of node    
      exports.doSomethingElse = function() { return someModule.doSomething() + "bar"; };
});

나는 이것이 일을 명확히하는 데 도움이되기를 바랍니다!

출처 : https://stackoverflow.com/questions/16521471/relation-between-commonjs-amd-and-requirejs
728x90
반응형