Naše enterprise aplikace měly jednu společnou vlastnost: server-rendered JSP stránky, jQuery spaghetti a bolestivě pomalé uživatelské rozhraní. Když Google představil AngularJS, viděli jsme šanci to změnit.
Proč AngularJS¶
AngularJS nás zaujal two-way data bindingem, dependency injection (koncept z Javy), direktivami pro znovupoužitelné komponenty a podporou od Googlu. Angular je „opinionated” — říká vám, jak strukturovat aplikaci. Pro enterprise tým, kde potřebujete konzistenci napříč projekty, je to výhoda.
První projekt: interní dashboard¶
angular.module('dashboard', ['ngRoute', 'ngResource'])
.config(function($routeProvider) {
$routeProvider
.when('/projects', {
templateUrl: 'views/projects.html',
controller: 'ProjectsCtrl'
})
.when('/projects/:id', {
templateUrl: 'views/project-detail.html',
controller: 'ProjectDetailCtrl'
});
});
Two-way binding: kouzlo i prokletí¶
Změníte model, view se aktualizuje. Kouzlo prvního dne. Problém přijde s 2000+ watchery — dirty checking zpomalí digest cyklus. Řešení: one-time bindings, track by v ng-repeat.
Architektura a testování¶
Aplikaci jsme rozdělili do modulů podle business domén. Dependency injection umožňuje snadné testování — Karma, Jasmine, Protractor. Pro Java vývojáře zvyklé na Spring je DI přirozený koncept.
Problémy¶
SEO: SPA generuje HTML na klientu — prázdná stránka pro vyhledávače. Křivka učení: Scopes, digest cycle, transclusion — strmá křivka. Angular 2.0: Oznámení kompletního přepisu nás znepokojuje.
SPA je budoucnost enterprise UI¶
Navzdory problémům jsme přesvědčeni, že single-page aplikace jsou správný směr. Uživatelská zkušenost je nesrovnatelně lepší. AngularJS není dokonalý, ale je to zatím nejlepší volba pro týmy přicházející z Java světa.