[javascript] JavaScript에서 ‘정의’는 무엇입니까?

나는 이것에 관한 문서를 찾기 위해 높고 낮게 검색했지만 어디에서나 찾을 수는 없습니다.

Aloha를 사용하고 있으며 사이드 바 프로토 타입을 사용하여 다른 플러그인 기능에 연결된 새로운 사이드 바를 만들고 싶습니다.

그들의 sidebar.js는 이것으로 시작하지만, 나는 그것이 무엇을 의미하는지 설명하는 문서를 찾을 수는 없습니다.

define( [
    'aloha/core',
    'aloha/jquery',
    'aloha/selection'
], function (Aloha, jQuery, Selection, Plugin) {

그런 다음, 함수의 무리를 정의하는 래퍼에서 일어나는 때문에 vars일부 proptotypes– 내가 막 주위에 내 머리를 얻을 수있는 …

그 말은 무엇이며 어디에서 설명을 찾을 수 있습니까?



답변

전체 스크립트를 보지 않고도 확실하게 말할 수는 없지만 defineRequireJS함수 , 특히 해당 함수의 ” 종속성으로 정의 “형식 일 가능성이 높습니다 . “모듈”을 정의하는 데 사용됩니다.

모듈은 전역 네임 스페이스를 오염시키지 않는 범위가 지정된 개체를 정의한다는 점에서 기존 스크립트 파일과 다릅니다. 전역 객체를 참조 할 필요없이 해당 종속성을 명시 적으로 나열하고 해당 종속성을 처리 할 수 ​​있지만 대신 모듈을 정의하는 함수에 대한 인수로 종속성을받습니다.

그리고 “종속성으로 정의”형식은 define다음과 같이 설명됩니다.

모듈에 종속성이있는 경우 첫 번째 인수는 종속성 이름의 배열이어야하고 두 번째 인수는 정의 함수 여야합니다. 모든 종속성이로드되면 모듈을 정의하기 위해 함수가 호출됩니다. 함수는 모듈을 정의하는 객체를 반환해야합니다.


답변

이것은 모듈을 작성하기위한 AMD 패턴입니다. AMD는 모듈을 commonJS가 아닌 비동기 적으로 가져와야 할 때 비동기 모듈 정의를 나타냅니다.

define(['module1', 'module2'], function(module1, module2) {
  console.log(module1.sayHi());
});

Define은 일련의 종속성을 취하고 모든 차단이 비 블로킹 방식으로 백그라운드 (비동기)에로드되면 콜백을 호출하여 인수 (이 경우 종속성)를 수락합니다.

주목해야 할 또 다른 사항은 해당 모듈 각각은 “define”키워드를 사용하여 정의해야한다는 것입니다. 예를 들어 module1은 다음과 같이 정의됩니다.

define([], function() {

  return {
    sayHi: function() {
      console.log('Hi Hi');
    },
  };
});

이 모듈 작성 방법 (AMD)을 사용하면 브라우저와의 호환성을 염두에두고 (nodeJS와 같은 require () 필요 없음) 객체, JSON 등을 포함한 많은 형식을 정의 할 수 있으며, 예를 들어 commonJS는 모듈이 객체가되어야합니다.

AMD는 자체 단점을 가지고 있음을 명심하십시오. 이것이 누군가를 돕기를 바랍니다.


답변