Write your first App
Now that you've successfully installed Arva, you've already got the seed project. We'll dissect it for you right here.
import firebase from 'firebase';
import {FirebaseDataSource} from 'arva-js/data/datasources/FirebaseDataSource.js';
import {provide} from 'arva-js/utils/di/Decorators.js';
import {Injection} from 'arva-js/utils/Injection.js';
import {DataSource} from 'arva-js/data/DataSource.js';
import {App as ArvaApp} from 'arva-js/core/App.js';
/* Importing CSS in jspm bundled builds injects them into the DOM automagically */
import './famous.css';
import './fonts.css';
/* Here we import all controllers we want to use in the app */
import {HomeController} from './controllers/HomeController.js';
export class App extends ArvaApp {
/* References to Dependency Injection created App and Controller instances, so they are not garbage collected. */
static references = {};
static controllers = [HomeController];
@provide(DataSource)
static defaultDataSource() {
firebase.initializeApp({
apiKey: '<api-key>',
authDomain: '<subdomain>.firebaseapp.com',
databaseURL: 'https://<subdomain>.firebaseio.com',
storageBucket: '<subdomain>.appspot.com'
});
return new FirebaseDataSource('/', {});
}
/**
* Called before the App is constructed and before the basic components (Router, Famous Context, Controllers, DataSource)
* have loaded.
*/
static initialize(){
this.start();
}
/**
* Called after the Router, Famous Context, and Controllers have been instantiated,
* but before any Controller method is executed by the Router. Keep in mind that there is still
* a static context here, so no access to "this" of the App instance can be used yet, outside of the static "this.references".
*/
static loaded(){
/* Instantiate things you need before the router is executed here. For example:
*
* this.references.menu = Injection.get(Menu); */
}
/**
* Called by super class after all components (routing, controllers, views, etc.) have been loaded by the Dependency Injection engine.
*/
done(){
}
}
document.addEventListener('deviceready', App.initialize.bind(App));
Updated less than a minute ago