2016-09-28 3 views
2
dojo.require("dijit.Dialog"); 
dojo.require("dijit.form.Form"); 
dojo.require("dijit.form.Button"); 
dojo.require("dijit.form.DateTextBox"); 
dojo.require("dijit.form.TimeTextBox"); 
dojo.require("dijit.form.ValidationTextBox"); 
dojo.require("dijit.layout.TabContainer"); 
dojo.require("dijit.layout.ContentPane"); 
dojo.require("dijit.Tooltip"); 
dojo.require("dojo.parser"); 
dojo.require("dojo.fx"); 
dojo.require("dojo.dnd.Manager"); 
dojo.require("dojo.dnd.Source"); 
dojo.require("dojox.layout.ContentPane"); 
dojo.require("dojo.io.iframe"); 

이것은 CDN 또는 src = "", 과 함께 표시되며 내 페이지의 inspect 요소에 많은 요청을 표시합니다. 이유는 무엇입니까?도장을 사용한 서버에 대한 많은 요청

+0

은 아래 질문에 대한 대답입니까? –

답변

1

글쎄, 당신은 flow of Dojo을 이해하고 싶습니다. 그것이 어떻게 작동하는지, 의존성을 어떻게로드하는지 말입니다. 위의 코드 조각에서

우리는 당신이 우리가 requiredefine

requiredefine 비동기 모듈 정의의 일부 (AMD)을 이해 legacy model/version of dojo

먼저 사용하고 볼 수 API.

define을 사용하면 다른 코드에서 사용할 수있는 모듈을 정의 할 수 있습니다. 일반적으로 define은 자바 스크립트 파일에 사용됩니다. 자바 스크립트 파일이 모듈을 정의하고 있습니다. 모든 Dojo 파일은 정의를 사용합니다.

모듈을 정의하지 않고 정의 된 모듈이 필요한 경우 require을 사용합니다. 위젯

로드 그래서 네트워크 및 콘솔에서 당신은 도장 CDN 링크를로드 할 때마다 단순히 init.js 기본 로더 파일을로드하는 것을 관찰 할 수있다. 매우 작고로드가 쉽고 빠릅니다.

그럼 dojo loader가 dojo configuration을 기반으로로드되면 프로젝트에서 사용하고있는 종속성을 찾기 시작합니다. 그래서 언급 한 위젯 (dojo controls, classes, files etc.)은 CDN에서 위젯로드를 시작할 것을 요구합니다.

이 경우 dojo는 전체 dojo 라이브러리를 사용자의 prject에로드하지 않으며 단지 require에 언급 된 위젯 만로드합니다.

이 우려를 응답 할 것이다 희망 :

+0

요청이 적어지는 방법이 있습니까? xhr? –

+0

요청을 최소화하는 가장 좋은 방법은 사용중인 요구 사항에있는 라이브러리 만 언급하는 것입니다. 이러한 요청이 플라이 라이브러리로드 방식에 어떻게 접근했는지는 응용 프로그램의 경량화를 위해 이점으로 제공됩니다. 사용 된 라이브러리 만이 존재하게 될 것입니다 ... –

+0

xhr은 우리가 여기에서 논의하는 목적을 해결하지 못합니다 ... dojo는 그런 방식으로 설계되어 있으므로 하나씩 의존성을로드합니다 ... –