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?

Author: Bradley Trager, 2013-09-03

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.

 169
Author: intuitivepixel,
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:

 15
Author: Johnny Oshika,
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 .

 4
Author: Daniel Kmak,
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