나는 이것에 관한 문서를 찾기 위해 높고 낮게 검색했지만 어디에서나 찾을 수는 없습니다.
Aloha를 사용하고 있으며 사이드 바 프로토 타입을 사용하여 다른 플러그인 기능에 연결된 새로운 사이드 바를 만들고 싶습니다.
그들의 sidebar.js는 이것으로 시작하지만, 나는 그것이 무엇을 의미하는지 설명하는 문서를 찾을 수는 없습니다.
define( [
'aloha/core',
'aloha/jquery',
'aloha/selection'
], function (Aloha, jQuery, Selection, Plugin) {
그런 다음, 함수의 무리를 정의하는 래퍼에서 일어나는 때문에 vars
일부 proptotypes
– 내가 막 주위에 내 머리를 얻을 수있는 …
그 말은 무엇이며 어디에서 설명을 찾을 수 있습니까?
답변
전체 스크립트를 보지 않고도 확실하게 말할 수는 없지만 define
RequireJS 의 함수 , 특히 해당 함수의 ” 종속성으로 정의 “형식 일 가능성이 높습니다 . “모듈”을 정의하는 데 사용됩니다.
모듈은 전역 네임 스페이스를 오염시키지 않는 범위가 지정된 개체를 정의한다는 점에서 기존 스크립트 파일과 다릅니다. 전역 객체를 참조 할 필요없이 해당 종속성을 명시 적으로 나열하고 해당 종속성을 처리 할 수 있지만 대신 모듈을 정의하는 함수에 대한 인수로 종속성을받습니다.
그리고 “종속성으로 정의”형식은 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는 자체 단점을 가지고 있음을 명심하십시오. 이것이 누군가를 돕기를 바랍니다.