우리는 Backbone, RequireJS 및 Handlebars를 사용하여 비범 한 웹 응용 프로그램을 작성하고 있습니다. 글쎄요, 저는 궁금합니다. 지금이 순간, 우리의 각 모델은 그렇다고 다음과 같습니다RequireJS로 지연로드를 얻는 방법은 무엇입니까?
define(['Backbone', 'js/thing/a', 'js/thing/b', 'js/lib/bob'], function(a, b, bob) {
return Backbone.Router.extend({
// stuff here
});
});
경우 일/모두 등 핸들 바 템플릿에 예를 들어 자신의 의존성을 가지고 B A, 일/이제 어떻게 일어나는 것은 나의 주에서 .js, 모든 '최상위'라우터가로드되고 초기화됩니다. 각각의 최상위 라우터는 각각 의존성 (템플릿, 헬퍼, 유틸리티 등)을 갖는 일련의 의존성 (모델, 뷰 등)을 가지고 있습니다. 기본적으로 큰 나무 구조.
이 경우 문제는이 전체 트리가 확인되어 페이지로드시로드된다는 것입니다. 최적화가 끝날 때마다 하나의 큰 단일 파일로 끝나기 때문에 (기본적으로 RequireJS를 모듈화 프레임 워크로 줄임) 세세한 점은 신경 쓰지 않아도됩니다. 그러나보기와 템플리트와 같은 항목을 필요할 때로드 할 수 있는지 궁금합니다. 은 "단순화 된 CommonJS 포장은"이
는here을 설명, 그래서 나는 것을 시도 :
이define(function(require) {
Backbone = require('Backbone');
return Backbone.Router.extend({
doStuff: function() {
var MyView = require('js/myView');
new MyView().render();
}
});
});
그러나, 크롬의 네트워크 관리자보고, 그것은 보인다 RequireJS - 어떻게 든, 심지어 트리거 경로를 트리거하지 않고 doStuff 핸들러 - 여전히 myView
종속성을로드합니다. 질문 :
- 실제로 가능합니까? RequireJS에 실제로
doStuff
경로를 트리거하지 않고require()
에 대한 호출을 찾는 검은 마법이 있습니까? - 이것은 RequireJS 모듈과 리소스의 '주문형', 지연로드에 대해 이론적으로 올바른 방법입니까?
- 이 표기법을 사용하면 r.js 옵티 마이저가 광고 된대로 작동합니까?