Frontend User Group
Mit AngularJS Projekte schnell an die Wand fahren
Mit AngularJS Projekte schnell an die Wand fahren
Themen
- Hohes Maß an Automatisierung
- Testbarer Code
- Modularisierung
- Strikte Trennung von Repräsentations- und Business-Logik
Allgemeins zu Angular
- Model View Whatever Pattern
- Dependeny Injection
- Databinding
- Expressive Html
- Kein Konzept für Models
- Tipp: Module featureorientiert ablegen
- Scaffolding: Angularseed
Herausforderungen in Enterprise-JavaScript-Projekten
- kein Compiler
- keine „natürliche“ Strukturierung
- Loser Zusammenhang der Dateien
- Dynamische Typisierung
- Kein „Klassen“-Konzept
- Asynchronität
- Client-seitige Ausführung
Problem: unzureichende Automatisierung
- Trennung FE-Abhängigkeiten in Bower (dadurch wird zb. Angular nur einmal runterladen, wenn es von mehreren libs benötigt wird)
- npm scripts
- JSHint (besser als JSLint); alternativ ESLint
- Zusätzlich Html validieren
Von Anfang an Unit-Tests
- Noch besser: TDD oder Test-first
- Testbarkeit ist wichtige Metrik für Qualität
- In Angular: „Nur ein testbarer Controller kann ein guter Controller sein“
- Testbare Html-Komponenten brauchen Ids
- Frontend-Code lässt sich auch testen (Direktiven und Controller)
- Strikte Trennung von View und Logik
- Controller darf nicht vom DOM abhängen
Von Anfang an Unit-Tests
- Schnelles Testfeedback (kl. 5s)
- Gui-Tests: Page Object Pattern
- Jasmine: leichterer Einstieg als bei Mocha
- jasmine-jquery
Problem: ng-controller statt Direktiven
- Zu viel Logik in Controller ist schlecht
- komplizierte Scope-Abhängigkeiten
- schwer verständlicher Code
- duplizierter Code
- Ähnliche oder duplizierte Controller
Domänenspezifische Sprache mit Direktiven
- Direktiven sind DAS Feature von AngularJS
- eine Direktive ist in sich abgeschlossen, bestehend aus
- HTML Template
- Controller
- Styling
- siehe auch ReactJS, wo Komponenten sehr modular aufgebaut sind
- Angular 2 ist sehr stark von React beeinflusst
(Noch) besserer Code durch
TypeScript
- Typisierung (Typdeklarationen, Klassen, Interfaces)
- Compile-Errors
- kommt mit vielen zukünftigen EcmaScript-Features
- Serverseitiges DTO (z.B. in Java geschrieben) kann als TS-DTO generiert werden
JQuery considered harmful
- im Zusammenhang mit Frameworks wie Angular ist JQuery gefährlich, weil man sehr einfach globale Dom-Änderungen machen kann
Das
War`s
Mit AngularJS Projekte schnell an die Wand fahren
By Michael Müller
Mit AngularJS Projekte schnell an die Wand fahren
- 329