Skip to content

Commit

Permalink
프레임워크 없는 프론트엔드 개발 chap1 (#159)
Browse files Browse the repository at this point in the history
  • Loading branch information
hjy0951 authored May 12, 2024
1 parent 5d476c1 commit e94a598
Showing 1 changed file with 95 additions and 0 deletions.
95 changes: 95 additions & 0 deletions joon/no-framework-frontend-dev/chap1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
### Focus

- 프레임워크 없이 어플리케이션을 개발하는 법을 이해하는데 도움을 주기 위함
- 적합한 작업에 맞는 프레임워크 선택

### Framework

> 무언가를 만들 수 있도록 도와주는 지지 구조
### `Framework` vs `Library`

> 프레임워크는 코드를 호출한다. 코드는 라이브러리를 호출한다.
- 프레임워크는 프레임워크가 정한 룰(틀)에 맞춰 코드를 작성하고 실행하여 호출한다.
- 하지만 라이브러리는 개발자가 필요에 따라 라이브러리를 import하고, 이를 필요한 곳에 적절한 기능을 하는 모듈을 불러와 사용한다.

### Promise

> 비동기 작업의 최종 완료(혹은 실패)를 나타내는 표준 방법
### React

> 사용자 인터페이스 구축을 위한 자바스크립트 라이브러리
- 주요 제약 사항은 선언적 패러다임의 사용
- DOM을 직접 조작하는 것이 아닌, 컴포넌트의 상태를 수정하고 React가 대신 DOM을 수정

## 자바스크립트 프레임워크의 역사

### JQuery

- 2006년 존 레식이 만듦
- 모든 자바스크립트 프레임워크의 모체
- 실제 제품 환경에서 가장 많이 사용되는 프레임워크
- 가장 중요한 기능은 selector($)
- **JQuery가 브라우저 간 공통어를 제공 (이전에는 브라우저가 통일되어 있지 않았었음)**
- 현대 웹 개발의 초석

### AngularJS

- 2009년 미스코 헤브리에 의해 개발. 2011년 5월, 1.0버전이 릴리즈
- SPA을 주류로 만드는데 큰 역할을 함
- 가장 주목할 만한 기능은 **양방향 데이터 바인딩**
- `$scope`의 모든 변경 사항은 DOM에 자동으로 적용
- 모델과 뷰 간 양방향으로 데이터 바인딩이 가능
- 모델의 변경으로 뷰가 업데이트
- 뷰의 변경으로 모델의 업데이트
- 하지만 대규모 어플리케이션에는 적합하지 않음

### React

- 2011년 페이스북에서 만들어 2013년 오픈소스로 공개
- 가장 인기 있는 프론트엔드 라이브러리
- 선언적 패러다임으로 동작
- DOM을 직접 수정하지 않고, setState를 통해 상태를 변경시키면 리액트가 DOM을 수정

### Angular

- AngularJS의 새로운 버전으로 시작하여 앵귤러2라고 부르기도. 하지만 완전히 다른 프레임워크

## 기술 부채

- 프로젝트에 어떤 기능을 추가할 때, 여러 옵션이 존재한다.
- 빠르지만 지저분
- 느리지만 깔끔
-
- 워드 커닝햄은 이러한 옵션을 선택할 때, 기술 부채라는 개념을 도입했다.

> 지저분한 솔루션을 선택할수록 부채가 늘어난다
- 즉, 부채를 안고 프로젝트를 진행할수록 기존 기능의 변경이나 새로운 기능의 추가에 따르는 비용은 시간이 지남에 따라 기하급수적으로 늘어난다.
- 이후 유지보수를 하는데 있어서, 리팩토링, 최적화 등의 작업을 해나갈 때, 시간과 비용이 더욱 많이 소모되기 때문

## 기술 투자

- 현실세계에서 부채가 꼭 나쁜 것만은 아니듯, 기술 부채 또한 마찬가지이다.
- 우리가 집을 살 때, 은행에서 대출을 받아 사듯이.
- 합리적인 이유로 솔루션을 사용한다면 이것은 부채가 아닌 투자가 된다.
- 즉, 이는 자산이다.

```tsx
글쓴이는 기술 부채를 설명하는 부분에서
"주관적이지만 모든 프레임워크에는 기술 부채가 존재한다."
"따라서 최적이 아닌 방법을 선택할 경우, 부채가 발생한다."
라고 말한다.

글쓴이의 의견에 대한 내 생각은 어떤 문제가 발생했을때 충분히 상의하고 생각할 시간이 있다면 합리적인 기술을
찾아 선택하여 사용하는 것이 최적이지만, 보통은 그러한 여유가 없기 때문에 사람들은 커뮤니티에서 답을 찾으려
한다. 하지만, 사람마다 기술 선택의 이유가 다르고 주관적이기 때문에 남의 코드가 곧 정답은 아니다라는 말을
하고 싶어하는 것 같다.

또한 "프레임워크는 아키텍처 자체로 비용을 포함하고 있다."라고 말하는데,
이는 기술 투자 부분에서 말하듯이, 내 상황에 적절한 기술을 근거있게 잘 선택하는 것을 투자에 빗대어
부채가 아닌 자산으로 만들도록 노력하라는 말로 이해하였다.
```

0 comments on commit e94a598

Please sign in to comment.