2010-09-09 57 views
6

Jestem nowym aplikantom tytanu i javascript i jestem zainteresowany kodowaniem aplikacji na iPhone'a. Zauważyłem, że istnieje potrzeba "wielu" kodu do tworzenia interfejsu użytkownika. to nie problem, ale staram się oddzielić ten kod od logiki mojej aplikacji mądrze. jakie są najlepsze praktyki?separacja logiki i interfejsu użytkownika w tytanie (javascript)

[aktualizacja]tweetanium jest doskonałym przykładem, jak struktura aplikacji mobilnej tytanu

Odpowiedz

4

ok, po prostu znalazłem fajny praktyki.

I obejmują con_file.js z logiki aplikacji na view_file.js z

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

teraz jestem w stanie uzyskać dostęp do struktury danych dziura.

+2

Możesz także wypróbować commonJS: https://wiki.appcelerator.org/display/guides/Mobile+Best+Practices – Julian

4

będę musiał spróbować:

I mają tendencję do korzystania z mvc-pattern rozwijania mojej aplikacji od realizacji wszystkich rzeczy w jednym JS-pliku jest dość brzydki. więc postanowiłem użyć jednego pliku dla widoku i wszystkich rzeczy dotyczących wyglądu i stylu, jednego pliku do obsługi bazy danych (kontrolera), szczególnie instrukcji sql i jednego pliku dla abstract data type (model).

krótki przykład:

Wygląd: 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); 

model: 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(); 
    }; 

} 

kontrolera: 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; 
}; 

więc struktura katalogów może być jak poniżej:

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

Powiązane problemy