[TIL] KnockoutJS

dev_vming·4일 전
0

TIL

목록 보기
3/4

📚 KnockoutJS


📕 KnockoutJS 소개

등장배경

  • Model-View 결합 문제 : Controller가 결국 둘을 강하게 결합시켰다.
  • Controller의 복잡성 : 시스템 전반의 의존성과 결합도를 높여 유지보수와 확장이 어렵다.

→ 직접 DOM을 조작하는 대신 Template에 ViewModel을 전달하는 방식을 채택하게 되었다.


📗 MVVM 아키텍쳐

MVVM 아키텍쳐의 정의

  • ViewModel을 템플릿을 통해 선언적으로 작성하면 Model과 View의 상호작용을 자동으로 처리한다.
  • Model을 업데이트하고, View를 바인딩하는 데에 스크립트를 작성하는 것이 아니라 템플릿을 생성한다.

선언적 데이터 바인딩

  • 자주쓰는 Controller를 만들어두고 JS가 아닌 HTML에 작성해서 사용하는 것을 말한다.

MVVM 패턴이란? (Model-View-ViewModel)

  • 데이터와 화면을 분리하고,
  • 데이터와 화면이 상호작용하는 방식을 미리 만들어두고,
  • 선언적인 상호작용 모델(View Model)을 작성하여 자동으로 렌더링 되도록 하는 방식이다.

MVVM 패턴 개발 방식

  • 보여질 화면을 템플릿으로 작성한다.
  • 화면의 변동이 있는 곳에 데이터 바인딩 을 걸어둔다. (data-bind와 지시어 작성)
    • 변경 감지가 가능한 모델을 만들어 연결한다.
    • DOM의 변경 방식 알려준다.
    • 모델 변경 시 자동으로 HTML이 변경된다.
  • 이벤트를 연동한다. (이벤트 핸들러 작성)
    • 사용자 이벤트에 따라 데이터가 변경된다.
    • 변경된 데이터에 따라 자동으로 화면이 변경된다.

📘 knockoutJS 핵심 개념

Observable (Model)

  • 이벤트에 따라 모델의 변화에 따른 지속적인 업데이트가 필요하다.
  • 모델의 값이 변경될 때마다 전달하는 함수를 만들어 사용한다.

Templating (View)

  • 모델 데이터의 기능으로 정교하고 중첩된 UI를 빠르게 생성한다.

Declarative Binding (View-Model)

  • 선언적 바인딩을 사용한다.
  • 간결하고 읽기 쉬운 구문을 사용하여 DOM 요소를 모델 데이터와 쉽게 연결한다.

Automatic UI Refresh

  • 데이터 모델의 상태가 변경되면 UI가 자동으로 업데이트 된다.

Dependency Tracking

  • 모델 데이터 간의 관계 체인을 암시적으로 설정하여 변환 및 결합한다.

📙 KnockoutJS 의의

현재 프레임워크에 끼친 영향

  • Vue,React 등의 프레임워크들은 MVVM 기반이다.
  • knockout.js는 MVVM 패러다임의 초창기 모델이다.
  • Observable은 현재 Signal이라고 불리는 개념으로 진화하게 된다.

knockoutjs의 장점

  • MVVM 템플릿과 데이터 바인딩을 통한 선언적 개발 방식을 확립했다.
  • DOM API를 사용하지 않고서 웹 개발이 가능하다.
  • 웹 애플리케이션의 구조화 및 유지보수 용이성 향상에 기여한다.

profile
밍기적 개발하기🐛

0개의 댓글

관련 채용 정보