2015-03-26 14 views
8

Zastanawiam się, do czego służy konwencja podczas tworzenia komponentu wewnątrz projektu addon ... Jeśli wygeneruję komponent w moim projekcie addon za pomocą ember-cli @ 0.2.0, projekt utworzy plik js w addon/components, szablon w addon/templates/components oraz plik js w app/components. Część, o której nie ma jasności, to miejsce, w którym szablony powinny żyć dla tych komponentów. Jeśli mój szablon komponentu wymaga częściowego, muszę umieścić szablon częściowy w katalogu app/templates. Jeśli znajduje się w katalogu dodatków/szablonów, nie można go rozwiązać. Pytanie jest następujące: czy najlepiej jest umieścić wszystkie szablony (szablon komponentu i częściowe) w katalogu app/templates lub pozostawić szablon komponentu w katalogu addon/templates/components, a części w katalogu app/templates ? Ten drugi czuje się nieco zdezorganizowany, a pierwszy wydaje się być poprawniejszy tylko z powodu zachowania planu. Ktoś ma jakiś wgląd?[email protected] szablony komponentów w addonie

Z góry dziękuję.

Odpowiedz

11

Ember-cli jest w trakcie intensywnego rozwoju tak dużo struktury plików może się zmienić szybko, ale tutaj na kilka spostrzeżeń na temat aktualnego stanu struktury folderów i dlaczego jest umieszczony tak, to jest:

Folder app/ jest bezpośrednio importowany do aplikacji. Pomocnicy są ściągnięci stąd, dlatego musisz mieć plik dla każdego komponentu w tym folderze. Dodatkowo szablony zostaną pobrane z głównej aplikacji i jako takie będą dostępne w sposób, w jaki szablony są normalnie dostępne w aplikacji ember (render, partial i standardowej rozdzielczości).

Niektórzy ludzie umieszczają wszystkie swoje kody komponentów w app/, ale jest to zły pomysł, ponieważ folder addon/ istnieje nie tylko jako oddzielenie kodu dodatków, ale jako sposób na zaimportowanie przy użyciu importu ES6 . Tak więc, choć nie można bezpośrednio uzyskać dostęp do komponentów pod addon/components/, ty może importować je do aplikacji tak:

import SomeComponent from 'some-addon/components/some-component' 

Jest to bardzo przydatne dla konsumentów zabudowanych jeśli chcą rozszerzyć dodatek dodać niektóre funkcjonalność.

Szablony w addon są prekompilowane w drzewie kompilacji, co sprawia, że ​​dodatki są bardziej odporne (np. Jeśli używają innej wersji htmlbars, będą nadal kompatybilne z aplikacją bazową). Jednak nie są one dostępne za pośrednictwem rezolwerem, więc trzeba je zaimportować ręcznie w komponentach twojego dodatku, która jest dlaczego plan dla urządzeń dodatkowych wygląda następująco:

import Ember from 'ember'; 
import layout from '../templates/components/some-component'; 

export default Ember.Component.extend({ 
    layout: layout 
}); 

style dodatki można umieścić w addon/styles/ lub app/styles/. W wersji addon/styles/ są one również wstępnie kompilowane i domyślnie włączone do aplikacji. Gorąco polecam w tym style app/styles ponieważ to sprawia, że ​​są dostępne za pomocą importu preprocesora w aplikacji bazowej:

@import some-addon/main.css 

To czyni je całkowicie opcjonalne użytkownikom dodatku, bez uciekania się do app.import i config oszustwa (co jest dobrze, ponieważ zagnieżdżone dodatki nie są obsługiwane app.import. Nie używaj go.)

UWAGA: Nie są one automatycznie podzielone na nazwy, więc powinieneś umieścić style w folderze, aby upewnić się, że nie są one w konflikcie z innymi stylami dodatków.

Podsumowując:

  • Wszelkie kod dodatek, który nie musi być dostępny bezpośrednio przez aplikację bazy poprzez pomocników, inicjalizatorów itp powinni żyć w addon/
  • cokolwiek chcesz, aby były dostępne ES6 import powinien żyć w addon/
  • Szablony powinien żyć w addon/templates/ i być importowane ręcznie
  • składowe stubs, inicjatorów i inne pliki, które powinny zostać uwzględnione w standardowej Ember budowy ch Powinien on być dostępny w następujących stylach: app/
  • Style powinny znajdować się w app/styles/ i powinny znajdować się w folderze nazw (np. app/styles/some-addon/)
  • Nie używaj app.import.
Powiązane problemy