Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Angular as Integrated Development Platform

Angular as Integrated Development Platform

Angular is the only framework whose core team provides solution for most of the problems you’ll ever meet as part of your development process. Only a few of the tools you can take advantage of are the router, mobile toolkit, CLI, tools for static code analysis and much more! All of them built by Google.

In this talk I’ll discuss why you should consider Angular for your projects and how quickly and efficiently to start building reliable and scalable applications with the framework.

Minko Gechev

January 12, 2017
Tweet

More Decks by Minko Gechev

Other Decks in Programming

Transcript

  1. material 2 Universal PWA forms http compiler renderer core (zones,

    di, abstractions, etc.) router i18n ngUpgrade animations
  2. CLI material 2 Universal PWA forms http compiler renderer core

    (zones, di, abstractions, etc.) router i18n ngUpgrade animations
  3. language services CLI material 2 Universal PWA forms http compiler

    renderer core (zones, di, abstractions, etc.) router i18n ngUpgrade animations
  4. angularfire2 language services CLI material 2 Universal PWA forms http

    compiler renderer core (zones, di, abstractions, etc.) router i18n ngUpgrade animations
  5. • Angular’s AoT compiler • TypeScript compiler • Testing •

    Unit testing • e2e testing • Coverage • Module loader • Bundler • Provides bundling and tree shaking • Linter • TypeScript and CSS • Minifier • Minification & deadcode elimination • Service workers management/generation Angular Tooling
  6. • Angular’s AoT compiler • TypeScript compiler • Testing •

    Unit testing • e2e testing • Coverage • Module loader • Bundler • Provides bundling and tree shaking • Linter • TypeScript and CSS • Minifier • Minification & deadcode elimination • Service workers management/generation Angular Tooling
  7. • Angular’s AoT compiler • TypeScript compiler • Testing •

    Unit testing • e2e testing • Coverage • Module loader • Bundler • Provides bundling and tree shaking • Linter • TypeScript and CSS • Minifier • Minification & deadcode elimination • Service workers management/generation Angular Tooling
  8. • Angular’s AoT compiler • TypeScript compiler • Testing •

    Unit testing • e2e testing • Coverage • Module loader • Bundler • Provides bundling and tree shaking • Linter • TypeScript and CSS • Minifier • Minification & deadcode elimination • Service workers management/generation Angular Tooling
  9. • Angular’s AoT compiler • TypeScript compiler • Testing •

    Unit testing • e2e testing • Coverage • Module loader • Bundler • Provides bundling and tree shaking • Linter • TypeScript and CSS • Minifier • Minification & deadcode elimination • Service workers management/generation Angular Tooling
  10. • Angular’s AoT compiler • TypeScript compiler • Testing •

    Unit testing • e2e testing • Coverage • Module loader • Bundler • Provides bundling and tree shaking • Linter • TypeScript and CSS • Minifier • Minification & deadcode elimination • Service workers management/generation Angular Tooling
  11. • Angular’s AoT compiler • TypeScript compiler • Testing •

    Unit testing • e2e testing • Coverage • Module loader • Bundler • Provides bundling and tree shaking • Linter • TypeScript and CSS • Minifier • Minification & deadcode elimination • Service workers management/generation Angular Tooling
  12. angular-cli • Quick bootstrap of projects • Generating: • Components

    • Services • Directives • Pipes • Support for progressive apps • Codelyzer • many others…
  13. angular-seed • TypeScript transpilation • Statically typed dev and prod

    builds • Extensible task configuration • Out of the box unit-testing • Test coverage • e2e testing with protractor • Codeyzer
  14. @Component({ selector: 'toggle-button', template: '<button #btn (click)="toggle()">{{on}}</button>', styles: ['button {

    width: 300px; }'] }) class ToggleButtonComponent { @ViewChild('btn') button; private on = false; constructor(private r: Renderer) {} toggle() { this.on = !this.on; this.on && this.r.setStyle(this.button, 'opacity', 1); !this.on && this.r.setStyle(this.button, 'opacity', 0.2); } } Pseudo code
  15. @Component({ selector: 'toggle-button', template: '<button #btn (click)="toggle()">{{on}}</button>', styles: ['button {

    width: 300px; }'] }) class ToggleButtonComponent { @ViewChild('btn') button; private on = false; constructor(private r: Renderer) {} toggle() { this.on = !this.on; this.on && this.r.setStyle(this.button, 'opacity', 1); !this.on && this.r.setStyle(this.button, 'opacity', 0.2); } } Pseudo code
  16. @Component({ selector: 'toggle-button', template: '<button #btn (click)="toggle()">{{on}}</button>', styles: ['button {

    width: 300px; }'] }) class ToggleButtonComponent { @ViewChild('btn') button; private on = false; constructor(private r: Renderer) {} toggle() { this.on = !this.on; this.on && this.r.setStyle(this.button, 'opacity', 1); !this.on && this.r.setStyle(this.button, 'opacity', 0.2); } } Pseudo code
  17. @Component({ selector: 'toggle-button', template: '<button #btn (click)="toggle()">{{on}}</button>', styles: ['button {

    width: 300px; }'] }) class ToggleButtonComponent { @ViewChild('btn') button; private on = false; constructor(private r: Renderer) {} toggle() { this.on = !this.on; this.on && this.r.setStyle(this.button, 'opacity', 1); !this.on && this.r.setStyle(this.button, 'opacity', 0.2); } } Pseudo code
  18. @Component({ selector: 'toggle-button', template: '<button #btn (click)="toggle()">{{on}}</button>', styles: ['button {

    width: 300px; }'] }) class ToggleButtonComponent { @ViewChild('btn') button; private on = false; constructor(private r: Renderer) {} toggle() { this.on = !this.on; this.on && this.r.setStyle(this.button, 'opacity', 1); !this.on && this.r.setStyle(this.button, 'opacity', 0.2); } } Pseudo code
  19. @Component({ selector: 'toggle-button', template: '<button #btn (click)="toggle()">{{on}}</button>’, styles: ['button {

    width: 300px; }'] }) class ToggleButtonComponent { @ViewChild('btn') button; private on = false; constructor(private r: Renderer) {} toggle() { this.on = !this.on; this.on && this.r.setStyle(this.button, 'opacity', 1); !this.on && this.r.setStyle(this.button, 'opacity', 0.2); } } Pseudo code
  20. @Component({ selector: 'toggle-button', template: '<button #btn (click)="toggle()">{{on}}</button>', styles: ['button {

    width: 300px; }'] }) class ToggleButtonComponent { @ViewChild('btn') button; private on = false; constructor(private r: Renderer) {} toggle() { this.on = !this.on; this.on && this.r.setStyle(this.button, 'opacity', 1); !this.on && this.r.setStyle(this.button, 'opacity', 0.2); } } Pseudo code
  21. Pseudo code class InternalComponent { create() { this.btn = this.renderer.createElement('button');

    this.localOn = this.context.on; this.renderer.setText(this.btn, this.localOn); } detectChanges() { if (this.localOn !== this.context.on) { this.localOn = this.context.on; this.renderer.setText(this.btn, this.localOn); } } }
  22. Pseudo code class InternalComponent { create() { this.btn = this.renderer.createElement('button');

    this.localOn = this.context.on; this.renderer.setText(this.btn, this.localOn); } detectChanges() { if (this.localOn !== this.context.on) { this.localOn = this.context.on; this.renderer.setText(this.btn, this.localOn); } } }
  23. Pseudo code class InternalComponent { create() { this.btn = this.renderer.createElement('button');

    this.localOn = this.context.on; this.renderer.setText(this.btn, this.localOn); } detectChanges() { if (this.localOn !== this.context.on) { this.localOn = this.context.on; this.renderer.setText(this.btn, this.localOn); } } }
  24. Transpiles an Angular application and performs a set of transformations,

    producing highly optimized VM friendly output Compiler
  25. mobile-toolkit • Offline access to static content • Notifications for

    new versions • Efficient download of deltas • Support of push notifications • AppShell
  26. Angular is… • Built with TypeScript • Compile-time type checking

    • Great IDE/text editors support • Analyzable templates
  27. • Fork the official style guide • Modify the styles

    according to your needs • Introduce the style guide to your team • Verify that each individual code change follows it Enforcing common style
  28. • Fork the official style guide • Modify the styles

    according to your needs • Introduce the style guide to your team • Verify that each individual code change follows it Enforcing common style
  29. • Fork the official style guide • Modify the styles

    according to your needs • Introduce the style guide to your team • Verify that each individual code change follows it Enforcing common style
  30. “codelyzer is a project which aims to enforce common style

    and verify correctness of your program”
  31. Recap • Angular as development platform • Angular CLI and

    angular-seed • Core • Mobile toolkit • Development experience