2010-09-09 7 views
6

Ich bin neu bei Appcelerators Titan und Javascript und ich bin daran interessiert, eine iPhone App zu codieren. Ich erkannte, dass "viel" Code für das Erstellen der Benutzeroberfläche benötigt wird. Das ist bis jetzt kein Problem, aber ich neige dazu, diesen Code sinnvoll von meiner Anwendungslogik zu trennen. Was sind die besten Praktiken?Trennung von Logik und UI in Titan (Javascript)

[update]tweetanium ein großartiges Beispiel, wie eine mobile Anwendung Titan zu strukturieren

Antwort

4

ok, ich habe gerade eine kühle Praxis.

i sind die con_file.js mit der Anwendungslogik des view_file.js mit

Titanium.include('../controller/con_file.js'); 

jetzt ich in der Lage bin, die Loch Datenstruktur zuzugreifen.

+2

Sie könnten auch CommonJS versuchen: https://wiki.appcelerator.org/display/guides/Mobile+Best+Practices – Julian

4

ich werde es versuchen:

i neigen dazu, die mvc-pattern für die Entwicklung meiner Anwendung zu verwenden, da ist ziemlich hässlich alle Sachen in einem einzigen js-Datei zu implementieren. Also entschied ich mich, eine Datei für die Ansicht und all die Dinge zu verwenden, die das Look-and-Feel betreffen, eine Datei für die Datenbankverarbeitung (den Controller), insbesondere die SQL-Anweisungen und eine Datei für das abstract data type (das Modell).

ein kurzes Beispiel:

Ansicht: viewConcerningObject.js

Ti.include('object.js'); 

var win = Ti.UI.currentWindow; 
var myObject = new object(); 

var myObjectName = Ti.UI.createLabel({ 
    text:myObject.getName(); 
}); 

win.add(myObjectName); 

Modell: object.js

Ti.include('controllerConceringObject.js'); 

function object(){ 
    this.name = 'myInitialName'; 

    this.getName(){ 
     return this.name; 
    }; 

    this.setName(newName){ 
     this.name = newName; 
    }; 

    this.updateNameFromDb(){ 
     this.name = getNameFromDatabase(); 
    }; 

} 

Controller: controllerConcerningObject.js

function getNameFromDataBase(){ 
    var db = Ti.Database('objects'); 
    var sql = 'SELECT name FROM objects'; 
    var recordset = db.execute(sql); 
    var name = recordset.field(0); 
    recordset.close(); 
    db.close(); 
    return name; 
}; 

so die Ordnerstruktur wie folgt sein könnte:

myProject: folder (viewConcerningObject.js), folderModel (theDatabase.db, object.js), folderController (controllerConcerningObject.js).