/
Native Mobile App Architecture (Titanium)
Native Mobile App Architecture (Titanium)
Titanium General Overview
To understand the architecture of the native mobile application, it's important to first understand the Titanium SDK.
Recommended Reading:
- Getting Started with Titanium: http://wiki.appcelerator.org/display/guides/Getting+Started+with+Titanium
- The Titanium Architecture: http://wiki.appcelerator.org/display/guides/The+Titanium+Architecture
- The Titanium Project Structure: http://wiki.appcelerator.org/display/guides/The+Application+Project+Structure
uMobile Specific Architecture
Façade
- Located at Resources/js/Facade.js
- A singleton mostly concerned with providing global constants for events and states, such as events for session changes.
- Usually called "app".
Local Dictionary
- Allows translation of all native text (not text provided from web services or web views)
- In project root: localization.js
- Currently contains en_US
- Could easily add another language, and switch the property in config.js:
Titanium.App.Properties.setString('locale','en_US');
- Implement in any controller or view that has access to the facade:
require('/js/localization')[Titanium.App.Properties.getString('locale')]
. Will automatically display the correct language.
Models/Proxies
- Are responsible for managing data for native windows (map points for search, directory entries for search).
- Found in js/models.
- Aren't aware of controllers, provide public methods to access data and search for data
- Broadcast application-level events, found in the Facade, so that controllers can respond to model events (such as search begin, search complete, login complete)
Controllers
- Each window that is opened in app.js is bound to a controller, found in js/controllers.
- Responsible for initializing views, reacting to events, and displaying data.
Views/Factories
- Found in js/views
- Most views are for use in specific window controllers.
- Common UI views are found in js/views/UI, and usually create objects by requiring the module and then invoking a create___() method to generate unique instances of views. Eg:
require('/js/views/UI/TitleBar').createTitleBar()
"Stylesheet"
- A Javascript dictionary of styles, loaded by calling
require('/js/style');
- Not automatically applied to elements with selectors, each "class" must be passed in as object to view factories during creation, such as
searchButton = Titanium.UI.createButton(styles.searchButton);
, multiple selections available,