티스토리 뷰

정리하기/JS 관련

AMD과 common.js (UMD)

내가송 2017. 7. 10. 16:42
반응형

AMD와 Common.js는 모듈화된 코드를 로딩하는 역할을 한다. 


이 둘의 차이점은, 

모든 모듈의 로딩이 완료된 후에 실행하는 것인가 

아니면 로딩 완료 이전에 실행하는 것인가이다. 


(즉, 동기 vs 비동기의 방식의 차이)


Common.js 


모든 모듈이 로컬에 다운로드가 된 이후에 실행하는 방식이다. 

node.js에서 사용하는 방식으로

server 환경에서 외부 모듈을 가져올 때 유리한 방식이다.


var lib = require("package/lib");

function foo() {

  lib.log("hello world!");

}

 

exports.foobar = foo;


하지만 모든 모듈을 다운로드할 때까지

페이지를 동작할 수 없다는 것이 단점으로 부각되어

이를 해결하기 위해 새롭게 탄생한 방식이 AMD 방식이다. 


AMD  


비동기적으로 필요한 파일을 다운로드하는 방식으로 

client단(브라우저 환경)에서 외부 모듈을 가져올 때 유리한 방식이다. 


 define(["package/lib"], function (lib) {

 function foo() {

  lib.log("hello world!");

 }

 

 return {

   foobar : foo

 }

}



UMD


참고로 어떤 방식으로 외부 모듈을 로딩하는 것과 무관하게

각 모듈을 선언하는 방식을 UMD 방식이라고 한다. 


(function (root, factory) {

    if (typeof define === 'function' && define.amd) {

        // AMD

        define(['jquery', 'underscore'], factory);

    } else if (typeof exports === 'object') {

        // Node, CommonJS-like

        module.exports = factory(require('jquery'), require('underscore'));

    } else {

        // Browser globals (root is window)

        root.returnExports = factory(root.jQuery, root._);

    }

}(this, function ($, _) {

    //    methods

    function a(){};    //    private because it's not returned (see below)

    function b(){};    //    public because it's returned

    function c(){};    //    public because it's returned


    //    exposed public methods

    return {

        b: b,

        c: c

    }

}));


더 자세히 정리된 페이지

http://d2.naver.com/helloworld/12864

반응형

'정리하기 > JS 관련' 카테고리의 다른 글

https에서 http 호출 시 오류  (0) 2017.10.23
ssr vs csr  (0) 2017.07.24
typescript ` 구문  (0) 2017.07.04
browserify  (0) 2017.06.29
자바스크립트 객체  (0) 2017.05.28
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함