10

Backbone 및 Backbone.Marionette을 기존 웹 응용 프로그램 프로젝트에 통합하는 과정에 있습니다. 우리는 지금 당장은 기존의 모든 기능을 프로젝트에 남겨 둘 계획이지만 새로운 기능은 백본 구조 및 마리오네트 교장을 활용할 것입니다. 비즈니스의 첫 번째 순서 중 하나는 HTML 템플릿 렌더링 라이브러리와 이러한 템플릿에 대한 데이터 바인딩 솔루션을 결정하는 것입니다. 이전에는 모든 템플릿 요구 사항과 데이터 바인딩에 JsRenderJsViews을 사용했지만 새로운 기능에 대한 새로운 방법을 모색하고 있습니다. 그래서 기본적으로 저는 다양한 솔루션을 연구 해왔고 지금 선택할 사항에 대한 조언이나 생각이 필요합니다. 여기에 내가 지금까지 살펴본 것입니다 :백본 : 모델 - 템플릿 및 템플릿 - 모델 바인딩

Backbone.StickIt :

장점 : 매우 "깨끗한"템플릿을 유지하는 데 도움이 우려 분리의 백본의 생각을 따르도록 보인다.

단점 : 바인딩을 정의하기 위해보기에 좀 더 많은 코드를 작성해야하는 것처럼 보입니다. 또한 조건부 렌더링을 수행 할 능력이 부족한 것처럼 보이므로 항상 전체 템플릿을 렌더링하고 특정 요소의 표시를 전환해야합니다.

Rivets.js

:

장점 : 너무 지저분하지 않고 템플릿 내에서 옵션을 결합 조금 더 많은 데이터를 처리합니다.

단점 : 조건부 렌더링이 부족한 것 같습니다.

Knockback/Knockout

:

장점 : 속성을 통해 요구 사항을 데이터 바인딩의 모든 종류를 처리합니다.

단점 : 변환기를 사용하여 템플릿을 쉽게 "지저분하게"시작할 수 있습니다. Backbone 모델로부터 녹아웃 뷰 모델을 생성하기위한 또 다른 단계를 추가해야합니다.

JsViews

:

장점 : 마네의 능력을하지만 서로 다른 문법과 유사. 조건부 렌더링을 처리합니다.

단점 : 이전에는 템플리트 내에 너무 많은 비즈니스 로직을 추가하여 템플리트를 삭제했지만 해결할 수있는 개발상의 문제 일 수 있습니다. JsViews 관측 가능성 기능을 백본 모델 이벤트에 연결하는 기능을 생성해야합니다. StickIt 및 Knockback과 같은 다른 라이브러리는 자동으로이를 처리합니다.

우리는 또한 StickIt와 리벳 사이에-어딘가에 Backbone.ModelBinder로 보았다.

누구나 내린 결정을 공유 할 수 있으며 왜 다른 플러그인/라이브러리를 선택 했나요? 나는 또한 다른 제안들에 대해서도 열려 있습니다. 감사.

답변

2

나는 이것을 사용했습니다.

콧수염.js

프로의 : 콧수염은 변수 바인딩을 지원할뿐만 아니라 함수 바인딩을 처리 할 수도 있습니다. 예를 들어 다음과 같이 지정할 수 있습니다.

<a href="{{test}}" >click me </a> 

그런 다음 테스트라는 메서드가 있습니다. 이것은 rendrant 할당 클래스/ID를 많이 저장하고 View 클래스에서 이벤트를 바인드합니다.

죄수가 : 나는 그것의 구문을 좋아하지 않아.

다음으로 jst eco 템플릿 시스템에 빌드 된 Ruby on Rails에 coffeescript를 사용합니다. 직업은 별도의 파일에 템플릿이 있습니다. pageload에서 DOM의 전역 변수에 바인딩됩니다. 이것들은 축소되어서 약간의 의사 스크립트 템플릿 태그보다 좋습니다. 또 다른 프로는 당신이 루비에서하는 것처럼 다른 루핑을 위해 쓰는 것입니다. 단점은 면도칼 태그를 사용하고 서버 측 코드 (예 : 번역)와의 쉬운 혼합을 허용하지 않는다는 것입니다.

기타 라이브러리는 언더 코어 템플릿 엔진입니다. 아주 간단하지만 아주 강력합니다. Proside는 이미 사용 가능합니다 (백본의 경우 밑줄이 필요합니다). 단점은 (기본적으로) 외부 파일에서 템플릿을로드 할 수 없다는 것입니다. 나는 serverside 코드 (require_once, 부분 렌더링)를 사용하여 이것을 해결했다. 그러나 require.js를 텍스트 플러그인 (http://requirejs.org/docs/download.html#text)과 함께 사용하면 템플릿을 종속성으로로드 할 수 있습니다.

+1

나는 밑줄을 체크 아웃했다. 나는 "스파게티"템플릿에 대해 동일한 문제가있을 수 있다고 생각했습니다. 주된 관심사는 템플릿에 대한 작업을하는 수많은 개발자가 있으며 HTML에 너무 많은 로직과 템플릿 구문을 얽어 넣기 시작했습니다. 그래서 우리가 그 습관을 포기하도록 강요하기 위해 우리는 백본과 함께 가기로 결심했습니다. 템플리트 외부에서 바인딩을 만드는 데 익숙해 지려면 약간의 시간이 걸릴 것으로 보이지만 HTML의 "청결 함"을 통해 이점을 얻을 수 있기를 바랍니다. 귀하의 의견을 보내 주셔서 감사합니다. –