SeaJS는 CommonJS 사양을 따르는 JavaScript 모듈 로딩 프레임워크입니다. 웹 개발을 위한 현대적인 모듈 로딩 도구로, 간단하고 궁극적인 모듈식 경험을 제공합니다. Sea.js는 Alibaba, Tencent 및 기타 회사가 공동으로 관리합니다.
Sea.js 사용의 이점:
Sea.js는 코드를 작성하고 구성하는 간단하고 자연스러운 방식을 추구하며 다음과 같은 핵심 기능을 가지고 있습니다.
간단하고 친숙한 모듈 정의 사양: Sea.js는 CMD 사양을 따르며 Node.js와 같은 모듈 코드를 작성할 수 있습니다.
자연스럽고 직관적인 코드 구성: 종속성 자동 로딩과 간결하고 명확한 구성을 통해 코딩을 더욱 즐길 수 있습니다.
Sea.js는 또한 개발, 디버깅 및 성능 최적화에 매우 유용하고 확장 가능한 풍부한 인터페이스를 갖춘 일반적으로 사용되는 플러그인을 제공합니다.
다음은 sea.js의 세 가지 모듈 작성 모드에 대한 소개입니다
내보내기 사용은 외부 세계에 모듈 인터페이스를 제공하는 데 사용되는 개체입니다.
define(function (require, exports, module) { var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; exports.fun1=fun1; });
내보내기 개체에 멤버를 추가하는 것 외에도 return을 사용하여 외부 세계에 인터페이스를 직접 제공할 수도 있습니다.
define(function(require,exports,module){ var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; return{ fun1:fun1 } })
모듈에 비즈니스 로직이 없고 객체만 반환하는 경우 다음과 같이 단순화할 수 있습니다.
define({ fun1 : function () { alert("模块main的fun1调用成功") } });
또 다른 방법은 module.exports를 통해 외부 세계에 통합된 인터페이스를 제공하는 것입니다.
define(function(require,exports,module){ var a = require("./init");// ./是当前目录 ../是上级目录 /是根目录 var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; exports.b=function(){ //没有任何意义,赋值无效 alert("bb") }; module.exports={ fun1:fun1 } });
exports는 module.exports에 대한 참조일 뿐입니다. 메서드 내에서 내보내기를 다시 할당하면 module.exports 값이 변경되지 않습니다. 따라서 내보내기에 값을 할당하는 것은 유효하지 않습니다. 위 메소드는 하나의 fun1만 외부에 노출합니다. 위의 b 메소드 할당은 유효하지 않으며 모듈 인터페이스를 변경하는 데 사용할 수 없습니다.
exports.async()
require.async(id||[], 콜백?)
require.async 메서드는 모듈 내부에서 비동기적으로 모듈을 로드하고 로드가 완료된 후 지정된 콜백을 실행하는 데 사용됩니다. 콜백 매개변수는 선택사항입니다.
define(function(require,exports,module){ require.async('./init',function(a){ a.write("模块main调用模块init的write方法") }); require.async(['./init',"./search"],function(a,b){ a.write("模块main调用模块init的write方法"); b.search("search模块成功引入") }); });
모듈 모듈은 현재 모듈과 관련된 일부 속성과 메서드를 저장하는 객체입니다.
1 module.id 문자열
모듈의 고유 식별자입니다.
2 module.uri 문자열
모듈 시스템의 경로 구문 분석 규칙에 따라 얻은 모듈의 절대 경로입니다. 일반적인 상황(define에서 id 매개변수를 직접 작성하지 않은 경우)에서 module.id의 값은 module.uri이며, 정확히 똑같습니다.
3개의 모듈.종속성 배열
종속성은 현재 모듈의 종속성을 나타내는 배열입니다.