AngularJS Good Practices

From Training Material
Revision as of 15:39, 29 July 2016 by Łukasz Sokołowski (talk | contribs) (→‎Bespoke agenda)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

THIS IS A DRAFT

This text may not be complete.


title
AngularJS Good Practices
author
Lukasz Sokolowski (NobleProg Ltd)

AngularJS Good Practices

AngularJS Good Practices Training Materials

Intro

Angular Bespoke Course Outline

(Proposition of potential agenda, can be adjusted or extended)

2 days training

Bespoke agenda

  • Avoiding major pitfalls of scaling an AngularJS app
  • Proper MVC directory structure
  • Writing Modules in a smarter way
    • Keeping the names consistent
    • Modularize the Header, Footer, Routes
  • Dependency injection and minifying the code
    • Global dependencies
  • Not-overusing Controllers
    • Syntax of 'controllerAs'
    • Using 'bindToController' in our Directives
    • Making 'ng-click' conditional
  • Factory vs Service
    • All providers are singletons
  • Utilizing browser extensions (Batarang, etc)
  • To many watchers and performance issues
  • Scoping
    • Write-only in the controllers
    • Read-only in the templates
    • Object in the scope instead of properties
    • Avoiding to shadow property of the parent '$scope'
    • Prototypical inheritance
    • Keeping scope uncluttered
    • How to talk with sibling objects
  • One-Time Binding
  • Not-manual testing
    • ngMock module
    • Protractor
      • e2e tests with Jasmine
      • '$digest' cycles
    • Karma
      • How to easly close the feedback loop
      • Run tests in parallel across different browsers
      • Real world usage scenarios with different devices
  • Not-using jQuery
    • Change the way of thinking
  • Proper deploying
    • Facade to interact with servers
      • Separation of server interaction and error handling from the model
    • Business logic in models
    • Configure providers before they are injected
    • Proper use of '$scope.$emit()' and '$scope.$broadcast'
    • Automating our workflow
      • yo, grunt, bower
  • Agnular 1 vs Angular 2
    • Differences and similarities
    • Three ways: typescript, pure js, dart
    • Good practices in Angular 2
    • Upgrading from 1