Widoki a komponenty w Ember.js
Uczę się ember.js, a ja staram się zrozumieć różnicę między widokiem a komponentem. Widzę oba jako sposób wytwarzania komponentów wielokrotnego użytku.
Ze strony Ember o odsłonach:
Views in Ember.js są zazwyczaj tworzone tylko z następujących powodów:
-Gdy potrzebujesz zaawansowanej obsługi zdarzeń użytkownika
-Gdy chcesz utworzyć komponent wielokrotnego użytku
Ze strony Embera o komponentach:
A komponent to niestandardowy znacznik HTML, którego zachowanie implementujesz za pomocą JavaScript i którego wygląd opisujesz za pomocą szablonów kierownicy. Pozwalają one na tworzenie kontrolek wielokrotnego użytku , które mogą uprościć szablony aplikacji.
Więc jaka jest główna różnica między widokiem a komponentem? A jaki byłby powszechny przykład, w którym wolałabym użyć widoku nad komponentem i vice versa?
3 answers
Ember.Widok
An Ember.View jest obecnie ograniczony do tagów, które są tworzone dla ciebie przez W3C. ale jeśli chcesz zdefiniować własne znaczniki HTML specyficzne dla aplikacji, a następnie zaimplementować ich zachowanie przy użyciu JavaScript? Nie możesz tego zrobić za pomocą żaru.Widok .
Ember.Komponent
Właśnie na to pozwalają komponenty. W rzeczywistości, to tak dobry pomysł, że W3C pracuje obecnie nad Custom Elements spec.
Implementacja komponentów Embera stara się być jak najbliżej specyfikacji Web Components. Raz elementy niestandardowe są powszechnie dostępne w przeglądarkach, powinieneś być w stanie łatwo przenieść swoje komponenty Ember do standardu W3C i mieć je do użytku przez inne frameworki, które przyjęły nowy standard.
Jest to dla nas tak ważne, że ściśle współpracujemy z organami normalizacyjnymi, aby zapewnić nasze wdrożenie komponentów odpowiada harmonogramowi platformy internetowej.
Należy również zauważyć, że Ember.Komponent jest w rzeczywistości Ember.Zobacz (podklasa), ale to jest całkowicie izolowane. Dostęp do właściwości w szablonach należy do obiektu view , a akcje są kierowane również do obiektu view. Nie ma dostępu do otaczającego context
lub Zewnętrznego controller
wszystkie informacje kontekstowe przekazywane są w , czyli Nie w przypadku Ember.Widok , który rzeczywiście ma dostęp do otaczającego go kontrolera, na przykład wewnątrz widoku można zrobić coś w rodzaju this.get('controller')
, co daje kontroler aktualnie skojarzony z tym widokiem.
Więc jaka jest główna różnica między widokiem a komponentem?
Więc główna różnica poza tym, że komponenty pozwalają tworzyć własne tagi i w pewnym momencie w przyszłości, gdy elementy niestandardowe są dostępne również migrować / używać tych komponentów w innych frameworkach, które będą wspierać niestandardowe elementy, jest rzeczywiście, że w pewnym momencie komponent ember będzie Widok nieco przestarzały w zależności od konkretnego przypadku implementacji.
A jaki byłby powszechny przykład, w którym wolałbym używać widoku nad komponentem i vice versa?
Przestrzeganie powyższego zależy wyraźnie od twoich przypadków użycia. Ale z reguły, jeśli potrzebujesz w widoku dostępu do jego otaczający kontroler itp. użyj Ember.Widok , ale jeśli chcesz odizolować widok i przekazać tylko informacje, które muszą działać, czyniąc go kontekstowym i znacznie bardziej wielokrotnego użytku, użyj Ember.Komponent .
Mam nadzieję, że to pomoże.Update
Wraz z publikacją Road to Ember 2.0 zachęcamy teraz do używania komponentów zamiast widoków w większości przypadków.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-12 14:16:13
Odpowiedź jest prosta: Użyj komponentów
Zgodnie z filmem szkoleniowym nagranym w sierpniu 2013 roku, Yehuda Kats i Tom Dale (członkowie zespołu Ember Core) powiedzieli publiczności, aby nie używali widoków, chyba że jesteś programistą frameworku. Wprowadzili wiele ulepszeń do kierownicy i komponentów, więc widoki nie są już potrzebne. Widoki są używane wewnętrznie do zasilania Rzeczy Takich jak {{#if}} i {{outlet}}.
Komponenty również ściśle naśladują komponent www standard, który zostanie wbudowany w przeglądarkę, więc istnieje wiele korzyści pobocznych, aby stać się komfortowym składnikiem Ember.
Aktualizacja 2014-11-27
Teraz jeszcze ważniejsze jest używanie komponentów zamiast widoków, ponieważ Ember 2.0 będzie używał komponentów z funkcją routingu, gdy zostanie wprowadzona trasa, zamiast kontrolera/widoku. Aby zabezpieczyć swoją aplikację na przyszłość, najlepiej trzymać się z dala od widoków.
Źródła:
-
[[17]] Road to Ember 2.0: https://github.com/emberjs/rfcs/pull/15
- przyszłościowy Ember 1.kod x: https://gist.github.com/samselikoff/1d7300ce59d216fdaf97
- nie ma widoku, tylko komponent (Tom Dale): https://speakerdeck.com/tomdale/ember-2-dot-0-in-practice?slide=27
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-10 18:21:53
W obecnym stanie - v2.x
będąc aktualnym stabilnym wydaniem - widoki zostały całkowicie przestarzałe. mówi się, że widoki są usuwane z Ember 2.0 API.
Zatem użycie słowa kluczowego {{view}}
w Ember 2.0 wywoła twierdzenie:
Twierdzenie nie powiodło się: użycie
{{view}}
lub jakakolwiek ścieżka oparta na nim została usunięta w Ember 2.0
Jeśli musisz używać widoków w Ember 2.0 możesz użyć Ember-legacy-views addon, który będzie kompatybilny z Ember do wersji 2.4.
Podsumowując-komponenty są teraźniejszością (usuwane widoki) i przyszłością - będą również zastępować Kontrolery. Zobacz Routable Components RFC .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-27 13:24:04