разделение логики и пользовательского интерфейса в титане (javascript) - PullRequest
6 голосов
/ 09 сентября 2010

Я новичок в appcelerators Titanium и Javascript, и меня интересует кодирование приложения для iphone. я понял, что для создания пользовательского интерфейса нужен код «много». пока это не проблема, но я стараюсь разумно отделять этот код от логики приложения. каковы лучшие практики?

[обновление] tweetanium - отличный пример того, как структурировать мобильное приложение из титана

Ответы [ 2 ]

4 голосов
/ 19 января 2011

Я попробую:

Я склонен использовать mvc-pattern для разработки моего приложения, так как реализация всего материала в одном js-файле довольно уродлива.поэтому я решил использовать один файл для представления и все, что касается внешнего вида, один файл для обработки базы данных (контроллер), особенно операторы sql, и один файл для абстрактного типа данных (модель).

короткий пример:

представление: 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);

модель: 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();
   };

}

контроллер: 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;
};

, поэтому структура папок может выглядеть следующим образом:

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

4 голосов
/ 09 сентября 2010

хорошо, я только что нашел классную практику.

я включил con_file.js с логикой приложения, а view_file.js - с

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

, теперь я могу получить доступ к структуре данных дыры.

...