javascript 고급 모듈 화 require.js 의 구체 적 인 사용 방법

7980 단어 require.js모듈 화
본 고 는 require.js 의 구체 적 인 사용 방법 을 소개 하여 모두 에 게 공유 하고 자신 에 게 도 필 기 를 남 겼 다.
Require.js:
RequireJS 는 매우 작은 javascript 모듈 로 불 러 오 는 프레임 워 크 로 AMD(Asynchronous Module Definition,비동기 모듈 로 딩 메커니즘)규범 이 가장 잘 실현 되 는 것 중 하나 입 니 다.최신 판 requireJS 는 압축 후 14k 로 매우 가볍다 고 할 수 있다.또한 다른 프레임 워 크 와 조 화 를 이 룰 수 있 으 며,requireJS 를 사용 하면 우리 의 전단 코드 품질 을 향상 시 킬 것 입 니 다.
우선 일반적인 페이지 js 로드 를 살 펴 보 겠 습 니 다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="js/index02.js" ></script>
  </head>
  <body>
    <h1>this is a page.</h1>
  </body>
</html>
실행 결과:

이때,만약 우리 가 팝 업 상 자 를 조작 하지 않 는 다 면,페이지 는 이어서 불 러 오지 않 을 것 이 며,페이지 내용 은 없 을 것 이다.이것 은 우리 가 실현 하고 자 하 는 결과 가 아니다.
다음은 require.js 로 조작 하 겠 습 니 다.
index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script src="js/require2.1.11.js"></script>
    <script type="text/javascript">
      require(["js/index","js/index01"],function(){
        console.log(" js           ");
      },function(){
        console.log(" js           ");
      });
    </script>
  </head>
  <body>
  </body>
</html>
index.js

define(function(){
  console.log("this is a test!");
  function test(){
    console.log("haha,i am a test!");
  }
  test();
});
먼저 페이지 에 test 02.js 를 가 져 오지 않 고 requireJS 만 가 져 왔 습 니 다.그 다음 에 javascript 에서 require()방법 을 사용 하여 배열 의 인 자 를 전 달 했 습 니 다.가 져 올 js 파일 의[경로+파일 이름]을 참조 합 니 다.
현재 실행 결과:
 


