귀하의 시작 문장은 실제로 Backbone.js와 jQuery의 차이점에 대한 아주 좋은 설명이었습니다. 그래서 조금 풀어 보겠습니다.
우선, 두 라이브러리는 경쟁에 전혀 참여하지 않고 무료입니다.
예를 들어, 다음은 jQuery로 수행 할 수있는 작업입니다.
- 애니메이션 슬라이드 쇼
- iOS 스타일 숫자 "스피너"와 같은 폼 컨트롤 향상
- 클래스 이름을 기반으로 요소 가시성 전환
그리고 내가 Backbone.js에서 할 수있는 일 :
- 사용자가 썸네일을 클릭하고 사용 된 카메라, 위치 및 사진 작가 이름과 같은 일부 데이터와 함께 더 큰 버전의 사진을 볼 수있는 사진 앨범을 만듭니다.
- 데이터 그리드를 표시하고 사용자가 개별 요소를 클릭하고 양식에서 업데이트 할 수있는 마스터 / 세부 정보 유형의 페이지를 작성합니다.
jQuery는 페이지 요소를 선택하여 브라우저가 이벤트를 처리하는 방식의 차이를 완화하는 미시적 수준에서 탁월합니다.
Backbone.js는 더 큰 그림입니다. 데이터 및 애플리케이션 로직을 관리하는 데 도움이됩니다. 위의 사진 앨범 예에서 Backbone은 몇 가지 유용한 구조를 제공합니다. 사진과 관련된 모든 데이터 (모델), 앨범의 모든 사진 목록 (컬렉션) 및 저장할 위치가 있어야합니다. 사용자가 썸네일 (뷰)을 클릭 할 때 발생하는 일을 결정하는 로직입니다. 그것들은 백본 컨트롤 또는 애플리케이션의 주요 부분입니다.
그러나 Backbone.js는 jQuery 또는 이와 유사한 것을 통해 애플리케이션의 데이터 및 로직 결과를 DOM으로 렌더링하는 데 도움이됩니다. 예를 들어, jQuery를 사용하여 페이지에서 Backbone 앱의 컨테이너 역할을 할 요소를 선택하는 것이 일반적입니다. 또한 jQuery를 사용 $(function () {});
하여 Backbone 컨트롤 의 일부를 실행하는 것도 일반적 입니다. jQuery를 사용하여 양식 필드 유효성 검사 오류 메시지를 표시 할 수도 있습니다.
jQuery에서 크고 복잡한 사용자 인터페이스를 확실히 구축 할 수 있습니다. 직장에서 유지 관리하는 앱에 몇 가지가 있습니다. 그러나 jQuery는 애플리케이션에 구조를 제공하도록 설계되지 않았기 때문에 작업하기가 어렵습니다. 특히, 항목 그룹을 선택한 다음 해당 항목을 조작하는 콜백 함수를 전달하는 데 기반을 둔 jQuery의 API는 크고 복잡한 컨트롤 또는 앱에서 사용하기에 좋은 패턴이 아닙니다. 결국 많은 중첩 함수가 생기고 무슨 일이 일어나고 있는지보기가 매우 어렵습니다.
현재 Backbone.js에서 이러한 컨트롤 중 하나를 다시 작업하고 있습니다. 마지막 예로서 두 라이브러리에서 동일한 컨트롤로 작업 할 때 내 사고 프로세스가 어떻게 다른지에 대한 간단한 요약이 있습니다.
jQuery에서 다음 사항이 걱정됩니다.
li
원하는 요소 그룹을 가져 오기 위해 올바른 선택기를 사용 하고 있습니까?
- 이 Ajax 호출이 완료되면 해당 값 목록을 다시 채워야합니까?
- 이 배열 값을
input
페이지 의 요소에 어떻게 다시 넣을 수 있습니까?
Backbone에서는 다음에 더 집중합니다.
- 내 모델 항목에서이 속성 집합의 유효성을 검사하는 올바른 논리는 무엇입니까?
- 사용자가 추가 버튼을 클릭하면 컬렉션에 새 항목을 즉시 추가해야합니까? 아니면 모든 데이터를 채울 때까지 기다려야합니까?
- 내 컬렉션의 항목이 삭제되기 직전이나 직후에 항목이 어떻게 반응해야합니까?
jQuery는 핵심 세부 사항을 처리하고 Backbone은 더 높은 수준입니다.
마지막으로 Backbone.js 예제를 논의 할 때 "control"과 "app"이라는 단어를 사용했습니다. Backbone.js가 단일 페이지 앱 전용이라는 것은 사실이 아닙니다. 그러나 Backbone.js는 데이터를 조작하고 많은 논리를 처리하는 복잡한 애플리케이션을 빌드하는 데 적합합니다. 소규모 UI 요소에 사용하는 것은 어리석은 일입니다. 추가 구조가 필요하지 않습니다.
업데이트 : 여러 페이지 문제에서 백본은 데이터를 유지하기위한 강력한 메커니즘을 제공합니다. 각 모델에는 save
AJAX 호출을 실행하여 서버에 변경 사항을 저장 하는 메서드가 있습니다. 따라서 데이터를 저장하는 한 다중 페이지 앱을 사용할 수 있습니다. 이것은 매우 유연한 모델이며 우리가 직장에서 Backbone을 사용하게 될 방법입니다. 단일 페이지 앱을 만들고 싶지만 기존 다중 페이지 애플리케이션에서 10 년 동안 작업했습니다. Backbone에서 좀 더 강력한 UI 구성 요소를 다시 빌드 한 다음 사용자가 다른 페이지로 이동하기 전에 변경 사항을 서버에 동기화하려고합니다.