모듈은 강력한 응용 프로그램의 필수 요소이며 프로젝트에서 코드 단위를 명확하게 분리하고 구성하는 데 도움이됩니다.
JS에서 모듈을 구현하는 방법 :
1. 물체 문자 그대로 표현
2. 모듈 모드
3. AMD 모듈
4. CommonJS 모듈
5.ecmascript 하모니 모듈
물체 문자 그대로
객체 리터럴은 새 연산자를 사용하여 인스턴스화 할 필요가 없지만, 시작은 블록의 시작으로 해석 될 수 있으므로 진술의 시작 부분에서 사용할 수 없습니다. 객체 밖에서, 다음 과제 명령문 인 myModule.property = "somevalue"를 사용하여 신입 회원을 객체 리터럴에 추가 할 수 있습니다.
var myModule = {myProperty : "somevalue", myConfig : {usecaching : true, language : "en"}, // 기본 메소드 myMethod : function () {// ...}, // 현재 구성을 기반으로 정보를 출력합니다. myMetHod2 : function () {console.log ( "캐싱 is :" "활성화": "비활성화"); . Console.log (this.myconfig.language); }},}; myModule.mymethod3 ({언어 : "fr", usecaching : false})객체 리터럴을 사용하면 코드를 캡슐화하고 구성하는 데 도움이됩니다.
JavaScript에서 모듈 패턴은 클래스 개념을 더 시뮬레이션하는 데 사용되며, 이는 별도의 객체가 공개/개인 메소드 및 변수를 가질 수 있으므로 전역 범위에서 특수 부품을 차단할 수 있습니다.
모듈 패턴은 클로저를 사용하여 "개인"상태 및 조직을 캡슐화합니다. 전 세계 범위로 누출을 방지하고 다른 개발자의 인터페이스와의 충돌을 방지하기 위해 공개/개인 방법과 변수를 혼합하는 방법을 제공합니다. 이 모드를 통해 공개 API 만 반환하면 다른 모든 것이 개인 폐쇄로 유지됩니다.
모듈 모드에서 폐쇄가 존재하기 때문에 선언 된 변수와 메소드는 모드 내에서만 사용할 수 있지만 반환 객체에 정의 된 변수 및 메소드는 외부 사용자가 사용할 수 있습니다.
모듈 모드 구현
var testModule = (function () {var counter = 0; return {incrementCounter : function () {return ++ counter;}, resteTcounter : function () {console.log ( "reset 이전의 카운터 값" +카운터);}}} (); // coun testModule.resetCounter ();코드의 다른 부분은 incrementCounter () 및 restCounter ()를 직접 읽을 수 없다는 것입니다. 카운터 변수는 실제로 글로벌 범위에서 완전히 분리되므로 존재가 모듈의 폐쇄로 제한되는 개인 변수처럼 작동합니다. 스코프에 액세스 할 수있는 유일한 코드는이 두 기능이기 때문입니다. 위의 방법은 네임 스페이스를 효과적으로 설정하므로 테스트 코드에서 모든 통화를 접두사해야합니다.
// 네임 스페이스, 공개 및 개인 변수를 포함하는 모듈 모드 var var var var var (function () {// private coun mypublicfunction : 함수 (bar) {myPrivateVar ++;글로벌 변수를 참조하십시오
JavaScript에는 암시 적 글로벌 변수라는 기능이 있습니다. 변수가 사용되었는지 여부에 관계없이 JavaScript 통역사는 스코프 체인을 역전하여 전체 변수의 Var 선언을 찾습니다. VAR을 찾을 수없는 경우 통역사는 변수가 전역 변수라고 가정합니다. 변수가 할당 작업에 사용되는 경우, 이전에 존재하지 않으면 통역사가 자동으로이를 생성합니다. 즉, 익명 폐쇄에서 사용하거나 글로벌 변수를 생성하기가 매우 쉽지만, 특히 코드를 읽는 사람들이 어떤 변수가 글로벌이고 로컬인지를 많이 차별화 할 때 코드를 관리하기가 어렵다는 것입니다.
다행히도 익명 기능에서는 비교적 간단한 대안을 제공 할 수 있습니다. 우리는 글로벌 변수를 매개 변수로 익명 함수로 전달하여 사용할 수 있습니다. 암시 적 글로벌 변수와 비교하여 명확하고 빠릅니다. 예를 들어 봅시다 :
// global module var myModule = (function (jq, _) {함수 privateMethod1 () {jq ( ". 컨테이너"). html (test);} return {publicmethod : function () {privatemethod1 ();}}) (jquery, _); myModule.publicMethod (); // global module var myModule = (function () {// module Object var module = {}; privatevariale = "hello"; fublatemethod () {//...} module.publicProperty = "foobar"; modublecemed =} ()} ()}} em);구현하지 않고 글로벌 변수를 선언하고 글로벌 소개의 개념을 지원할 수 있습니다.
모듈 모드에는 여전히 특정 단점이 있습니다.
1. 우리는 공공 및 민간 회원에 다르게 액세스하기 때문에 가시성을 변경하려면 실제로 해당 회원을 사용한 각 존재를 수정해야합니다.
2. 나중에 메소드에 추가 된 개인 회원에 액세스 할 수 없습니다.
3. 개인 회원을위한 자동화 된 단위 테스트를 만들 수 없으며 버그를 수정해야 할 때 추가 복잡성이 추가됩니다.
4. 개발자는 개인 방법을 쉽게 확장 할 수 없습니다
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.