javascript 에서 UMD 규범 의 코드 추론

6382 단어 자바 scriptUMD
1.UMD 규범
주소:https://github.com/umdjs/umd
UMD 규범 은 모든 규범 중에서 가장 못 생 긴 것 입 니 다.하나 도 없습니다!!이것 은 모듈 이 AMD 와 CommonJs 규범 을 동시에 호 환 하도록 하기 위해 나타 난 것 으로 브 라 우 저 와 서버 가 인용 하 는 제3자 라 이브 러 리 를 동시에 지원 해 야 하 는 경우 가 많다.UMD 는 한 시대 의 산물 로 각종 환경 이 최종 적 으로 ES harmony 의 통 일 된 규범 을 실현 한 후에 도 역사의 무대 에서 물 러 날 것 이다.
UMD 규범 의 구 조 는 얼핏 보면 매우 복잡 하 다.주로 이 범례 를 이해 하려 면 자바 script 기초 지식 이 필요 하기 때문이다.그의 기본 구 조 는 다음 과 같다.

(function (root, factory) {
 if (typeof define === 'function' && define.amd) {
  // AMD
  define(['jquery', 'underscore'], factory);
 } else if (typeof exports === 'object') {
  // Node, CommonJS   
  module.exports = factory(require('jquery'), require('underscore'));
 } else {
  //        (root   window)
  root.returnExports = factory(root.jQuery, root._);
 }
}(this, function ($, _) {
 //   
 function a(){}; //     ,        (   )
 function b(){}; //     ,      
 function c(){}; //     ,      

 //       
 return {
  b: b,
  c: c
 }
}));
2.소스 코드 패 러 다 임 추론
2.1 기본 구조
먼저 가장 바깥쪽 의 구 조 를 살 펴 보 자.

(function (){}());
아주 간단 합 니 다.바로 자체 집행 함수 입 니 다.이것 은 모듈 화 된 표준 이기 때문에 이 자체 실행 함수 가 최종 적 으로 하나의 모듈 을 내 보 낼 수 있다 는 것 을 의미한다.그러면 코드 의 측면 에서 볼 때 실제 적 으로 두 가지 흔히 볼 수 있 는 실현 방식 이 있다.
  • return 모듈 을 되 돌려 줍 니 다.
  • 실제 인삼 을 대상 에 전달 하고 함수 내부 에서 내 보 낼 것 을 만들어 이 대상 의 속성 에 걸 어 줍 니 다.
  • 위의 함수 체 내부 에 return 문구 가 없 는 것 을 볼 수 있 으 며,UMD 가 실현 할 때 두 번 째 방식 을 사용 한 것 으로 추정 된다.UMD 가 모듈 화 된 규범 인 이상 그 기능 은 사용 요구 에 따라 모듈 을 생산 하 는 것 이다.즉,그의 직책 포 지 셔 닝 을 모듈 공장 이 라 고 한다.우 리 는 factory 방법 을 정의 할 수 있다.이 방법 을 집행 할 때마다 모듈 로 돌아 가기 때문에 그의 기본 구 조 는 다음 과 같다.
    
    (function (factory){
     //             ,                      
     window.Some_Attr = factory();
    }(function(){
     //          
     /*
      var a,b,c
      function a1(){}
      function b1(){}
      function c1(){}
      return {
       a:a1,
       b:b1
      }
      */
    }))
    즉,우 리 는 익명 함 수 를 사용자 정의 한 다음 에 이 를 실행 함수 에 실제 인삼 으로 전달 한 다음 에 자체 실행 함수 내부 에서 형 삼 을 통 해 이 공장 방법(또는 리 셋 함수 나 콜 백 같은 호출 법 을 더 잘 알 게 될 것)을 방문 하여 전체 대상 에 간단하게 걸 면 기본 모듈 내 보 내기 가 완 료 됩 니 다.
    때때로 우 리 는 모듈 을 비 전역 적 인 환경 에 마 운 트 할 수 있 기 를 희망 합 니 다.마 운 트 대상 을 동적 으로 전송 하면 코드 를 더욱 유연 하 게 할 수 있 습 니 다.여기 서 기본 지식 과 관련 된 것 은 브 라 우 저 환경 에서 전체 대상 이 parent,top,self 세 가지 속성 을 가지 고 페이지 에

    좋은 웹페이지 즐겨찾기