Jak zorganizować pliki JS w projekcie Appcelerator Titanium


Niedawno zacząłem tworzyć aplikację na iPhone'a przy użyciu Titanium Appcelerator. Ponieważ aplikacja to w zasadzie cały JS, potrzebowałem porady, jak powinienem zorganizować ten projekt.
Tworzenie długich plików proceduralnych dla każdego widoku w aplikacji staje się bardzo łatwe. Czy istnieje sposób na włączenie MVC lub jakiejś struktury do projektu?
Dzięki doceniam to.
- Tilo
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Sam Titanium jest zasadniczo MVC, biorąc pod uwagę, że plik app.js jest głównym kontrolerem, a każdy utworzony widok jest widokiem i przekazujesz (lub ustawiasz) dane modelu względem tego widoku.
W Titanium możesz rozłożyć swoją aplikację za pomocą kilku ładnych wbudowanych mechanizmów:
  • Titanium.include https://developer.appcelerator ... .html- Titanium.include pozwala na dołączenie jednego lub więcej plików JS w miejscu, na przykład dyrektywy kompilatora C
    #include
    . Możesz umieścić w tym pliku typowe funkcje i klasy JS, a następnie dołączyć je tam, gdzie chcesz, aby były importowane i dostępne.
  • Titanium.UI.createWindow http://developer.appcelerator. ... .html- możesz stworzyć nowy widok jako właściwość nowego przejścia okna w adresie URL do innego kontekstu JS, który utworzy nowy podkontekst JS i pozwoli ci zachować własną przestrzeń zmiennych (ale nadal da ci dostęp z powrotem do twojego rodzica) .

Ponadto w Titanium możesz tworzyć foldery, które pozwalają logicznie organizować aplikację w sposób odpowiadający Tobie i Twojej aplikacji.

Edit:

obecnie metoda Titanium.Include jest przestarzała.
Jak wspomniano w dokumentacji, musimy stworzyć moduł CommonJS i użyć instrukcji
require ()
.
Więcej informacji o tym oświadczeniu:

Require
http://docs.appcelerator.com/t ... quire
Więcej informacji o modułach:

moduły
https://wiki.appcelerator.org/ ... anium
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ponieważ nie znalazłem odpowiedniego rozwiązania MVC dla mobilnego projektu Titanium, wpadłem na następujące podejście. W przypadku małych aplikacji może to być nadmiernie zaprojektowane, ale może pomóc w obsłudze rosnących aplikacji.
Struktura folderów:
/Resources
/model
/view
/controller
/ui
/iphone
/android
app.js
app.jss

Przestrzeń nazw jest potrzebna do oddzielenia widoków, modeli i kontrolerów, więc definiujemy ją w app.js, który jest naszym głównym kontrolerem:
var app = {
view: {},
controller: {},
model: {},
ui: {}
}

Wewnątrz folderów umieściliśmy po jednym pliku JavaScript dla każdego komponentu. W tym celu moglibyśmy użyć lekkiej biblioteki JavaScript OOP, takiej jak MooTools lub prototyp, albo zdefiniować proste funkcje JS jako nasze obiekty. Jeśli chcesz również dziedziczyć z klas nadrzędnych, biblioteka zdecydowanie ma sens.
Przykłady:
# 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"
}
}

Następnie możemy dołączyć wszystkie niezbędne klasy modelu/widoku/kontrolera za pomocą Ti.include () w pliku app.js i odwołać się do komponentów za pomocą naszej przestrzeni nazw:
Ti.include("controller/MyController.js");
Ti.include("view/MyView.js");
var myController = new app.controller.MyController();
var myView = myController.getView();
myView.open();

Podejście MVC zakłada teraz, że kontroler „controls” określa stan widoku i przekazuje dane z modelu do widoku. Widok składa się tylko z elementu UI i właściwości stylizacji. Każda akcja wykonana w interfejsie użytkownika wywołuje zdarzenie, które nakazuje kontrolerowi wykonanie żądanej akcji.
Ale oczywiście dokładna definicja MVC może się różnić w zależności od osobistego gustu;)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Może również pomóc: podstawowa struktura organizacji projektów mobilnych Titanium:

https://github.com/krawaller/Struct
https://github.com/krawaller/Struct
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Pozwólcie, że zaktualizuję to pytanie, ponieważ większość odpowiedzi została zastąpiona. W czwartym kwartale 2012 r. Appcelerator wydał platformę Alloy MVC (beta) wraz z najnowszymi wersjami IDE i SDK, Titanium Studio 3.0 i SDK 3.0. Alloy jest w pełni zintegrowany ze studiem, więc dość łatwo jest uruchomić i uruchomić podstawową aplikację w mniej niż 15 minut. Alloy wprowadza znaczącą restrukturyzację folderów:


folder/app jest teraz miejscem, w którym znajduje się cały kod programistyczny.


Folder/Resources, w którym znajdował się kod, jest teraz zaktualizowanym odpowiednikiem


folder/build. Skompilowany kod w

/Resources

jest nadpisywany w każdej kompilacji.
Stworzyłem krótkie wprowadzenie (screencast) do tworzenia projektu fusion. Możesz go wyświetlić w moim folderze Dropbox.
Utwórz projekt stopu
https://www.dropbox.com/s/fvdu ... t.mov
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wygląda na to, że Appcelerator stworzył własny

Appcelerator MVC
https://marketplace.appcelerat ... 48971
na rynku, którego jeszcze nie doceniłem.
Dodatkowe informacje:

http://johnkalberer.com/2011/0 ... ample
http://johnkalberer.com/2011/0 ... mple/
/

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się