Как организовать файлы JS в проекте Titanium Appcelerator
-
24-09-2019 - |
Вопрос
Я недавно начал создавать приложение для iPhone с помощью титана Appcelerator. Поскольку приложение по сути все JS, мне нужно несколько советов о том, как я должен организовать этот проект.
Это становится очень легко просто создавать длинные процессуальные файлы для каждого представления в приложении. Есть ли способ, которым я могу включить MVC или некоторую структуру в проект?
Спасибо, я ценю это. -Тило
Решение
Сам Titanium по существу MVC, учитывая, что ваш файл app.js - главный контроллер, а каждый представление, который вы создаете, - это представление, и вы проходите (или устанавливают) данные модели против представления.
В Titanium вы можете разложить ваше приложение, используя пару хороших встроенных механизмов:
Титана. Включить - Titanium.include позволяет включать один или несколько файлов JS на месте, как C
#include
Директива компилятора. Вы можете поставить общие функции и классы JS в этом файле, а затем включите их, где вы хотите, чтобы они импортированы и доступны.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/