SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
현재 자바스크립트 표준은
     어디쯤?
   Javascript Standard of 2012
                                 Denny Lim <hello@iamdenny.com>
                                           <iamdenny@nhn.com>
객체
철학
문법
추상
수학
컴퓨터과학
객체지향 프로그램밍
객체지향 프로그래밍
왜 OOP를 해야 할까?
    배우기 쉽다
    유지보수 용이
    직관적인 코드
OOP의 특징
캡슐화
왜 캡슐화가 필요하지?
원하지 않는 무언가로부터 변수를 보호한다.
자바스크립트는
프로토타입 언어다
Private Data
코딩 컨벤션
fnto Hmnsedr{
ucin ua(Gne)
    /Piae
     /rvt
    ti.ng =1
     hs_Ae  ;
    ti.sedr=sedr| 'ae;
     hs_Gne   Gne | Ml'

    /Pbi
     /ulc
    ti.rwp=fnto({
     hsgoU   ucin)
         ti.ng+;
          hs_Ae+
    }
}
어디서든 접근가능
특권(Privileged) 메소드
fnto Hmnsepedr{
ucin ua(TmGne)
    /Piae
     /rvt
    vrng =1
     a Ae ,
       sedr=sepedr| 'ae;
        Gne  TmGne | Ml'

    /Piiee Mto
     /rvlgd ehd
    ti.rwp=fnto({
     hsgoU    ucin)
         ng+;
          Ae+
    }
}
일부 접근가능
모듈 패턴
모듈 패턴
fnto Hmnsepedr{
ucin ua(TmGne)
    /Piae
     /rvt
    vrng =1
     a Ae ,
       sedr=sepedr| 'ae;
        Gne  TmGne | Ml'

    /Pbi
     /ulc
    rtr {
     eun
         goU :fnto({
          rwp  ucin)
              ng+;
              Ae+
         }
    }
}
접근 가능
장점
쉽다
Private Data가 안전하다
단점
상속이 어렵다.
대형 프로젝트
 수많은 모듈
 복잡한 의존성
수많은 모듈
파일 하나에 모듈 하나
많은 파일들에 대한 이슈
 성능 이슈
 비동기 로딩
복잡한 의존성
불러올 모듈의 순서
수동으로 순서를 지정하기 힘듬
해결책은?
어렵지 않다.
다만, 표준이 없을 뿐.
현재 자바스크립트 표준은 어디쯤
CommonJS APIs
   Binary
   Console
   Encoding
   Filesystem
   IO
   Modules
   Packages
   Promises
CommonJS Modules
 Modules/1.0 : Node.js
 Modules/1.1
 Modules/1.1.1
