April 13, 2023
에디터가 복잡한 동작을 한다는 것을 알려주는 예시
스마트에디터로 살펴본 에디터의 발전
div
에 해당 속성을 true로 설정함으로써 사용할 수 있으며 사용자가 직접 DOM에 글을 입력할 수 있게 한다.단점 : 멀티 디바이스 대응이 어렵다
React
, MobX
, contenteditable
목표 : 기존 에디터의 사용성 유지 + 브라우저 네이티브 활용
겪었던 문제점
React
와 contenteditable
의 충돌 : React
의 경우, State 업데이트에 따라 vDOM을 만든 후, vDOM과 DOM을 비교하여 DOM을 변경하는 방식을 사용하나 contenteditable
의 경우 사용자가 입력하면 즉시 DOM이 변경됨 ☁️ 즉, 서로 DOM을 업데이트하는 싱크가 맞지 않다는 의미 (사이클이 맞지 않다)해결 방안 : 직접 애플리케이션의 흐름을 제어하기로 함
React 를 사용하면서 (특히나 Next.js와 결합할 때) React의 싱크와 개발자가 조작하는 DOM의 싱크가 맞지 않아 에러가 일어나는 일이 비일비재하였다. 특히나 DOM 요소의 동작에 의하여 DOM이 조작될 때, React 의 vDOM과 즉시 싱크로율이 맞지 않아 문제점을 겪은 점이 있던거 같은데 (희미한 기억이지만…) 이를 해결하기 위해서 React 동작과 DOM의 동작을 분리해서 각자의 역할에 따라 동작을 처리한 것이 인상적이였다.
엣지 컴퓨팅 : 컴퓨팅 작업을 가능한 엔드유저와 가까운 곳에서 수행하는 것
엣지 컴퓨팅은 점점 복잡한 웹과 애플리케이션의 복잡성(문제)를 해결하기 위하여 또 다른 추상화 계층을 부여한 것.
자바스크립트는 싱글 스레드 프로그래밍 언어
간단하게 자바스크립트 프로그램의 실행은 다음과 같이 표현할 수 있다.
stack tree
라고 생각할 수 있다.)Blocking 현상
브라우저는 Web API와 같은 것을 지원하고, 이는 자바스크립트에서 호출할 수 있는 스레드를 효과적으로 지원한다.
setTimeout
과 같은 비동기 함수는 자바스크립트 엔진에서 지원하는 함수가 아니라 JavaScript가 실행되는 런타임 환경에 존재하는 별도의 API이다.비동기 콜백의 활용