2012-07-09 2 views
0

우리는 클라이언트 측 ExtJS 및 서버 측 Struts, Spring, Hibernate로 개발 된 작동중인 웹 응용 프로그램을 보유하고 있습니다. 이제 GXT (또는 GWT 자체) 로의 마이그레이션을 고려 중입니다. 문제는 GWT/GXT를 처음 접하는 것입니다. 우리는이 길로 내려갈 지 여부를 결정하려고합니다.

1) 지금까지 우리 웹 응용 프로그램에는 2 개의 도메인이 있습니다. 하나는 응용 프로그램 (Struts + ...)이 배포되었고 다른 하나는 주로 쿠키없는 사용자 정의 CDN입니다. 클라이언트와 서버 간의 전송은 주로 XHR 요청, JSON 및/또는 JSONP 송수신입니다. 그러나 우리 앞에 놓인 새로운 접근 방식을 통해, 나는 GXT 어플리케이션 전체에 대해 오직 하나의 도메인만을 가져야한다고 이해하기 시작했습니다. 맞습니까? 아니면 여기에있는 것을 잊어 버렸습니까?

만약 그렇다면 응용 프로그램의 일부 (예 : com.ourcompany.webapp.gxt.server. *)를 주 서버에 배포 할 수 있습니까? GWT가 컴파일하고 생성 한 내용 컴파일러를 다른 CDN 같은 도메인에?

2) 우리가 직면 한 다른 큰 문제는 현재 응용 프로그램이 대부분 3 개의 거대한 모듈로 구성되어 있다는 것입니다. 하나는 "SignIn"을 담당하고, 다른 하나는 "웹탑"을위한 것이고, 세 번째는 "각 사용자가 액세스 할 수있는 모듈"입니다. 후자는 각 사용자의 "액세스 권한"으로 인해 서버에서 생성되었으며 분명히 한 사용자와 다른 사용자가 다를 수 있습니다.

관련이있을 수있는 유일한 문제는 Code Splitting입니다. 비록 이것이 이것이 올바른 해결책인지 완전히 확신 할 수는 없지만.

응용 프로그램이 시작될 때 사용자가 로그인했는지 여부를 확인하고 싶습니다. 그렇지 않은 경우 자바 스크립트 파일의 SignIn 세트 (예 : webapp.signin.nocache.js)를로드 한 다음 사용자가 올바른 사용자 이름/비밀번호를 입력하면이 로그인 파일을 언로드하고 webtop.nocache.js 및 modules.nocache.js를로드합니다.

나를 도울 수 있다면 정말 감사 할 것입니다.초급 GXT 문제

답변

3

1) GWT 앱이 동일한 출처 정책과 다른 도메인에서로드 된 경우. xhr을 다른 도메인으로 보낼 수 없습니다. 이 문제를 해결하기 위해 ScriptTagProxy을 사용할 수 있습니다. 그러나 그것은 매우 순수한 느낌이 들지 않습니다.

2) 응용 프로그램의 특정 부분을 자동으로로드하기 위해 CodeSplitting을 사용할 수 있습니다. 스플릿 포인트를 비동기 호출로 왜곡하면됩니다. 자세한 내용은 compile report을 통해 코드 분할이 얼마나 잘 작동하는지 알 수 있습니다.

그러나 CodeSplitting은 이미로드 된 코드를 언로드하지 않습니다. 정말로 importend가 그렇게한다면 적절한 사용자 의존 모듈을로드하기 위해 사용자를 다른 url로 리디렉션해야합니다.
일단 자바 스크립트 코드가로드되고 실행되면 브라우저 메모리에서 코드를 제거 할 수 없습니다.

Grettings는 피터

+0

는 응답 피터 주셔서 감사합니다. 그러나 1) 두 개의 서로 다른 영역을 사용하는 것이 "실질적으로 좋지 않은 방법"입니까? 2) 비행 중 일부 분리 지점에서 각 사용자에 대해 modules.nocache.js를 생성 할 수 있습니까? – Khosrow

+0

1) 정확하게; 2) if (userA) {startUserAModul();} else if (userB) {startUserBModul();}와 같은 코드가있는 경우 "CodeSplitting"포인트를 startUserXModul 메소드에 넣으면 gwt가 자동으로 각 "modul"에 대한 추가 자바 스크립트 파일을 작성해야합니다. 이 JS 파일은 적절한 modul을 호출 할 때 자동으로로드됩니다. 자세한 컴파일 보고서는 코드 분할에 대한 많은 정보를 제공합니다. – Peter