RequireJS

#Tech./JS 2017. 3. 2. 15:19

RequireJS Site : http://requirejs.org/


RequireJS 란? 

JavaScript 파일 및 모듈 로더로 코드의 속도와 품질 향상을 기대할 수 있다고 한다.

JS 파일 단위로 모듈을 구성하여 전역 변수의 사용을 없애고, 실행 함수에서 의존성 있는 모듈을 명시적으로 지정하여 비동기 환경에서의 스크립트 로드 오류를 줄일 수 있다.(지정된 모듈이 우선 로드 되고 함수가 실행되는 구조이다.)


RequireJS 사용순서

1) RequireJS Script 불러오기

// require.js 로드 후, data-main 항목의 JS파일이 로드된다.
<script data-main="js/require/main" src="js/require.js"></script>

2) 모듈 작성 - define

// 의존성 모듈을 배열의 형태로 나열되며 생략이 가능하다.
// 함수의 매개변수는 의존성 모듈을 순서대로 나열하여 참조할 수 있다.
define([ -- 의존성 모듈 주입 -- ], function( -- 주입된 의존성 모듈의 매개변수 -- ){
    return 오브젝트;
});

// Singleton Type
define(function(){
    return {
        plus : function(a, b){
            return (a + b);
        },
        minus : function(a, b){
            return (a - b);
        }
    };
});

// Instance Type
define(function(){
    function Calc(name){
        this.name = name;
    };
    Calc.prototype.getName = function(){
        return this.name;
    };
    Calc.prototype.plus = function(a, b){
        return (a + b);
    };
    Calc.prototype.minus = function(a, b){
        return (a - b);
    };
});

3) 환경 설정 - requirejs.config

requirejs.config({
    baseUrl : '자바스크립트 기본폴더 경로',
    paths : {
        /*
         * --- 사용 예 ---
         * '모듈 명' : '파일의 경로'
         *
         * 모듈 명은 이후에 의존성 항목에서 해당 모듈을 지칭하는 용도로 사용된다. 
         * 경로는 baseUrl 항목의 상대경로 또는 웹 URL(http:// ..)로 지정할 수 있다.
         */
        'jquery' : 'jquery-2.1.1.min',
        'handlebars' : 'handlebars-v4.0.5',
        'calc' : 'require/calc',
        'calc2' : 'require/calc2'
    },
    shim : {
        /*
         * 외부 라이브러리나 객체를 모듈로 변환하는 옵션
         *
         * --- 사용 예 ---
         * '모듈 명' : {
         *     deps : [ -- 의존성 모듈 주입 -- ]
         *     exports : '모듈의 리턴 값'
         * }
         *
         * --- 변환 예 ---
         * define('모듈 명', [ -- 의존성 모듈 주입 -- ], function( -- 주입된 의존성 모듈의 매개변수 -- ){
         *     return window['모듈의 리턴 값'];
         * });
         */
        'jquery' : {
            exports : '$'
        }
    }
});

4) 기능 구현 - requirejs

requirejs([ -- 의존성 모듈 주입 -- ], function( -- 주입된 의존성 모듈의 매개변수 -- ){
    // 실행코드 삽입
});

requirejs(['jquery', 'calc', 'calc2'], function(jQuery, calc, calc2){
	var result = calc.plus(5, 10);
	result = calc.minus(result, 1);

	var cal01 = new calc2(1);
	var cal02 = new calc2(2);
	
	result = cal01.plus(100, 10);
	result = cal01.minus(result, 10);
	
	result = cal02.plus(200, 10);
	result = cal02.minus(result, 10);
});
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기