8일차 - 자바스크립트 엔진


추후에 정리가 필요한 문서입니다!!!

8일차

  1. 안시옷님의 모듈 심화, 바벨

1. 모듈

1. 모듈을 정의하는 방법

1. 객체 리터럴(Object Literal)

2. 모듈 패턴(Module Pattern)

디자인 패턴 (좋은 코드들의 패턴들을 공식?정석?처럼 정해놓고 이름을 붙여놓는것)중 하나이다

객체를 어떻게 예쁘게 구조화 할 것인지

네임스페이스 : 자기만의 이름을 가지고 있는 공간?

const Module = (function() {
  // Module이라는 네임스페이스를 가졌다.
  // code
})();

Privacy & Private Method

Privacy

클로저를 이용해서 private하게 만들 수 있는데 이러한 성질을 privacy하다라고 한다.

Private method

private 메소드는 이렇게 모듈 스코프 안에서 보호되고, 이 메소드가 위치한 스코프 외부에서 다른 사용자 / 개발자 / 헤커들이 해당 메소드를 보거나, 호출할 수 없게하는 메소드입니다. 우리는 이미 모듈 스코프를 생성했습니다. 이 모듈 스코프 안에서 private 메소드를 어떻게 정의하는지 그 기본적인 형태를 먼저 보겠습니다.

모듈 객체 설정 문법

3. 노출식 모듈 패턴 (Revealing Module Pattern)

이걸 가장 많이 쓴다고 하는 듯!

2. 모듈 포맷

자바스크립트가 아닌, 다른 일반 영리한 개발자들이 만든 문법


RequireJS - AMD를 쓸때사용하는,, 짝궁,,


3. 모듈 번들러 & 모듈 로더

둘은 서로 다른것을 해주는 애들이다.

하지만 결국에는 모듈화된 파일들의 의존성을 관리하고 어떻게 실행시킬지를 구현해주는 도구들이다.


스크립트 동적 삽입이 제일 만힝 쓰인다.


모듈 번들러 vs 모듈 로더

모듈로더

런타임에 실행된다

SystemJS가 가장 많이 쓰인다

RequireJs는 AMD를 쓸 때 필요한 짝꿍. 라이브러리이다.

모듈 번들러

모듈 번들러가 더 많이 쓰인다.

빌드타임에 실행된다.

webpack, parcel, browserify 가 있는데 웹팩이 가장 많이 쓰인다.

웹팩은 기능이 엄청 많다 => 왕좌에 앉아있음

파셀은 가장 최근에 만들어졌다.

모듈을 번들링 해주는 것들!이지만 모듈 번들 말고도 많은 다른 작업을 한다.

큰 프로젝트를 진행할 때에는(모듈의 양이 클 때에는), 모듈 로더가 더 좋을 수도 있다.

Transpier(Compiler)

바~~벨~~!!


  1. 파일 간에 코드를 공유하려면 어떻게 해야 합니까?

  2. 실제 코딩하면서 클로져를 많이 사용하는가? 주로 어떤 패턴으로 사용하는가?

많이 사용한다. 모듈화할때와 변수를 프라이빗하게 쓰고 싶을 때 사용한다.
  1. “Javascript 모듈 패턴(Javascript module pattern)”이 무엇인지 설명을 해주시고, 언제 사용하는지도 말씀해주시기 바랍니다.
코딩을 할 때 기능별로 코드를 분리해서 모아놓는 것을 모듈이라고 하는데, 모듈패턴은 이 모듈을 정의하는 방법 중 하나입니다.
  1. AMD와 CommonJS는 무엇이고, 이것들에 대해 어떻게 생각하시나요?
AMD : 클라이언트에게 더 좋은 모듈