현재 자바스크립트 표준은 어디쯤
웹서버 제작
vrht =rqie'tp)
a tp eur(ht';
ht.raeevrfnto (e,rs {
tpcetSre(ucin rq e)
 rswieed20 {CnetTp' 'etpan};
  e.rtHa(0, 'otn-ye: tx/li')
 rsed'el Wrdn)
  e.n(Hlo ol';
}.itn13,'2...';
)lse(37 17001)
cnoelg'evrrniga ht:/2...:37';
osl.o(Sre unn t tp/1700113/)
Arduino
breakout.js를 이용한 예제




     http://localhost:8888
AMD
Asychronous Module Definition
dfn(d,dpnece? fcoy;
eiei? eednis, atr)
사용법
dfn(
eie
     'con'
      acut,
     [srie,'usb]
      'evc' pbu',
     fnto(evc,pbu)
      ucinsrie usb{
          / PiaeCd
           / rvt oe

         / epr pbi AI
          / xot ulc Ps
         rtr {
          eun
              sgI :fnto({,
              inn   ucin)}
              sgOt:fnto( {,
              inu    ucin) }
              gtae:fnto( {,
              eNm    ucin) }
              stae:fnto( {
              eNm    ucin) }
         }
     }
);
다른 방법
(ucin)
fnto({
    / PiaeCd
     / rvt oe

      eprs={
       xot
           sgI :fnto({,
            inn  ucin)}
           sgOt:fnto( {,
            inu  ucin) }
           gtae:fnto( {,
            eNm  ucin) }
           stae:fnto( {
            eNm  ucin) }
      };

      dfn(acut,fnto({
       eie'con' ucin)
           rtr eprs
            eun xot;
      }
});
()
Jindo & jQuery
dfn(jno,[,fnto( {eunjno})
eie'id' ] ucin) rtr id; ;




dfn(jur' [,fnto( {eunjur; )
eie'qey, ] ucin) rtr Qey} ;
RequireJs
RequireJS
AMD 구현 by James Burke
비동기 로딩
2.0.5
사용법
<cittp=tx/aacit sc"eur.s>/cit
srp ye"etjvsrp" r=rqiej"<srp>




<cittp=tx/aacit sc"anj"<srp>
srp ye"etjvsrp" r=mi.s>/cit
main.js
rqie[ap] fnto(p)
eur('p', ucinap{
    apii(;
     p.nt)
};
)
app.js
dfn('i/con' 'i/esin]
eie[lbacut, lbssto',
    fnto(con,ssin{
     ucinacut eso)
         / 내부 코드
          /

         rtr {
          eun
              ii :fnto({
              nt  ucin)}
         }
     }
);
현재 자바스크립트 표준은 어디쯤
장점
클로벌 스코프 문제 해결
모든 것은 모듈안에서 작동
커피스크립트로도 컴파일 가능
플러그인을 지원함
단점
모듈 로딩 실패시 디버깅이 어렵다.
 잘못된 모듈 경로 설정
 플러그인 에러
여전히 풀리지 않은 문제
    수많은 모듈들
    수많은 파일들
    수많은 요청들
    성능 저하
Gracias
 BY Denny Lim
현재 자바스크립트 표준은 어디쯤

Más contenido relacionado

Destacado

JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)지수 윤
 
9주 dom & event advanced 실습
9주  dom & event advanced 실습9주  dom & event advanced 실습
9주 dom & event advanced 실습지수 윤
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsMandi Walls
 
Javascript Test Double Sinon.js
Javascript Test Double Sinon.jsJavascript Test Double Sinon.js
Javascript Test Double Sinon.js우영 주
 
비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기jeong seok yang
 
모던자바의 역습
모던자바의 역습모던자바의 역습
모던자바의 역습DoHyun Jung
 
PHP 함수와 제어구조
PHP 함수와 제어구조PHP 함수와 제어구조
PHP 함수와 제어구조Yoonwhan Lee
 
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP FrameworkInseok Lee
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자Young Min Shin
 
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)Chang-Hwan Han
 

Destacado (11)

JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)
 
9주 dom & event advanced 실습
9주  dom & event advanced 실습9주  dom & event advanced 실습
9주 dom & event advanced 실습
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
 
Javascript Test Double Sinon.js
Javascript Test Double Sinon.jsJavascript Test Double Sinon.js
Javascript Test Double Sinon.js
 
비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기비전공자의 자바스크립트 도전기
비전공자의 자바스크립트 도전기
 
모던자바의 역습
모던자바의 역습모던자바의 역습
모던자바의 역습
 
PHP 사용하기
PHP 사용하기PHP 사용하기
PHP 사용하기
 
PHP 함수와 제어구조
PHP 함수와 제어구조PHP 함수와 제어구조
PHP 함수와 제어구조
 
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
 
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)
 

Similar a 현재 자바스크립트 표준은 어디쯤

Gpg gems1 1.3
Gpg gems1 1.3Gpg gems1 1.3
Gpg gems1 1.3david nc
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요Yongho Ha
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요KTH
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호KTH, 케이티하이텔
 
Clean code
Clean codeClean code
Clean codebbongcsu
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSCirculus
 
이산치 과제7
이산치 과제7이산치 과제7
이산치 과제7mil23
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdfkd19h
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdfjinwookhong
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기zupet
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개Dong Jun Kwon
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDAyyooooon
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요NAVER D2
 
코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기Yong Hoon Kim
 
Android+init+process
Android+init+processAndroid+init+process
Android+init+processHong Jae Kwon
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013Esun Kim
 

Similar a 현재 자바스크립트 표준은 어디쯤 (20)

Erlang
ErlangErlang
Erlang
 
Gpg gems1 1.3
Gpg gems1 1.3Gpg gems1 1.3
Gpg gems1 1.3
 
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
2011 H3 컨퍼런스-파이썬으로 클라우드 하고 싶어요
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
H3 2011 파이썬으로 클라우드 하고 싶어요_분산기술Lab_하용호
 
Init to systemd
Init to systemdInit to systemd
Init to systemd
 
Clean code
Clean codeClean code
Clean code
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JS
 
이산치 과제7
이산치 과제7이산치 과제7
이산치 과제7
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDA
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
 
Introduce php7
Introduce php7Introduce php7
Introduce php7
 
코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기코드리뷰 짝 매칭 프로그램 구현기
코드리뷰 짝 매칭 프로그램 구현기
 
Android+init+process
Android+init+processAndroid+init+process
Android+init+process
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
 
자구2번
자구2번자구2번
자구2번
 

현재 자바스크립트 표준은 어디쯤