▲GN⁺ 2025-04-23 | parent | ★ favorite | on: JavaScript 뷰를 어려운 방식으로 구축하기 - UI 작성 패턴(github.com/matthewp)Hacker News 의견 많은 JS 개발자들에게는 이단일 수 있지만, 'state' 변수는 안티 패턴이라고 생각함 웹 컴포넌트를 사용하며 '평면' 변수 타입에 대해 state 변수를 추가하는 대신 DOM 요소의 value/textContent/checked 등을 유일한 진실의 원천으로 사용함 필요한 경우 setter와 getter를 추가함 코드의 양이 적어도 자연스럽게 많은 것이 올바르게 작동함 WebComponents를 사용하면 객체와 인접한 HTML 템플릿의 분리가 이루어져서 스파게티 코드가 아닌 퓨실리나 마카로니 같은 세분화가 이루어짐 이 접근 방식이 매우 유지보수 가능하다고 설명서에 나와 있지만, 동의하지 않음 디자인 패턴이 오직 관례에 기반하고 있음 복잡한 앱에서 여러 개발자가 동시에 작업할 때, 적어도 한 명은 관례에서 벗어날 가능성이 높음 iOS의 UIKit 같은 클래스 기반 UI 프레임워크는 모든 개발자가 표준 API 세트를 사용하도록 강제하여 코드가 예측 가능하고 유지보수가 쉬움 최근에 vite와 함께 순수 '바닐라' TypeScript로 애플리케이션을 작성하고 있으며, 프론트엔드 '최고' 관행에 대해 점점 더 의문을 가짐 확장성은 결론지을 수 없지만, 성능 면에서 큰 이점이 있음 재미있고, 많은 것을 배우며, 디버깅이 간단하고, 아키텍처를 이해하기 쉬움 템플레이팅이 가장 그리움 이 접근 방식은 오래된 backbone js 라이브러리를 떠올리게 함 웹 플랫폼에 적응된 MVC 패턴의 예시가 있는 GitHub 저장소도 있음 최근에 비슷한 것을 생각해냈지만, 템플릿 요소를 사용하지 않음 함수와 템플릿 리터럴을 사용하여 문자열을 반환하고, 기존 요소의 innerHTML에 넣거나 새로운 div 요소를 생성하여 넣음 함수가 중첩되어 합리적인 방식으로 구성하기 어려움 이 코드는 반응형 뷰 라이브러리가 대체하려는 수동 업데이트 코드와 정확히 같아 보임 약 20년 동안 프로그래밍을 해왔지만 프론트엔드 프레임워크에 익숙해지지 않음 백엔드에 더 강해서 보안 관련 상호작용은 서버를 통해야 한다고 생각함 JS는 견고한 HTML 및 CSS 기반에 클라이언트 측 기능을 추가하는 것으로 봄 React.createElement와 유사한 헬퍼를 사용함 모의 서버 대시보드의 작동 예시가 있음 HTML 기반 도구를 위한 JS 툴킷을 구축하려는 시도로 deja-vu.junglecoder.com에서 작업 중임 적절한 반응형/양방향 데이터 바인딩은 아직 해결하지 못했지만, grab/patch가 꽤 괜찮음 템플릿을 사용하는 방식이 템플릿의 일부를 이동하기 매우 쉬움 대학 졸업 후 첫 공식 직장에서 Delphi 소프트웨어의 웹 버전을 만드는 작업을 했음 팀은 이미 프론트엔드를 세 번째로 다시 작성 중이었고, 프레임워크를 변경해야 했음 자체 프레임워크를 작성해야 한다고 주장했지만, 팀은 내 제안을 좋아하지 않았음 이후 다른 회사에서 더 나은 제안을 받아 떠남 이후 tiny.js라는 또 다른 프레임워크를 시도했으며, 개인 프로젝트에 사용 중임
Hacker News 의견
많은 JS 개발자들에게는 이단일 수 있지만, 'state' 변수는 안티 패턴이라고 생각함
이 접근 방식이 매우 유지보수 가능하다고 설명서에 나와 있지만, 동의하지 않음
최근에 vite와 함께 순수 '바닐라' TypeScript로 애플리케이션을 작성하고 있으며, 프론트엔드 '최고' 관행에 대해 점점 더 의문을 가짐
이 접근 방식은 오래된 backbone js 라이브러리를 떠올리게 함
최근에 비슷한 것을 생각해냈지만, 템플릿 요소를 사용하지 않음
이 코드는 반응형 뷰 라이브러리가 대체하려는 수동 업데이트 코드와 정확히 같아 보임
약 20년 동안 프로그래밍을 해왔지만 프론트엔드 프레임워크에 익숙해지지 않음
React.createElement와 유사한 헬퍼를 사용함
HTML 기반 도구를 위한 JS 툴킷을 구축하려는 시도로 deja-vu.junglecoder.com에서 작업 중임
대학 졸업 후 첫 공식 직장에서 Delphi 소프트웨어의 웹 버전을 만드는 작업을 했음