We wszystkich przykładach (liderów, gry słowne itp.) Mają jeden plik szablonu HTML. Czy istnieje duży projekt Meteor typu open source z wieloma różnymi plikami szablonów HTML, których możemy użyć jako przykładu najlepszych praktyk? Umieszczenie wszystkiego, czego potrzebuje duża aplikacja, w jednym pliku szablonu nie wydaje się praktyczne.
165
Odpowiedzi:
Połącz to wszystko razem! Z dokumentów:
źródło
Podobnie jak w nieoficjalnym FAQ dotyczącym meteorytów, myślę, że wyjaśnia on, jak zbudować dużą aplikację:
Dowiedz się więcej: Nieoficjalne FAQ Meteor
źródło
mobile-config.js
?Zgadzam się z yagooar, ale zamiast:
Posługiwać się:
main. * pliki są ładowane jako ostatnie. Pomoże to upewnić się, że nie masz żadnych problemów z kolejnością ładowania. Zobacz dokumentację Meteor, http://docs.meteor.com/#structuringyourapp , aby uzyskać więcej informacji.
źródło
Meteor został zaprojektowany w taki sposób, aby ustrukturyzować swoją aplikację w dowolny sposób. Więc jeśli nie podoba ci się twoja struktura, możesz po prostu przenieść plik do nowego katalogu, a nawet podzielić jeden plik na wiele części, a do Meteor jest prawie tak samo. Zwróć uwagę na specjalne traktowanie katalogów klienta, serwera i katalogów publicznych, jak określono na głównej stronie dokumentacji: http://docs.meteor.com/ .
Samo zgrupowanie wszystkiego razem w jednym wypełnieniu HTML z pewnością nie okaże się najlepszą praktyką.
Oto przykład jednej możliwej struktury: w jednej z moich aplikacji, na forum dyskusyjnym, organizuję według modułu lub „typu strony” (strona główna, forum, temat, komentarz), umieszczając pliki .css, .html i .js dla każdego strony razem w jednym katalogu. Mam również moduł „podstawowy”, który zawiera wspólny kod .css i .js oraz szablon główny, który używa {{renderPage}} do renderowania jednego z pozostałych modułów w zależności od routera.
Możesz również organizować według funkcji
Mam nadzieję, że pojawią się bardziej szczegółowe struktury najlepszych praktyk i konwencje nazewnictwa.
źródło
Dla wszystkich, którzy szukają w Google na ten temat:
em
Narzędzie wiersza polecenia (przez EventedMind, faceci za routerem żelaza) jest bardzo pomocne przy takielunku nowy Meteor App. Stworzy ładną strukturę plików / folderów. Jeśli już pracujesz nad aplikacją i chcesz ją zmienić, po prostu skonfiguruj nowy projektem
i możesz wykorzystać go jako inspirację.Zobacz: https://github.com/EventedMind/em
A tutaj: /programming/17509551/what-is-the-best-way-to-organize-templates-in-meteor-js
źródło
Myślę, że struktura plików z Discover Meteor Book jest naprawdę dobra i solidna.
źródło
Utwórz pakiety
Oczywiście nie wszystko pasuje do tego podejścia, ale w dużych aplikacjach będziesz mieć wiele funkcji, które można izolować. Wszystko, co można oddzielić i wykorzystać ponownie, mieści się w pakietach, reszta przechodzi do zwykłej struktury katalogów, jak wspomniano w innych odpowiedziach. Nawet jeśli nie tworzysz pakietów, aby uniknąć narzutów, struktura kodu w sposób modułowy jest dobrym pomysłem (zobacz te sugestie )
Meteor umożliwia precyzyjną kontrolę nad sposobem ładowania plików (kolejność ładowania, gdzie: klient / serwer / oba) i tym, co pakiet eksportuje.
Szczególnie przydatny jest dla mnie łatwy sposób udostępniania logiki między powiązanymi plikami. Załóżmy na przykład, że chcesz wykonać jakąś funkcję użytkową i używać jej w różnych plikach. Po prostu ustawiasz go jako „globalny” (bez
var
) i Meteor umieści go w przestrzeni nazw pakietu, więc nie będzie zanieczyszczał globalnej przestrzeni nazwOto oficjalny dokument
źródło
Po chwili oderwania się od kodowania meteorjs, cieszę się, że mam trochę wolnego czasu na stworzenie dość złożonej gry online. Struktura aplikacji była jedną z moich pierwszych zmartwień i wygląda na to, że kilku bardzo dobrych programistów poparło metodę struktury aplikacji obejmującą tylko pakiet, która pozwala na luźne łączenie funkcjonalnie odrębnych pakietów. To podejście ma inne zalety, a 2 bardzo dobre artykuły wyjaśniające to podejście można znaleźć tutaj:
http://www.matb33.me/2013/09/05/meteor-project-structure.html http://www.manuel-schoebel.com/blog/meteorjs-package-only-app-structure-with-mediator -wzór
źródło
Mamy duży projekt (prawdopodobnie jeden z największych projektów Meteor, jakie ktokolwiek zbudował do tej pory, ponieważ był rozwijany w pełnym wymiarze przez 1,5 roku). Używamy tego samego zestawu nazw plików w każdym widoku. Jest bardzo spójny i pomaga nam szybko znaleźć dokładnie to, czego szukamy:
W projekcie wygląda to tak:
Powiązane szablony są po prostu przechowywane razem w tym samym pliku. Zawartość
view/order/checkout/templates.html
pokazanego zwiniętego tutaj:Używamy podfolderów, gdy widoki stają się złożone z wieloma częściami:
Tworzymy również za pomocą WebStorm, niezwykle wydajnego i elastycznego edytora do programowania Meteor. Uważamy, że jest to niezwykle pomocne podczas wyszukiwania i organizowania naszego kodu oraz produktywnej pracy.
Chętnie udostępnię szczegóły na życzenie.
źródło
Użyj interfejsu CLI rusztowania iron-cli. To bardzo ułatwia sprawę.
https://github.com/iron-meteor/iron-cli
po zainstalowaniu. użyj,
iron create my-app
aby utworzyć nowy projekt. Stworzy dla Ciebie następującą strukturę. Możesz również użyć tego w istniejących projektach. użyjiron migrate
w katalogu projektu.źródło
Postępuję zgodnie z formatem mattdeom boilerplate, który zawiera już żelazny router i model (Collection2). Zobacz poniżej:
źródło
Istnieje wiele różnych podejść do tworzenia struktury aplikacji. Na przykład, jeśli masz router i różne szablony stron, a każdy szablon strony ma wiele części i tak dalej, ustrukturyzowałbym to na podstawie semantyki z wyższego> niższego poziomu.
Na przykład:
Oczywiście możesz umieścić szablony wiadomości we wspólnym folderze, ponieważ możesz użyć szablonu wiadomości na różnych stronach.
Myślę, że najlepiej jest zorganizować swoją aplikację w sposób, który Ci odpowiada.
Napisałem małą aplikację tutaj: http://gold.meteor.com i jest tak mała, że używam tylko jednego pliku html i tylko jednego pliku template.js .. :)
Mam nadzieję, że to trochę pomoże
źródło
W Evented Mind pojawiła się nowa klasa o nazwie Setting Up Meteor Projects, która dotyczy tego, ale także mówi o konfiguracji projektu i ustawianiu środowiska programistycznego.
Z filmu o strukturze aplikacji w klasie: Meteor nie ma zbyt mocnej opinii na temat struktury Twojej aplikacji, ale oto kilka reguł:
1) Kolejność ładowania - Meteor najpierw udaje się do najgłębszej lokalizacji w katalogu plików i przetwarza pliki w kolejności alfabetycznej
2) klient i serwer to specjalne foldery rozpoznawane przez Meteor
Nasza struktura wygląda następująco:
Todos_controller rozszerza RouteController, coś, co jest dostarczane z Iron Router.
em
Narzędzie wspomniano powyżej jest również uzyskanie dużego aktualizację już teraz, a powinno być o wiele lepiej i dostępna pod adresem: https://github.com/EventedMind/emźródło
Szukam również najlepszych praktyk, aby ulepszyć i skalować moje aplikacje za pomocą dobrze przemyślanej architektury. Wszystkie powyższe praktyki sprawdzają się w przypadku małych i średnich aplikacji, ale zawodzą, gdy pracujesz w większym zespole. Próbowałem na kilka sposobów:
1) Postępowałem zgodnie z tą strategią: https://github.com/aldeed/meteor-autoform, aby skalować i ponownie wykorzystywać szablony. Autor ma bardzo dobry pomysł na projektowanie komponentów i terenów. Obecnie wdrażam go, ponieważ społeczność opracowała 36 pakietów, które obejmują prawie każdy przypadek i mogę używać TypeScript, aby zachować bezpieczeństwo pisania na etapie rozwoju.
Oto dobry post na blogu, jak to zrobić: http://blog.east5th.co/2015/01/13/custom-block-helpers-and-meteor-composability/ oraz tutaj: http: // meteorpedia .com / read / Blaze_Notes
2) Ten wygląda tak obiecująco, ale ostatnio nie był aktualizowany. Jest to pakiet napisany w skrypcie kawowym o nazwie. Komponenty Blaze ( https://github.com/peerlibrary/meteor-blaze-components ) dla Meteor to system do łatwego tworzenia złożonych elementów UI, które muszą być ponownie użyte w Twojej aplikacji Meteor. Możesz ich używać w CoffeeScript, waniliowym JavaScript i ES6. Najlepsze jest to, że komponenty są OOP. Oto jeden z ich przykładów:
3) Lubię typy i transpilery, które mówią mi, gdzie i kiedy coś pójdzie nie tak. Używam TypeScript do pracy z Meteor i znalazłem następujące repozytorium: https://github.com/dataflows/meteor-typescript-utils wygląda na to, że twórca próbował osiągnąć podejście MVC.
Niestety ten projekt nie jest utrzymywany ani aktywnie rozwijany.
4) i myślę, że już o tym wspomniano, można skalować za pomocą pakietów. To wymaga dobrego abstrakcyjnego sposobu myślenia. Wydaje się, że działa dla Telescope: https://github.com/TelescopeJS/Telescope
5) rozszerzenie meteor-template - zapewnia różne sposoby kopiowania pomocników szablonów, programów obsługi zdarzeń i hooków między szablonami, umożliwiając ponowne użycie kodu; Wadą jest to, że wszelkie kopiowanie musi być wykonywane przez programistę, często w kółko, co staje się problematyczne wraz ze wzrostem bazy kodu; ponadto bez jasno zdefiniowanej społeczności API nie można tworzyć i udostępniać komponentów
6) Komponenty Flow - Komponenty Flow są bliżej Reacta w projekcie API, podczas gdy Komponenty Blaze zachowują znane pojęcia, takie jak konteksty danych i pomoce szablonów; Z drugiej strony, komponenty Flow nadal używają programów obsługi zdarzeń opartych na szablonach, podczas gdy składniki Blaze sprawiają, że są one metodami klasowymi, dzięki czemu łatwiej jest je rozszerzać lub zastępować poprzez dziedziczenie; generalnie komponenty Blaze wydają się być bardziej zorientowane na OOP; Komponenty Flow nie zostały jeszcze oficjalnie wydane ( kredyty tekstowe dla nr 5 i nr 6 https://github.com/peerlibrary/meteor-blaze-components#javascript-and-es6-support )
Numery 2 i 3 również wymagają przyzwyczajenia, ale z czasem przyspieszysz rozwój. Numer cztery pozwala budować i testować komponenty, aby uczynić kod bardziej stabilnym. Numer trzy ma tę zaletę, że typescript zapewnia pełne bezpieczeństwo typów, co jest ogromnym plusem, gdy tworzysz w zespole ze słabą dokumentacją. Jednak obecnie przenoszę numer dwa na TypeScript, ponieważ czuję się bardzo komfortowo z nim pracować i nie muszę dostosowywać pakietu kompilatora, aby działał z Meteor, gdy nie używam Gulp.
Wciąż ciężko jest znaleźć właściwy sposób pracy z Meteor. Musisz sam to rozgryźć, w przeciwnym razie otrzymasz ładnie ułożoną strukturę folderów, ale nie masz pojęcia, gdzie wszystko jest. Miłego kodowania.
źródło