2013-11-20 2 views
0

나는 두 단계로 부팅하는 extjs 응용 프로그램을 개발 중입니다. 시작시에는 로그인 창 & 암호 창이 나타나서 필요한 js 자원 만로드합니다. 성공적으로 로그인하면 모든 재사용 가능한 js 파일을로드하여 뷰포트를 시작합니다.압축 및 ondemand 스크립트 로딩

로그인 할 때 ext-all.js와 app js 파일을로드합니다. 로그인 후 을 실행하면 필요한 js 파일을로드하는 컨트롤러를로드합니다.

문제는 내가 JS 파일을 작게를하고 압축하려는이지만, 엽차 cmd를 도구

 

     >sencha create jsb -a index.html -p app.jsb3 
     >sencha build -p app.jsb3 -d . 
     >java -jar ycompressor.jar --type js -o app-all-compressed.js app-all.js 

를 사용할 때이 앱 all.js과 앱 모두 compressed.js 만 포함 결과적 로그인 단계에서만 필요한 자원.

그런 다음 수동으로 뷰포트 (2 단계 부팅)에서 필요한 js를 포함하여 압축되고 압축 된 post-all.js를 생성 한 jsb3 파일을 수동으로 빌드하려고 시도한 다음 성공적으로이 로그인을이 방법으로 전달한 후이 파일을로드했습니다.

 

     onLoginSuccess(){ 

     Ext.Loader.loadScript({ 
     url: 'post-all.js', 
     scope: me, 
     onLoad: function() { 
      //controllers loading 
      ... 

문제는 이후 all.js가로드 된 경우에도 resuorce 여전히 unminified로드이었다. 리소스가 post-all.js에서 올바르게 압축되고 압축되어 있지만 [ "..."] 리소스의 축소되지 않은 복사본을로드해야하므로 모든 리소스가 2 번로드됩니다.

아이디어가 있으십니까?

감사합니다.

답변

0

모든 것을 한 번에로드하는 것이 훨씬 쉽습니다. 두 번로드 할 이유가 없습니다.

  • Visual : 모든 자바 스크립트를로드하더라도 로그인 대화 상자 만 표시합니다. 나머지는 성공적인 로그인 후에 만 ​​표시됩니다.
  • 보안 : 세션을 통해 모든 서버 리소스에 대한 액세스를 보호하면 악의적 인 사용자가 사용자 인터페이스의 일부분을 표시 할 수는 있지만 데이터를 보거나 다른 것을 할 수는 없습니다.
  • 로딩 시간 : ExtJs 라이브러리의 크기를 고려할 때 로딩 시간의 이점은 최소화됩니다.

이와 같이 문제를 해결하고 Sencha cmd를 사용하여 일반 ExtJ 배포의 단순함을 누릴 수 있습니다.

+0

어쩌면 나는 분명하지 않았다. 나는 한 번에 모든 것을로드하는 것에 신경 쓰지 않는다. 문제는 sencha cmd 도구가 로그인 윈도우에 필요한 리소스를 최소화한다는 것이다. 심지어 전체 축소 패키지를 index.html에 포함시킨다. , 동적 메커니즘은 여전히 ​​손상되지 않은 것들의 재 장작을 강요합니다. 비주얼에 관해서는 뷰포트를 보여주고 싶지 않지만 콘트롤러가 의존성을 가지기 때문에 (저장소, 뷰, 모델에 대한 참조) 컨트롤러가로드되고 뷰포트가 표시되지 않을 때 그러한 구성 요소가 누락됩니다. 그래서 이것은 컨트롤러 로딩을 연기하는 이유입니다. – user1944934