File tree Expand file tree Collapse file tree 1 file changed +109
-0
lines changed
Expand file tree Collapse file tree 1 file changed +109
-0
lines changed Original file line number Diff line number Diff line change 1+ # 네임스페이스 패턴
2+
3+ - 네임스페이스는 코드 단위를 고유한 식별자로 그룹화한 것을 뜻함
4+
5+ ## 단일 전역 변수 패턴
6+
7+ ``` js
8+ const myUniqueNamespace = {};
9+ ```
10+
11+ ## 접두사 네임스페이스 패턴
12+
13+ ``` js
14+ const foo_property = {};
15+ ```
16+
17+ ## 객체 리터럴 표기법 패턴
18+
19+ ``` js
20+ const myUnique = {
21+ getInfo : () => {}
22+ models: {};
23+ }
24+ ```
25+
26+ ## 중첩 네임스페이스 패턴
27+
28+ ``` js
29+ foo .util .DOM .getElementById (' bar' );
30+ ```
31+
32+ ## 즉시 실행 함수 표현식 패턴
33+
34+ ``` js
35+ const namespace = {};
36+
37+ ((n ) => {
38+ n .foo = ' foo' ;
39+ })(namespace)
40+ ```
41+
42+ ## 네임스페이스 주입 패턴
43+
44+ ``` js
45+ const namespace = {};
46+
47+ (() => {
48+ this .foo = ' foo' ;
49+ }).apply (namespace);
50+ ```
51+
52+ - 객체/클로저 내에서 명시적으로 선언할 때 직접 접근이 불가능한 상황에서만 사용하는 것을 추천
53+
54+ ## 고-급 네임스페이스 패턴
55+
56+
57+ ### 중첩 네임스페이스 자동화 패턴
58+
59+ ``` js
60+ const namespace = {};
61+ const mod = extend (namespace, " module1.module2.module3" );
62+
63+ console .log (mod === namespace .module1 .module2 .module3 ); // true
64+ ```
65+
66+ ### 의존성 선언 패턴
67+
68+ ``` js
69+ const namespace = {
70+ // 대충 여기에 중첩된 거 많음
71+ };
72+
73+ const util = namespace .DOM .util ;
74+ util .getById (' bar' );
75+ ```
76+
77+ - 로컬 변수를 사용하는 것이 전역 변수에 매번 접근해 사용하는 것보다 빠름
78+ > 이전 챕터에서 공유한 것처럼 체이닝을 덜하는 이점도 있을 것이라 생각
79+
80+
81+ ## 내 생각
82+
83+ - ES 모듈을 이용하는 현대적인 환경에서 전역 네임스페이스를 고려하는 환경이 있을까 싶음
84+ - 너무 내가 어플리케이션 레이어 개발자인가 ;;
85+
86+ - 코드 스니펫 정도에서 배워가는 건 있었다고 생각 (살짝)
87+
88+ - 의존성 선언 패턴(이게 이름이 적절한지는 모르겠는데)이 좋은 건 알겠으나, 가독성 측면에서 좋지 않다고 느낀 경험
89+
90+ ``` tsx
91+ const UserCard = () => {
92+ const { data : {
93+ foo : {
94+ name
95+ }
96+ } } = useSuspenseQuery (대충getUserQuery );
97+
98+ return <div >{ name } </div >
99+ }
100+
101+ // 간단한 형태라면 이렇게 사용해도 좋겠으나
102+
103+ const ComplexUserCard = () => {
104+ const { data : user } = useSuspenseQuery (대충getUserQuery );
105+
106+ // 복잡한 형태라면 해당 줄만 읽어도 출처를 알 수 있는 형태가 좋았던 경험이 있음
107+ return <div >{ user .foo .name } </div >
108+ }
109+ ```
You can’t perform that action at this time.
0 commit comments