SPA는 웹 사이트를 사용할 때 화면의 전환없이 로딩된 자원을 재활용하여 변경된 부분만 적용하는 방식을 말한다
전통적인 동적 웹 페이지는 서버에서 결과물을 만들어내는 반면, SPA 방식은 브라우저에서 자바스크립트에 의해 결과물이 만들어 진다
적용되는 영역은 크게 다음과 같이 나눌 수 있다
SPA를 적용할 때의 이점은 다음과 같다
SPA를 적용할 때의 고려 사항은 다음과 같다
웹스퀘어에서 SPA가 적용된 부분은 IFRAME에서 적용이 되어 있다
화면 내에서 사용하고자 하는 IFRAME의 개수만큼의 자원을 메인 화면의 페이지 로드 시점에 모두 내려받고 IFRAME 사용할 때 미리 내려받은 자원을 활용하는 형태로 사용
웹스퀘어 화면 파일 호출 방식
ex) http://domain.com/websquare/websquare.html?w2xPath=/MA/MA01M01.xml
페이지 호출 후 Network 구간을 확인하면 페이지가 로딩 될 때 웹스퀘어 엔진을 포함한 그 밖의 모든 resource에 대해 내려 받고 있음을 알 수 있다
ex) http://domain.com/websquare/websquare.html#w2xPath=/MA/MA01M01.xml
호출되는 페이지 이외에 웹스퀘어 엔진 및 js, css 등에 대해서는 내려받고 있지 않음을 알 수 있다
=> query string 방식에 비해 spa 방식을 적용하면, 훨씬 자원을 덜 내려 받기에 보다 빠른 페이지 전환을 적용 할 수 있다
tabControl 컴포넌트의 속성을 보면
spaInitCount 라는 부분을 확인 할 수 있는데, 이 속성에 숫자만 입력 할 수 있고, 입력하면 해당 tabControl 에서 입력된 숫자 만큼의 필요 자원들을 최초 로딩시 미리 다운받는 기능을 제공한다.
이 때 함께 사용하는 속성이 windowMaxNum 이라는 속성이며, 이 속성을 통해서 몇 개 까지의 tab을 보여줄지 제한 할 수 있다
spaInitCount 라는 속성 이외에 다른 속성으로 spaAuto 라는 기능이 있다
spaAuto는 spaInitCount 보다 더 발전된 기능으로서 차이점은 다음과 같다
=> spaAuto 기능은 불필요한 자원 낭비를 방지 할 수 있고, spaInitCount보다 우선 순위가 더 높으며 spaInitCount 속성보다 더 권장하는 기능이다
spaAutoDelay을 통해 최초 화면 load 후 얼마의 시간 후에 다음 번 화면을 위한 자원들을 로딩 받을지 설정 할 수 있다
이와 같이 iframe을 사용시에 spa 기능을 적용하면 보다 빠른 페이지 전환을 할 수 있으며, 불필요한 자원의 낭비를 막기 위해 spaAuto 기능을 더 권장한다는 점을 확인 할 수 있다
그런데도 이와 같은 설정에도 불구하고 iframe의 spa 기능보다는 wframe의 scope 기능을 더 권장하고 있다
그 이유는 iframe의 빈번한 사용이 browser의 메모리를 과도하게 많이 사용하기 때문이다