2022.10.08 fe 컨퍼런스에 참여했다.
생각보다 많은 프론트엔드 개발자가 있어서 진짜 놀랐고 다시금 난 아직 햇병아리라는걸 실감했다..
아래 내용은 다녀오고 난 후, 다시 youtube를 보면서간략하게내용을 정리해봤다.
디자인 시스템에 대한 개념 없이, 위와같은 <Selectbox />
를 구성하려고 한다면 위처럼 구현가능하다.
디자인시스템의 책임과 기대가 불분명해 졌을 때, 위와같은 병목 현상이 발생할 수 있다.
Zag - Rapidly build UI components without sweating over the logic. - Zag
동작을 정의하는 훅을 정의해 형태를 정의하지 않음
https://github.com/toss/slash
이번 세션이 끝나고 공개한 토스에서 사용중인 라이브러리
모노레포란
https://d2.naver.com/helloworld/0923884
버전 관리 시스템에서 두 개 이상의 프로젝트 코드가 동일한 저장소에 사용되는 SW 개발 전략
모듈은 분리되어 독자적인 프로젝트로 존재하지만 저장소는 같은 곳을 사용한다.
커밋 수 | 배포 | 영향범위 / 커밋 | |
---|---|---|---|
라이브러리 모노레포 | 많음 | NPM | 큼 |
서비스 모노레포 | 적음 | 내부 인프라 | 작음 |
의존성 관리
유령 의존성(Phantom Dependency)
중복해서 설치되는 모듈을 피하기위해 호이스팅 기법을 사용하게 되는데, 이로인해 dependency로 명시되지 않은 라이브러리를 불러올 수 있음
이는 런타임 에러로 이어질 수 있음
Yarn berry + PnP
의존성 라이브러리는 cache
폴더에 압축파일 형태로 정리되고, .pnp.cjs
를 통해 엄격하게 관리되므로 명시되어 있지 않은 의존성 라이브러리를 사용할 수 없으며 이에따라 유령 의존성 문제가 해결됨
→ zero install
→ 빠른 의존성 검색
Peer Dependency
패키지를 사용하는 곳에서 제공해야하는 dependency (위 사진에서 P의 번들에 하나의 B만 포함됨)
싱글턴으로 존재해야하는 패키지일 때 사용하면 좋다
문제점
버전 관리
Semver를 잘 지키자
Toss에서는 lerna version
을 사용중
코드 품질 관리
문서화
CommonJS | ECMAScript Modules (ESM) | |
---|---|---|
특징 | require로 라이브러리를 가져옴 | |
(ts, babel 사용시 자동으로 require로 변환됨) | 함수 import, export | |
동기적으로 동작 | Top-level await - 비동기적으로 동작 | |
파일 단위의 개발 | 재할당 X, 정적분석 가능 | |
Node.js 뿐만 아니라 브라우저, Deno 등에서도 사용 가능 | ||
문제점 | 표준이 아니기때문에 Node.js가 아닌 환경에서 사용 불가능 | |
정적 분석 어려움 (조건 호출 가능) | ||
비동기 모듈 정의 불가능 | ||
require 함수 재정의 가능 |
ESM은 비동기적으로 동작하므로 CommonJS로 마이그레이션하기 용이하다
ESM
{
...
"type": "module",
...
}
Commonjs (기본값)
{
...
"type": "commonjs",
...
}
.js
파일이 가장 가까운 package.json
설정을 따른다
.cjs
는 항상 CommonJS, .mjs
는 항상 ESM 파일이다. 해당 확장자를 이용해 일부 파일만 사용 가능하다.
가짜 ESM (commonJS로 바껴서 사용됨)
성숙하지 않은 생태계 (아래 서비스는 아직ESM 불가)
import { Component } from './MyComponent.js'
정말 신기했던 WebGL로 만든 추천 웹
일단, 전부터 궁금해했던 monorepo, yarn, ESM등에 대한 얘기를 자세하게 들을 수 있어서 뜻깊은 시간이였다.
사실 실제 참석했을때는 프론트엔드 DDD를 만나다
와 상태관리, 이 전쟁을 끝내러 왔다
세션도 들었는데...... 이해하지 못해서 차마 블로그에 적을 수가 없었다.. 😢😢😢😢
언젠가 실제 현업에 적용할 수 있기를, 나도 저렇게 발표할 수 있기를 간절히 바라며 오늘 글을 마무리한다!
안녕하세요~ 블로그 내용 유익하게 잘 봤습니다 :)
저도 너무 가보고 싶었는데 아쉽게 참여하지 못했네요ㅠ 올해 2023년에는 꼭 참여해보고 싶네요!
혹시 WebGL 로 만들었다고 하신 프로젝트가 공유되었다면, (실례가 안된다면) 깃헙주소를 공유받아볼 수 있을까요?