2016-07-13 16 views
19

Trudno mi zrozumieć prawdziwą różnicę między komponentami i dyrektywami. Teraz rozumiem, że komponenty są znacznie prostsze.Angular 1.5: Dyrektywy a komponenty?

Czy mając to na uwadze, czy istnieje jakikolwiek powód, aby nadal używać dyrektyw podczas używania kątowego 1.5?

Może brakuje tu rzeczywistego kontekstu, ale wydaje się, że komponenty zapewniają łatwiejszy interfejs API.

Więc z jakiego powodu musiałbym nadal używać dyrektywy?

Angular 2 stwierdza, że ​​wszystko jest komponentem, więc dążąc do łatwej migracji z 1,5 do 2, czy nie byłoby sensownie używać tylko komponentów w przyszłości?

W przeszłości użyłem dyrektyw do tworzenia, na przykład, pola tekstowego automatycznego wyszukiwania, nie ma powodu, dla którego nie powinienem robić tego teraz wewnątrz komponentu, prawda? A potem mogę ponownie użyć tego komponentu w innych komponentach, które tworzę?

Byłbym bardzo wdzięczny, gdyby ktoś mógł potwierdzić, co powinienem robić i zalecany sposób postępowania.

Dzięki

Odpowiedz

24

prostu kopiując kątowych dokumenty, ponieważ umieścić go w jak najlepszy sposób mogę myśleć

Zrozumienie Elementy

W kątowe, składnik jest szczególnym rodzajem dyrektywa korzystająca z prostszej konfiguracji, która jest odpowiednia dla struktury aplikacji opartej na komponentach.

Ułatwia to pisanie aplikacji w sposób podobny do korzystania z komponentów Web Components lub korzystania z architektury aplikacji Angular 2.

Zalety komponentów:

  • prostsza konfiguracja niż zwykły dyrektyw
  • promować rozsądnych domyślnych i najlepszych praktyk
  • zoptymalizowany do dyrektyw składowych pisanie komponentów opartych na architekturze
  • ułatwi upgrade do Angular 2

Gdy n ot korzystania Składniki:

  • do dyrektyw, które opierają się na manipulacji DOM, dodawanie detektorów zdarzeń itp, ponieważ funkcje kompilacji i łącza są niedostępne
  • kiedy trzeba zaawansowane opcje rozdzielczości dyrektywa jak priorytetowych terminalu, multi -elementowe
  • kiedy chcesz dyrektywę, która jest wyzwalany przez atrybut lub CSS klasy, a nie element

więcej czytanie: https://docs.angularjs.org/guide/component

+0

Byłoby wspaniale, gdyby gad wspomniał o różnicach :) –

0

Komponenty to w zasadzie nowy typ dyrektywy zaprojektowany dla architektury opartej na komponentach. W wielu aspektach składniki są bardziej ograniczone pod względem ich funkcjonalności, zamiast tego zachęcają do lepszych konwencji i projektów, które faktycznie prowadzą do łatwiejszego do utrzymania i wielokrotnego użytku kodu.

Na przykład komponenty wymuszają izolowany zakres i zdecydowanie zachęcają do jednokierunkowego wiązania. Dlaczego to jest ważne? Ponieważ lepiej to hermetyzuje komponent i zniechęca do tworzenia komponentów ściśle powiązanych z elementem nadrzędnym lub zasięgiem. Oznacza to, że komponujesz komponent w taki sposób, że będziesz w stanie ponownie użyć go w przyszłości bez modyfikacji (zamiast wielokrotnego kopiowania i wklejania, z których wiele ma tendencję do robienia). Ułatwia to również śledzenie i kontrolowanie interakcji i zmian danych.

Komponent nadal może wchodzić w interakcje z zasięgiem nadrzędnym, ale odbywa się to za pośrednictwem wywołań zwrotnych związanych ze zdarzeniami komponentu. Ponownie, to ograniczenie wymusza lub przynajmniej silnie zachęca do projektowania oprogramowania, które ułatwia ponowne użycie komponentu i uchwycić sposób interakcji komponentu z obszarem nadrzędnym i elementami zewnętrznymi.

Komponenty można rejestrować za pomocą metody .component() modułu AngularJS (zwracanej przez angular.module()). Metoda przyjmuje dwa argumenty:

1) Nazwa składnika (w postaci ciągu znaków).

2) Obiekt konfiguracji Component. (Należy pamiętać, że w przeciwieństwie do metody .directive(), metoda ta nie ma funkcji fabrycznego).

// do dyrektywy

module.directive (imię, fn);

// dla komponentu

modułu

.komponent (nazwa, opcje);

Powiązane problemy