사용자가 화면의 "객체"와 상호 작용하는 웹 기반 응용 프로그램 (예 : jQuery 및 많은 SVG가 포함 된 JavaScript)을 작성 중입니다. 벡터와 같이 arraows로 크기를 조정하고 연결될 수있는 DIV를 생각해보십시오. 드로잉 프로그램 또는 그래픽 프로그래밍 언어).JavaScript에서 대화 형 객체를 배치 할 위치는 어디입니까?
각 "개체"는 개별 정보를 포함하고 있지만 요소의 "클래스"에 항상 속해 있으므로이 응용 프로그램을 OOP 방식을 사용하여 프로그래밍해야한다는 것이 분명합니다.
하지만 "개체"를 가장 잘 저장합니까?
- 모든 (JS 네이티브) 객체로 글로벌 구조 ("레지스트리")를 만들고 "DOM에 자신을 그려야"한다고 말합니까?
- 그런 구조를 피하고 (관련) DOM 노드를 내 객체로 생각하고 해당 데이터를 .data()로 첨부해야합니까?
첫 번째 방법은 매우 MVC입니다. 그러나 모든 이벤트 처리기의 첨부는 간단합니다.
두 번째 방법은 사소한 방식으로 이벤트를 처리하고 중복 된 구조를 만들지는 않지만 일반적인 OO (메서드와 같은) 요소는 더 복잡 할 것입니다.
무엇을 권하고 싶습니까? 필자는 대답이 JavaScript와 SVG에 한정 될 것이라고 생각합니다. "일반적인"프로그래밍 언어는 고도로 조직화 된 출력 "캔버스"를 가지고 있지 않습니다.
이 질문은 IMO가 매우 흥미 롭기 때문에 답장을 기다릴 것입니다 ...하지만 왜 캔버스에 들어가는 대신 SVG를 선택했고 단순히 캔버스에 객체를 드로잉하는 "전통적인"접근 방식을 선택 했습니까? – 6502
데이터가 벡터이고 픽셀 유형이 아니기 때문에 Canvas 위에 SVG를 선택했습니다. 그리고 더 중요한 것은 자바 스크립트 이벤트 (mousedown, mousemove, ...)를 많이 사용하고 SVG 요소에 바인딩 할 수 있기 때문에 브라우저의 기본 구현에 "충돌 감지"를 오프로드하고 있습니다. JavaScript가 느려지는 것 같습니다. – Chris