이 때 페이지 의 내용 이 이미 나 타 났 음 을 알 수 있다.앞에서 우리 의 전통 적 인 것 처럼 js 가 실 행 된 후에 페이지 를 다시 불 러 오 기 를 기다 리 는 것 이 아니 라 페이지 로 딩 이 완 료 된 후에 야 js 코드 를 실행 하면 운행 효율 이 크게 향상 된다.
위의 코드 에 따라 requirejs 의 기본 API 를 분석 할 수 있 습 니 다.
requireJS 는 세 개의 변 수 를 정의 합 니 다:define,require,requirejs
  • require==requirejs,일반적으로 require 를 사용 하 는 것 이 더 간단 합 니 다.
  • define 는 하나의 모듈
  • 을 정의 하 는 데 사용 된다.
  • require 로 딩 의존 모듈(정 의 된 모듈 참조)을 불 러 오고 로 딩 후의 리 셋 함수
  • 을 실행 합 니 다.
    require 는 세 개의 인자 가 있 습 니 다.
    
    require(["js/index","js/index01"],function(){
            console.log(" js           ");
          },function(){
            console.log(" js           ");
          });
    //     :  require    ,         ,        ,           。
    //     :       ,            ,            
    //     :        ,              。     ,js     index01.js    ,           。
    네트워크 파일 불 러 오기
    이전에 우리 가 불 러 온 것 은 모두 로 컬 js 파일 이 었 습 니 다.그러나 어떤 때 는 네트워크 에 있 는 파일 을 불 러 와 야 합 니 다.그러면 어떻게 불 러 와 야 합 니까?네트워크 에 있 는 js 파일 을 어떻게 불 러 오 는 지 소개 하 겠 습 니 다.
    우 리 는 현재 jquery.js 파일 을 불 러 오 는 것 을 예 로 들 면:
    
    //  cdn   jQuery  :   http://apps.bdimg.com/libs/jquery/2.1.1/jquery.js 
    //jQuery    :      https://code.jquery.com/jquery-3.1.1.js
    //  :           ,     
    require.config({
      paths : {
        //           :jquery
        "jquery" : ["https://code.jquery.com/jquery-3.1.1"]
      }
    });
    
    //
    require(["jquery","js/test01","js/test02"],function(){
      alert("      ~~");
    },function(){
      alert("      ~~")
    });
    
    
    네트워크 에 있 는 파일 을 가 져 올 때 주의:
    1.config 방법의 매개 변 수 는 대상 입 니 다.
    2.paths 의 값 도 하나의 대상 입 니 다.
    3.우리 가 인터넷 에 있 는 라 이브 러 리 의 이름 을 짓 는 것 은 임 의적 이지 만 의미 있 는 이름 을 짓 는 것 을 권장 합 니 다.다른 사람 은 이름 을 통 해 당신 의 네트워크 자원 이 어떤 자원 인지 알 수 있 습 니 다.
    4.라 이브 러 리 의 값 은 하나의 배열 로 여러 개 를 동시에 쓸 수 있 음 을 의미 하 며 네트워크 이상 을 방지 합 니 다.
    5.특히 주의:네트워크 자원 경 로 는 접미사 이름 을 가 져 올 수 없습니다.그렇지 않 으 면 찾 을 수 없습니다.
    6.우 리 는 먼저 인터넷 에서 찾 도록 할 수 있 습 니 다.만약 에 찾 지 못 하면 현지에서 찾 아서 현지 서비스의 부담 을 줄 일 수 있 습 니 다(프로젝트 최적화 에 속 합 니 다).
    
    require.config({
      paths : {
        //    ,          
        "jquery" : ["https://code.jquery.com/jquery-3.1.1.js","js/jquery-1.8.3"]
      }
    });
    
    //
    require(["jquery","js/test01","js/test02"],function(){
      alert("      ~~");
    },function(){
      alert("      ~~")
    });
    
    
    마찬가지 로 로 로 컬 설정 을 paths 에 설정 할 수 있 습 니 다.
    
    require.config({
      paths : {
        //    ,          
        "jquery" : ["https://code.jquery.com/jquery-3.1.1","js/jquery-1.8.3"],
        //    js      ,    
        "test01" : ["js/test01"],
        "test02" : ["js/test02"]
      }
    });
    
    //
    require(["jquery","test01","test02"],function(){
      alert("      ~~");
    },function(){
      alert("      ~~")
    });
    
    
    위의 예 에서 require.config 설정 이 중복 되 었 습 니 다.모든 페이지 에 설정 을 추가 하면 매우 고상 하지 않 을 것 입 니 다.requirejs 는'메 인 데이터'라 는 기능 을 제공 합 니 다.우 리 는 먼저 main.js 를 만 듭 니 다.
    
    require.config({
      paths : {
        //    ,          
        "jquery" : ["https://code.jquery.com/jquery-3.1.1","js/jquery-1.8.3"],
        //    js      ,    
        "test01" : ["js/test01"],
        "test02" : ["js/test02"]
      }
    });
    그리고 페이지 에서 다음 방식 으로 requirejs 를 사용 합 니 다.
    
    <script type="text/javascript" src="js/require2.1.11.js" ></script>
    <script type="text/javascript" src="js/main.js" ></script>
    <script type="text/javascript">
    
      require(["jquery","t1","t2"],function(){
        alert("      ~~");
      },function(){
        alert("      ~~")
      });
    
    </script>
    
    공식 적 으로 태그 속성 을 기반 으로 하 는 방식 을 제공 합 니 다.
    
    <script data-main="js/main" src="js/require2.1.11.js" ></script>
    모든 설정 과 가 져 오기 js 를 main.js 에 두 었 습 니 다.이렇게 하면 페이지 에 하나의 탭 만 있 으 면 됩 니 다.
    코드 설명 은 다음 과 같 습 니 다.
    
    //test01.js--    js  
    define(function(){
      function test(){
        console.log("this is test01.js");
      }
      test();
    
      $("p").css("color","#DB7093");
    });
    
    
    //main.js--requirejs     
    require.config({
      paths:{
        "jquery":["jquery-1.8.3"],
        "test":["test01"]
      },
      shim:{
        "test":["jquery"]
      }
    });
    require(["test"],function(){
      console.log("success!");
    });
    
    //index.html--  ,  js        
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" data-main = "js/main" src="js/require2.1.11.js" ></script>
      </head>
      <body>
        <p>i am liyanan and this is a testn Page.</p>
      </body>
    </html>
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기