2013-10-21 1 views
0

BackboneJS 및 RequireJS를 사용하여 너무 작지 않은 응용 프로그램을 구축하고 있으며 때로는 일부 객체에 대한 액세스 권한을 원합니다.), 애플 리케이션의 객체 계층 구조 트리에서 멀리있는 다른 객체 (예 : 뷰 # 2의 전혀 관련이없는 인스턴스의 하위 하위 뷰).복잡한 RequireJS 앱의 특정 객체 인스턴스를 참조하십시오.

이것을 달성하기위한 좋은 방법이 있습니까 ?? 방법으로 그 :

A) RequireJS 좋은 사례를 지배하는 것 같다 "노 전역"패러다임을 아프게하지 않는 객체 생성

B)에 다른 개체를 통해 매개 변수를 전달 포함되지 않습니다

제 생각에 옵션 a)는 앱이 커질수록 처리하기가 매우 어렵습니다. 이해하기 어렵습니다. 왜냐하면 모든 매개 변수가 어디로 연결되는 지 계속 추적해야하기 때문입니다.

그리고 옵션 b (전역 변수 사용)는 모두 또는 아무것도 아닙니다. 하나의 글로벌을 사용한다면, 모든 앱을 네임 스페이스로 만드는 하나의 큰 글로벌을 사용할 수 있으며, 가장 중요한 RequireJS 기능 중 하나가 빠진 것 같습니다.

답변

0

내 앱에는 최대 3 단계의 계층 구조가 있습니다. 아래처럼보기를 초기화하는 동안 옵션을 전달합니다.

var view = new ChildView({dropdown: this.dropdowm}); 

ChildView에서 이와 같이 액세스하십시오.

this.options.dropdown 

그리고 이것은 Backbone.js에서 규정 된 방법입니다. 때로는 "고객 ID", "제품 ID"와 같은 속성에 대해 계층 구조의 각 수준으로 전달하지 않습니다. App이라는 전역 객체를 초기화하고 그 속성을 아래와 같이 App에 연결합니다.

var App = {}; 
App.cutomerId = "12"; 

그래서 내 앱의 어느 곳에서나 App.customerId과 같은 고객 ID에 액세스 할 수 있습니다.

그러나보기/모델을 App에 직접 첨부하지 않습니다. 왜냐하면 어디서나보기/모델에 액세스하여 앱을 쉽게 종료 할 수 있기 때문입니다. 다른 개발자는 앱의 어느 위치에서나 액세스 할 수 있습니다. 또한 일부 오류를 디버깅 할 때 모든 응용 프로그램에서 해당 모델을 사용했기 때문에 더 복잡해집니다. 이것은 this.options을 추적하는 것보다 복잡합니다. 따라서 글로벌 범위에 포함해야 할 사항에 대해 알고 있어야합니다.

관련 문제