넥사크로 앱이 실행되는 과정은 아래와 같습니다.
bootstrap
Application을 로딩하기 위해 관련 정보를 확인하고 필요한 자원을 가져오는 과정을 설명합니다. 이 과정을 부트스트랩이라고 표현합니다.
WRE | NRE | |
---|---|---|
1 | index.html | start.json start_android.json start_ios.json |
2 | get bootstrap info | |
3 | update engine | |
4 | update resource (data) | |
5 | load framework files | |
6 | load component modules | |
7 | load Application |
일반적으로 부트스트랩은 컴퓨터가 외부 입력 없이 스스로 시작할 준비를 하는 과정을 의미합니다. 주로 메모리에 담긴 정보를 기반으로 동작하며 부팅(booting)이라고 표현하기도 합니다.
https://en.wikipedia.org/wiki/Bootstrapping
넥사크로 앱 실행과정에서 사용하는 부트스트랩이라는 용어는 앱을 시작할 준비를 하는 과정이라는 표현을 담고 있습니다.
Application 로딩
앱이 실행되기 위해 Application과 연결된 폼을 로딩하는 과정은 아래와 같습니다.
로딩 순서 | 이벤트 발생 | |
---|---|---|
1 | Environment 로딩 | |
2 | Screen 선택 (Screen 정보가 2개 이상인 경우) | |
3 | Screen 환경 정보 로딩 | |
- 선택된 Screen 정보를 screenid 속성값으로 지정한 App 확인 | ||
- Applicaiton 오브젝트 생성 | ||
4 | Environment 설정 처리 (Typedefinition, 속성, Variables) | |
Environment.onload | ||
5 | 테마 로딩 (css, map.js 파일) | |
6 | Initvalue 파일 로딩 | |
7 | Application 로딩 (*.xadl.js 파일) | |
- Application 속성 설정 | ||
Application.onloadingappvariables | ||
- Mainframe 생성 및 초기화 | ||
MainFrame.onactivate | ||
- Frame 생성 및 초기화 | ||
ChildFrame.onactivate | ||
Application.onload | ||
8 | Form 로딩 (*.xfdl.js 파일) | |
Form.oninit | ||
Form.onload | ||
Form.onactivate | ||
Application.onloadforms |
로딩 순서에 따라 아직 생성되지 않는 항목은 사용할 수 없습니다.
예를 들어 Environment.onload 이벤트 함수 내에서 AppVariables에 접근하게 되면 undefined로 표시됩니다.
this.Environment_onload = function(obj:nexacro.Environment,e:nexacro.LoadEventInfo) { trace(nexacro.getApplication().all['Variable0']); //undefined }
폼 로딩
앞에서 설명한 Application 로딩 항목에서 'Form 로딩'부터 'Form.onload 이벤트 발생' 사이의 과정을 좀 더 상세히 살펴보면 아래와 같습니다.
Form 로딩
Form 실행
서브파일 다운로드 및 실행
Form 초기화
Form Style 속성 설정
Form 속성 설정
오브젝트, 컴포넌트, 바인드아이템(BindItem) 생성
엔진 내부에서 처리하는 스크립트 수행
이벤트핸들러 등록
오브젝트, 컴포넌트 메소드 호출:
Object.createComponent
이벤트 발생:
Form.oninit
메소드 호출:
Form.on_created
오브젝트, 컴포넌트 메소드 호출:
Object.on_created
이미지 로딩, transaction 처리
이벤트 발생:
Form.onload
서브파일은 include 방식으로 연결되는 스크립트 파일 등을 의미합니다.
Form에 포함된 Object, Component는 지정된 Z-Order 순서대로 생성합니다.
div, tab 컴포넌트는 url 속성으로 연결된 Form을 가져오는 네트워크 속도에 따라 로딩이 끝나는 시점이 달라질 수 있습니다.