Próbuję zrozumieć różnicę między Route
a Resource
. Sposób, w jaki rozumiem, to: Resource
pomaga ustawić ścieżki podrzędne obiektu Route
do innego obiektu Route
. Ale niejasne jest, gdy myślę o domyślnym mapowaniu nazw również dla ścieżek.Jaka jest różnica między trasą a zasobem w nowym interfejsie API routera?
Odpowiedz
Proszę zwrócić uwagę, że od 1.11.0 r
this.route
służy tylko zamiastthis.resource
. Źródło: http://guides.emberjs.com/v1.11.0/routing/defining-your-routes/ *
Zapraszamy do obejrzenia tej post dla szczegółowego wyjaśnienia.
To jest szorstka podsumowanie tego postu (mam zmodyfikowany nieco):
Odkąd zmiany do zasobów i trasy wielu ludzi są mylić o znaczeniu dwóch i jak oni wpływać na nazywanie. Oto różnica:
- zasobem - rzecz (model)
- trasa - coś zrobić z rzeczą
Więc to znaczy routera używając trasy oraz zasób może wyglądać tak:
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
});
this.route("another", { path: "/another" });
});
Powoduje to utworzenie/użycie następujących tras:
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PostsNewRoute, PostsNewController, PostsNewView
- AnotherRoute, AnotherController, AnotherView
Jak widać z tego przykładu, efekt zasobem nazwy/nazwy używanych kontrolerów, tras i widoków ("nowa" trasa traktowana jest jako podrzędna dla zasobu "posty"). Cite z oryginalnego źródła (i modyfikować go, ponieważ był irytujący jak Patrick M słusznie zauważył w komentarzach):
Oznacza to podczas tworzenia zasobu stworzy nowy nazw. Ta przestrzeń nazw nosi nazwę zasobu i wszystkie ścieżki podrzędne zostaną do niej wstawione.
Aktualizacja: bardziej skomplikowany przykład z zagnieżdżonych zasobów
Rozważmy następujący bardziej skomplikowany przykład z wielu zagnieżdżonych zasobów:
App.Router.map(function() {
this.resource("posts", { path: "/" }, function() {
this.route("new", { path: "/new" });
this.resource("comments", { path: "/comments" }, function() {
this.route("new", { path: "/new" });
});
});
this.route("another", { path: "/another" });
});
W tym przypadku zasób comments
tworzy nową przestrzeń nazw marki.Oznacza to, że wynikowe trasy w tym przypadku będą następujące. Jak widać, trasa, kontroler i widok dla zasobu komentarzy nie są poprzedzone nazwą trasy macierzystej. Oznacza to, że zagnieżdżenie zasobu w innym zasobie powoduje zresetowanie obszaru nazw (= tworzy nowy obszar nazw).
- PostsRoute, PostsController, PostsView
- PostsIndexRoute, PostsIndexController, PostsIndexView
- PostsNewRoute, PostsNewController, PostsNewView
- CommentsRoute, CommentsController, CommentsView
- CommentsNewRoute, CommentsNewController, CommentsNewView
- AnotherRoute, AnotherContro ller, AnotherView
To zachowanie jest również wyjaśnione w Ember Docs.
- 1. Jaka jest różnica między trasą express.js a sterownikiem?
- 2. Różnica między nowym a przesłonięciem?
- 3. Jaka jest różnica między $ a a $$ a w php?
- 4. W interfejsie API Sparka, Jaka jest różnica między funkcjami makeRDD a funkcją parallelize?
- 5. Jaka jest różnica między == a === w Verilog?
- 6. Jaka jest różnica między Ember.computed.alias a Ember.binding?
- 7. Jaka jest różnica między pakietem a intencją?
- 8. Jaka jest różnica między krotką a kompresją?
- 9. Jaka jest różnica między uchwytem a wątkiem?
- 10. Jaka jest różnica między cancelBubble a stopPropagation?
- 11. Jaka jest różnica między HAVING a WHERE?
- 12. Jaka jest różnica między użytkownikiem a rolą?
- 13. Jaka jest różnica między StudlyCaps a CamelCase?
- 14. Jaka jest różnica między Const a Constant?
- 15. Jaka jest różnica między @Inject a @PersistenceContext?
- 16. Jaka jest różnica między preferredLocalization a preferredLanguage?
- 17. Jaka jest różnica między JavaBean a POJO?
- 18. Jaka jest różnica między podprocesiem.popen a podprocesią.run?
- 19. Jaka jest różnica między funkcjami a zamknięciami?
- 20. Jaka jest różnica między ramką a ramką?
- 21. Jaka jest różnica między hashowaniem a indeksowaniem?
- 22. Jaka jest różnica między UIViewController a UITableViewController
- 23. Jaka jest różnica między przyszłym a shared_future?
- 24. Jaka jest różnica między tasklet a workqueue
- 25. Jaka jest różnica między Listą a ArrayList?
- 26. Jaka jest różnica między PermGenem a Metaspace?
- 27. Jaka jest różnica między Dispatcher.BeginInvoke a Task.Factory.StartNew
- 28. Jaka jest różnica między SUMĄ a SUBTOTALEM?
- 29. jaka jest różnica między CONTENT_FILTER_URI a CONTENT_URI?
- 30. Jaka jest różnica między process.cwd() a __dirname?
To powinno być wyraźniejsze w przewodnikach Ember. Z początku na początku myliłem się z tą koncepcją. –
Doskonałe podsumowanie znakomitej wiadomości. Ale ostatni cytowany fragment nie ma sensu: "Ta przestrzeń nazw będzie miała", która [...] ". Co oznacza" "? Czy to tylko symbol zastępczy dla trasy | Kontroler | Widok? –
Hej Patrick, dzięki za wskazanie tego. Nie mogłem już z tego wykombinować. Dlatego dodałem bardziej złożony przykład z zagnieżdżonymi zasobami. Myślę, że ten cytat odnosi się do tego scenariusza. – mavilein