Вопрос

Я недавно начал создавать приложение для iPhone с помощью титана Appcelerator. Поскольку приложение по сути все JS, мне нужно несколько советов о том, как я должен организовать этот проект.

Это становится очень легко просто создавать длинные процессуальные файлы для каждого представления в приложении. Есть ли способ, которым я могу включить MVC или некоторую структуру в проект?

Спасибо, я ценю это. -Тило

Это было полезно?

Решение

Сам Titanium по существу MVC, учитывая, что ваш файл app.js - главный контроллер, а каждый представление, который вы создаете, - это представление, и вы проходите (или устанавливают) данные модели против представления.

В Titanium вы можете разложить ваше приложение, используя пару хороших встроенных механизмов:

  1. Титана. Включить - Titanium.include позволяет включать один или несколько файлов JS на месте, как C #include Директива компилятора. Вы можете поставить общие функции и классы JS в этом файле, а затем включите их, где вы хотите, чтобы они импортированы и доступны.

  2. Titanium.ui.createwindow. - Вы можете создать новый вид как в качестве свойства нового окна пропускания в URL-адреса к другому контексту JS, которое создаст новый субконтекст JS и позволит поддерживать свое собственное пространство переменной (но все равно дайте вам доступ к вашему переменным родитель).

Кроме того, в Titanium вы можете создавать папки, которые позволяют логически организовать ваше приложение таким образом, подходящим для вас и вашего приложения.

Редактировать: Сегодня метод Titanium include устарел. Как упоминается в документации, мы должны создать модуль Commonjs и использовать require() утверждение.

Больше информации об этом заявлении: Требовать

Больше информации о модулях: Модули

Другие советы

Поскольку я не нашел соответствующее решение MVC для проекта мобильного телефона Titanium, я придумал следующий подход. Для небольших приложений это может быть переполнено, но может помочь поддержание растущих приложений.

Структура папки:

/Resources
  /model
  /view
  /controller
  /ui
  /iphone
  /android
  app.js
  app.jss

Для разделения видов, моделей и контроллеров требуется пространство имен, поэтому мы определяем его в App.js, который является нашим главным контроллером:

var app = {
  view: {},
  controller: {},
  model: {},
  ui: {}
}

В папках мы размещаем один файлы JavaScript для каждого компонента. Для этого мы могли бы использовать легкий JavaScript OOP-библиотеку, такой как MOOTOOLS или Prototype или определяют простые функции JS в качестве наших объектов. Если вы также хотите наследовать от родительских классов, библиотека определенно имеет смысл.

Примеры:

# Resources/controller/MyController.js
app.controller.MyController = function() {
   return {
      getView: function() {
         return new app.view.MyView().getView();
      }
   }
}

# Resources/view/MyView.js
app.view.MyView = function() {
   return {
      getView: function() {
         return Ti.UI.createWindow({...});
      }
   }
}

# Resources/view/MyModel.js
app.model.MyModel = function() {
   return {
      some: "data",
      foo: "bar"
   }
}

После этого мы можем включить все необходимые классы модели / просмотра / контроллера с Ti.inClude () в файле App.js и ссылаются на компоненты с нашим пространством имен:

Ti.include("controller/MyController.js");
Ti.include("view/MyView.js");
var myController = new app.controller.MyController();
var myView = myController.getView();
myView.open();

Подход MVC теперь предполагает, что контроллер «управляет» состоянием представления и передает данные из модели в представлении. Вид состоит только из элементов пользовательского интерфейса и свойств для стилизации. Любое действие, которое выполнено в интерфейсе UI, срабатывает событие, которое говорит контроллеру выполнять желаемое действие.

Но, конечно, точное определение MVC может отличаться в зависимости от вашего личного вкуса;)

Это также может помочь: основной структуру того, как организовать проект мобильного телефона Titanium: https://github.com/krawaller/struct.

Позвольте мне обновить этот вопрос, так как большая часть ответов заменяется. В 4 квартале 2012 года Applelerator выпустил основу MVC (Beta) вместе с последним выпуском IDE и SDK, Titanium Studio 3.0 и SDK 3.0. Сплав полностью интегрирован со студией, поэтому довольно легко получить базовое приложение, запущенное менее чем за 15 минут. Сплав вводит значительную реструктуру папки: /приложение Папка теперь, когда весь код разработки проживает.

То /Ресурсы папка, где код используется для проживания, теперь обновляется эквивалент /строить папка. Compabled Code In /Ресурсы перезаписан на каждом сборке.

Я создал короткий вступительный праймер (Screencast) на создание проекта сплава. Вы можете просмотреть его через мою папку Dropbox.

Создать проект сплава

Похоже, appcelerator сделал свои Apcelerator mvc. На рынке я еще не оценил это.

Больше информации: http://johnkalberer.com/2011/09/29/appcelerator-mvc-example/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top