Przejdźmy do pliku src/http-service/index.ts. To serce naszego Schematic do tworzenia serwisów Http. Tworząc Schematics, operujemy na 3 podstawowych elementach:
Rule
1 2 3 4 5 |
export function httpService(options: HttpServiceOptions): Rule { // Rule Factory return (tree: Tree, context: SchematicContext) => { // Rule return tree; }; } |
- funkcja, która bierze Tree jako paramter i najczęściej zwraca nowe Tree
- może również zwrócić inny Rule lub nic nie zwrócić (void)
- W @angular/devkit istnieje już wiele dostępnych funkcji zwracających Rule
- robi całą robotę – wprowadza zmiany do plików, przekazują zmienne do templatki, wołają zewnętrzne narzędzia
- możemy je łączyć
Rule Factory
1 2 3 |
export function httpService(options: HttpServiceOptions): Rule { ... } |
-
- Rule Factory to Rule podłączony w collection.json, pod nazwą konkretnego Schematic
- przyjmuje parametr options – są to wartości odebrane od użytkownika w konsoli (wymienione w schema.json)
-
- Typ Rule:
1 |
export type Rule = (tree: Tree, context: SchematicContext) => Tree | Observable<Tree> | Rule | void; |
Tree
- Tree jest strukturą danych, która reprezentuje listę plików oraz posiada tzw. „staging area”, czyli listę zmian, która zostanie zaaplikowana na pliki. Zmiany są aplikowane poprzez Rules
- podczas modyfikacji Tree, tak naprawdę nie zmieniamy bezpośrednio listy plików, ale dokonujemy modyfikacji w staging area. Zmiany zostaną dopiero nałożone na koniec.
- na Tree możemy zaaplikować wiele Rules
- taką listą plików może być nasz angularowy projekt
Podsumowując, Tree to nasze pliki w projekcie, który modyfikujemy (lub tworzymy nowe), poprzez Rules.