반응형
우아한테크코스의 자바스크립트 스타일 가이드는 Airbnb 자바스크립트 스타일 가이드를 기준으로 하기에
Airbnb 자바스크립트 스타일 가이드 기준을 보고 이해를 바탕으로 필사하였으며 경중에따라 가감하였습니다.
처음 프로젝트 시작하기전 module.exports를 오랜만에봐서 정말 생소했다.
원래 import / default export 만써서 그런 것 같다.
그래서 이틀전에 module에 대해 다시한번 정리하니 확실히 이해가 잘 되었고
그 이해한 상태에서 style guide를 보니 훨씬 편했다.
모듈 (Modules)
1) 항상 모듈(import/ export)을 비표준 모듈 체계 대신 사용하세요. 언제든 선호하는 모듈 시스템으로 트랜스파일할 수 있습니다.
why? 모듈은 미래입니다. 지금 이 미래를 사용해 봅시다.
// bad
const AirbnbStyleGuide = require('./AirbnbStyleGuide');
module.exports = AirbnbStyleGuide.es6;
// ok
import AirbnbStyleGuide from './AirbnbStyleGuide';
export default AirbnbStyleGuide.es6;
// best
import { es6 } from './AirbnbStyleGuide';
export default es6;
2) Do not use wildcard import
why? This makes sure you have a single default export
// bad
import * as AirbnbStyleGuide from './AirbnbStyleGuide';
// good
import AirbnbStyleGuide from './AirbnbStyleGuide';
3) And do not export directly from an import.
why? Although the one-liner is concise, having one clear way to import and one clear way to export makes things consistent
// bad
// filename es6.js
export { es6 as default } from './AirbnbStyleGuide';
// good
// filename es6.js
import { es6 } from './AirbnbStyleGuide';
export default es6;
4) Only import from a path in one place.
why? Having multiple lines that import from the same path can make code harder to maintain.
// bad
import foo from 'foo';
// … some other imports … //
import { named1, named2 } from 'foo';
// good
import foo, { named1, named2 } from 'foo';
// good
import foo, {
named1,
named2,
} from 'foo';
5) 가변 바인딩을 export 하지 마세요
why? 변조는 일반적으로 피해야 하지만, 가변 바인딩을 export할 때는 특히 그렇습니다. 이 기술이 어떤 특별한 상황에 필요할 수도 있지만, 일반적으로는 상수 참조만 export되어야 합니다.
// bad
let foo = 3;
export { foo };
// good
const foo = 3;
export { foo };
6) 한가지만 export하는 모듈에서는 이름 붙여진 export보다는 default export를 사용하세요 .
why? 하나만 export하는 파일의 가독성과 유지보수성이 더 좋기 때문입니다.
// bad
export function foo() {}
// good
export default function foo() {}
7) 모든 import 구문을 다른 구문들 위에 두세요
why? import 구문은 호이스트되기 때문에 이것을 가장 위에 두면 예상치 못한 결과를 막을 수 있습니다.
// bad
import foo from 'foo';
foo.init();
import bar from 'bar';
// good
import foo from 'foo';
import bar from 'bar';
foo.init();
8) 여러 줄에 걸친 import는 여러 줄의 배열이나 객체 리터럴처럼 들여쓰기하세요
why? 스타일 가이드에 있는 다른 모든 중괄호 블록들 처럼 중괄호는 같은 들여쓰기 규칙을 따릅니다. 콤마가 그렇듯이 말이죠.
// bad
import {longNameA, longNameB, longNameC, longNameD, longNameE} from 'path';
// good
import {
longNameA,
longNameB,
longNameC,
longNameD,
longNameE,
} from 'path';
9) 모듈 import 구문에서 Webpack loader 구문을 사용하지 마세요
why? import에서 Webpack 구문을 사용하면 이 코드가 모듈 번들러에 연결되기 때문입니다. loader 구문은 webpack.config.js에서 사용하세요.
// bad
import fooSass from 'css!sass!foo.scss';
import barCss from 'style!css!bar.css';
// good
import fooSass from 'foo.scss';
import barCss from 'bar.css';
10) 자바스크립트 파일 확장자를 명시하지 마세요
why? 확장자를 명시하면 모든 소비자에서 import하는 모듈의 세부적 구현을 부적절하게 하드코딩하고, 리팩토링을 막게 됩니다.
// bad
import foo from './foo.js';
import bar from './bar.jsx';
import baz from './baz/index.jsx';
// good
import foo from './foo';
import bar from './bar';
import baz from './baz';
반응형
'정보 > Airbnb JS Code Style Guide' 카테고리의 다른 글
[Airbnb JS Style Guide] 클래스 & 생성자 (0) | 2022.11.05 |
---|---|
[Airbnb JS Style Guide] 객체 , Types, References (0) | 2022.11.03 |
[Airbnb JS Style Guide] 주석을 사용해야한다면 어떻게 사용해야할까? (0) | 2022.11.03 |
[Airbnb JS Style Guide] 당신의 함수는 안녕하십니까? (0) | 2022.11.03 |