문제해결 - ChoDragon9/posts GitHub Wiki
소프트웨어 개발에서 발생하는 문제에 대한 해결방법을 정리한다. 프레임워크, 라이브러리, 디자인 패턴에는 문제 해결에 대한 철학이 담겨 있으므로 참고하여 작성한다.
- 다형성
- 자료형 체계의 성질
- 2개 이상의 자료형에 속하는 것이 허가되는 성질
- 반대말로 단형성으로, 한가지 형태만 가지는 성질을 가리킴
- 스캐폴딩
- 학습자에게 적절한 인지적 도움과 안내를 제공하여 학습을 촉진시키는 전략(출처)
- 아티팩트(artifact): 아티팩트는 소프트웨어 개발 프로젝트를 진행하면서 생성하는 다양한 산출물을 의미한다. 각종 설계 문서, 유즈 케이스, UML 다이어그램, 소스 코드, 소스를 빌드하여 생성된 라이브러리나 실행 파일도 모두 아티팩트에 속한다.
- Modifier : 행위의 범위를 좁혀 기능을 수식하는 것
- 컴포넌트 : 자체 뷰와 데이터 로직의 재사용
- Props
- 동일한 자식 컴포넌트가 있을 때 각각 다른 데이터를 전달 후 렌더링 해야 되는 데
- 각각 데이터를 지정하는 방식보다 선언적으로 정의하는 게 깔끔함
- Props
- 믹스인 : 컴포넌트의 기능 재사용
- 가상돔 : DOM 렌더링 최적화
- 단방향 데이터 바인딩 : 추론이 쉽고 유지 관리가 쉬운 의사소통
- 디렉티브 : DOM 조작 캡슐
- 라이브러리 : 기능들의 집합을 제공
- 프레임워크 : 일련의 정형화된 구조를 가진 구현체 제공
- 의존성 관리 : 의존관계 주입
- 라이프사이클 훅
- 템플릿 컴파일, DOM 마운트, DOM 업데이트 감시 일련의 단계를 거친다.
- 그 과정을 사용자 정의 로직을 실행할 수 있게 하기 위해 제공한다.
- 템플릿 바인딩 : 선언적인 데이터 바인딩
- 스케쥴 : 비동기 함수를 버퍼에 담아 중복의 제거로 불필요한 계산과 DOM 조작을 피하기 위해
- 불변객체 : 상태가 변경되지 않게 하기 위함
- 메모이제이션 : 의존성있는 프로퍼티들의 변경이 일어날 때만 새로 연산
- 파이프 : 어떤 값의 형태를 바꿀 때 사용하는 템플릿 엘리먼트
- 스토어 : 글로벌 영역에 앱의 상태와 비즈니스 로직을 가지고 있는 주체
- Computed(계산된 속성)
- 의존성있는 프로퍼티들의 변경이 일어났을 때만 새로 연산한다.
- 기본적으로 메모리제이션이 구현되있다.
- 컴파일 포맷
- amd: Asynchronous Module Definition, used with module loaders like RequireJS
- cjs: CommonJS, suitable for Node and other bundlers
- esm: Keep the bundle as an ES module file, suitable for other bundlers and inclusion as a <script type=module> tag in modern browsers
- iife: A self-executing function, suitable for inclusion as a <script> tag. (If you want to create a bundle for your application, you probably want to use this.)
- umd: Universal Module Definition, works as amd, cjs and iife all in one
- system: Native format of the SystemJS loader
- 템플릿 변경 방지
-
<template>
라는 컴포넌트 제공 - Directive 사용 시
<template>
사용
-
- 조합이 가능한 형태 라이브러리
- 컴패니언 라이브러리 형태 사용
- 코어, 라우팅, 상태관리 모두 별도 라이브러리
- 감시자 런타임 퍼포먼스
- 종속성 추적 관찰 시스템으로 명시적 종속 관계 추적
- 관계있는 부분만 트리거
- 결합도 낮추기
- 의존성 주입
- 감시패턴
- 에러 처리
- 모나드 중 Maybe, Either를 통해 해결
-
try-catch
,null 체크
를 하지 않고, 제어 흐름이 흐르도록한 뒤 마지막에 에러 처리를 한다.
- 상태 관리 도구 사용
- 다중 계층 컴포넌트에서 데이터와 메소드 접근의 복잡성 해결
- 컴포넌트에 집중된 비즈니스 로직의 분리