-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[24/10/10-10/16] 안내 및 질문 모음집 #66
Comments
48장
49장
|
48장CommonJS와 AMD의 차이점? (김민석)
49장Babel과 Webpack을 이용한 개발 환경 구축을 실제 프로젝트에서 어떻게 활용할 수 있는가? (김민정)
Vite를 활용해서 프로젝트를 진행했는데, webpack이나 babel과 비교해서 어떤 점이 매리트가 있는지? (김주영) |
48장CommonJS와 AMD의 차이점? (김민석)로딩 방식:
주요 사용 환경:
문법:
의존성 선언:
실행 시점:
49장Babel과 Webpack을 이용한 개발 환경 구축을 실제 프로젝트에서 어떻게 활용할 수 있는가? (김민정)webpack과 babel을 사용한 리액트 프로젝트 생성 Vite를 활용해서 프로젝트를 진행했는데, webpack이나 babel과 비교해서 어떤 점이 매리트가 있는지? (김주영)정적 사이트 생성(SSG) 지원:
간단한 설정:
네이티브 ES 모듈 지원:
TypeScript 및 JSX 지원:
|
48장
49장
|
ES Module(ESM) vs CommonJSJavaScript의 모듈 시스템은 크게 ES Moduel(ESM)와 CommonJS 로 나뉜다. ES Module은 최신 Javascript 표준으로, 내가 가장 익숙한 import와 export 키워드를 사용하는 방식을 사용한다. CommonJS는 Node.js환경에서 주로 사용되며, require()와 module.exports를 사용하여 모듈을 가져오고 내보낸다.
동기 vs 비동기ESM은 브라우저 환경에서도 사용할 수 있도록 설계되어 모듈을 비동기적으로 로드한다. 반면 CommonJS는 동기적으로 모듈을 로드한다. 트리 셰이킹ESM은 정적 분석이 가능하여 트리 셰이킹이 용이하다. 반면 CommonJS는 트리 셰이킹이 어렵다. ES Module의 특징ES Module(ESM)은 최신 JavaScript 표준으로, import와 export 키워드를 사용하여 모듈을 가져오고 내보냅니다. 이는 비동기적으로 작동하며, 브라우저 환경에서도 사용될 수 있도록 설계되었습니다. ESM은 정적 분석이 가능하기 때문에, 트리 셰이킹이 용이합니다. 이는 사용되지 않는 코드를 제거하여 번들 크기를 줄이는 데 유리합니다. 왜냐하면 ESM은 모듈의 의존성을 정적으로 분석할 수 있기 때문입니다. 또한, ESM은 브라우저 환경에서 비동기 로드를 지원합니다. 이는 브라우저에서 모듈을 로드할 때 페이지 로딩 속도를 저하시키지 않기 때문에 중요합니다. ESM은 import와 export 키워드를 사용하여 모듈을 가져오고 내보냅니다. 이는 코드의 가독성을 높이고, 모듈 간의 의존성을 명확하게 합니다. 다음은 ESM의 예제 코드입니다:
CommonJS의 특징CommonJS는 Node.js 환경에서 주로 사용되는 모듈 시스템입니다. require() 함수를 사용하여 모듈을 가져오고, module.exports를 사용하여 모듈을 내보냅니다. 이는 동기적으로 작동하며, 모듈이 로드될 때까지 코드 실행이 중단됩니다. CommonJS는 동기적 로드 방식을 사용하기 때문에, 서버 사이드 렌더링과 같은 환경에서 유리합니다. 왜냐하면 서버 사이드에서는 모든 모듈이 로드된 후에야 코드가 실행되기 때문입니다. 하지만, CommonJS는 트리 셰이킹이 어렵다는 단점이 있습니다. 이는 사용되지 않는 코드를 제거하기 어렵게 만듭니다. 왜냐하면 CommonJS는 동적 로드를 지원하기 때문입니다. 또한, CommonJS는 브라우저 환경에서 사용하기 어렵습니다. 브라우저에서는 비동기 로드가 필수적이기 때문입니다. 따라서, 브라우저 환경에서는 ES Module을 사용하는 것이 더 적합합니다. 다음은 CommonJS의 예제 코드입니다:
CommonJS와 ES Module의 통합최근에는 CommonJS와 ES Module을 모두 지원하는 라이브러리가 많이 등장하고 있습니다. 이는 두 모듈 시스템의 장점을 모두 활용할 수 있도록 합니다. 왜냐하면 각 모듈 시스템이 제공하는 기능과 성능이 다르기 때문입니다. Webpack과 같은 번들러를 사용하면, CommonJS와 ES Module을 모두 지원하는 번들을 생성할 수 있습니다. 이는 프로젝트의 호환성을 높이고, 다양한 환경에서 사용할 수 있도록 합니다. 다음은 Webpack을 사용하여 CommonJS와 ES Module을 모두 지원하는 번들을 생성하는 예제입니다:
위 예제에서는 Webpack을 사용하여 CommonJS와 ES Module을 모두 지원하는 번들을 생성합니다. libraryTarget을 'umd'로 설정하여, UMD(Universal Module Definition) 형식으로 번들을 생성합니다. 이는 CommonJS와 ES Module을 모두 지원합니다. 따라서, 프로젝트의 요구사항과 환경에 따라 적절한 모듈 시스템을 선택하고, 필요에 따라 두 모듈 시스템을 통합하여 사용할 수 있습니다. 왜냐하면 각 모듈 시스템이 제공하는 기능과 성능이 다르기 때문입니다. 이 글에서는 CommonJS와 ES Module의 통합 방법에 대해 알아보았습니다. # ES Module(ESM) vs CommonJSJavaScript의 모듈 시스템은 크게 ES Moduel(ESM)와 CommonJS 로 나뉜다. ES Module은 최신 Javascript 표준으로, 내가 가장 익숙한 import와 export 키워드를 사용하는 방식을 사용한다. CommonJS는 Node.js환경에서 주로 사용되며, require()와 module.exports를 사용하여 모듈을 가져오고 내보낸다.
동기 vs 비동기ESM은 브라우저 환경에서도 사용할 수 있도록 설계되어 모듈을 비동기적으로 로드한다. 반면 CommonJS는 동기적으로 모듈을 로드한다. 트리 셰이킹ESM은 정적 분석이 가능하여 트리 셰이킹이 용이하다. 반면 CommonJS는 트리 셰이킹이 어렵다. 정적 분석 [Tree Shaking](https://www.notion.so/Tree-Shaking-7ca0247e8d0743dfb20a7221da7fa4e5?pvs=21) ES Module의 특징ES Module(ESM)은 최신 JavaScript 표준으로, import와 export 키워드를 사용하여 모듈을 가져오고 내보냅니다. 이는 비동기적으로 작동하며, 브라우저 환경에서도 사용될 수 있도록 설계되었습니다. ESM은 정적 분석이 가능하기 때문에, 트리 셰이킹이 용이합니다. 이는 사용되지 않는 코드를 제거하여 번들 크기를 줄이는 데 유리합니다. 왜냐하면 ESM은 모듈의 의존성을 정적으로 분석할 수 있기 때문입니다. 또한, ESM은 브라우저 환경에서 비동기 로드를 지원합니다. 이는 브라우저에서 모듈을 로드할 때 페이지 로딩 속도를 저하시키지 않기 때문에 중요합니다. ESM은 import와 export 키워드를 사용하여 모듈을 가져오고 내보냅니다. 이는 코드의 가독성을 높이고, 모듈 간의 의존성을 명확하게 합니다. 다음은 ESM의 예제 코드입니다: import { sayHello } from './moduleA';
sayHello();
export function sayHello() {
console.log('Hello from ES Module');
} CommonJS의 특징CommonJS는 Node.js 환경에서 주로 사용되는 모듈 시스템입니다. require() 함수를 사용하여 모듈을 가져오고, module.exports를 사용하여 모듈을 내보냅니다. 이는 동기적으로 작동하며, 모듈이 로드될 때까지 코드 실행이 중단됩니다. CommonJS는 동기적 로드 방식을 사용하기 때문에, 서버 사이드 렌더링과 같은 환경에서 유리합니다. 왜냐하면 서버 사이드에서는 모든 모듈이 로드된 후에야 코드가 실행되기 때문입니다. 하지만, CommonJS는 트리 셰이킹이 어렵다는 단점이 있습니다. 이는 사용되지 않는 코드를 제거하기 어렵게 만듭니다. 왜냐하면 CommonJS는 동적 로드를 지원하기 때문입니다. 또한, CommonJS는 브라우저 환경에서 사용하기 어렵습니다. 브라우저에서는 비동기 로드가 필수적이기 때문입니다. 따라서, 브라우저 환경에서는 ES Module을 사용하는 것이 더 적합합니다. 다음은 CommonJS의 예제 코드입니다: const moduleA = require('./moduleA');
moduleA.sayHello();
module.exports = {
sayHello: function() {
console.log('Hello from CommonJS');
}
}; CommonJS와 ES Module의 통합최근에는 CommonJS와 ES Module을 모두 지원하는 라이브러리가 많이 등장하고 있습니다. 이는 두 모듈 시스템의 장점을 모두 활용할 수 있도록 합니다. 왜냐하면 각 모듈 시스템이 제공하는 기능과 성능이 다르기 때문입니다. Webpack과 같은 번들러를 사용하면, CommonJS와 ES Module을 모두 지원하는 번들을 생성할 수 있습니다. 이는 프로젝트의 호환성을 높이고, 다양한 환경에서 사용할 수 있도록 합니다. 다음은 Webpack을 사용하여 CommonJS와 ES Module을 모두 지원하는 번들을 생성하는 예제입니다: module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
libraryTarget: 'umd',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
},
},
],
},
}; 위 예제에서는 Webpack을 사용하여 CommonJS와 ES Module을 모두 지원하는 번들을 생성합니다. libraryTarget을 'umd'로 설정하여, UMD(Universal Module Definition) 형식으로 번들을 생성합니다. 이는 CommonJS와 ES Module을 모두 지원합니다. 따라서, 프로젝트의 요구사항과 환경에 따라 적절한 모듈 시스템을 선택하고, 필요에 따라 두 모듈 시스템을 통합하여 사용할 수 있습니다. 왜냐하면 각 모듈 시스템이 제공하는 기능과 성능이 다르기 때문입니다. 이 글에서는 CommonJS와 ES Module의 통합 방법에 대해 알아보았습니다. |
📚 분량
🎤 발표자
이성훈
질문
48장
49장
The text was updated successfully, but these errors were encountered: