angularjs

25
AngularJS Maurice de Beijer

Upload: maurice-beijer

Post on 10-May-2015

9.395 views

Category:

Technology


2 download

DESCRIPTION

The slides for the AngularJS presentation I did for the DotNed user group.

TRANSCRIPT

Page 1: AngularJS

AngularJSMaurice de Beijer

Page 2: AngularJS

Who am I?

Maurice de Beijer

The Problem Solver

Microsoft Integration MVP

Freelance developer

DevelopMentor instructor

Twitter: @mauricedb

Blog: http://msmvps.com/blogs/TheProblemSolver/

Web: http://www.TheProblemSolver.nl

E-mail:[email protected]

Page 3: AngularJS

Objectives

What is AngularJS?

Getting started

Directives

Routing

Services

Page 4: AngularJS

What is AngularJS?

AngularJS is an MVC framework for browser based apps

Open source and originally developed at Google

The clean architecture has attracted a large following quickly

Version 1.0 was released in June 2012 Currently at 1.2.0-rc-3

The goal is building CRUD style business applications Not as suitable for games etc

Use declarative programming for UI and imperative programming for the logic

The application is wired together in a declarative way

Supports modern desktop and mobile browsers Internet Explorer version 8 and above

Page 5: AngularJS

Key features

Model View Controller architecture A well known and proven architecture

Declarative two way data binding Automatically synchronizes values between Model and

View

Dynamic templates Makes it very easy to update the user interface

Dependency injections Code dependencies are automatically injected where

needed

Extends HTML with directives Lots of powerful standard directives or create your own

Build with testing in mind Makes it much easier to unit test different parts

Page 6: AngularJS

Extending HTML

Page 7: AngularJS

Extending HTML

Page 8: AngularJS

Tooling

Visual Studio 2012 Several ways to get IntelliSense

Visual Studio 2013 Understands directives and provides IntelliSense

WebStorm Including support for Live Edit

Batarang Chrome plugin

Karma Test Runner

Page 9: AngularJS

Bootstrapping

Automatic bootstrapping Add a reference to AngularJS Add the ngApp attribute

Manual bootstrapping is also possible Gives you more control For example when using AMD/RequireJS

Page 10: AngularJS

The MVC of AngularJS

Model

ViewController

Page 11: AngularJS

Model The business data

Exposed to the view through the $scope

Model

ViewController

Page 12: AngularJS

View

The user interface layer

Data binds to the model

Calls functions on the controller

Use declarative directives for reusable code

Model

ViewController

Page 13: AngularJS

Controller Glues the view and the model together

Provides additional functionality

Uses additional services for reusable logic

Model

ViewController

Page 14: AngularJS

Services

Services are reusable pieces of business logic Separation results in reuse and testability

Created as singleton objects Inject by AngularJS using dependency injection

Services are created as part of a module One module can take a dependency on another module

Modules are groupings of related functionality Also used to bootstrap the application

Model

View

Controller

Services

Page 15: AngularJS

$scope The glue between the Model and View Don’t use as the Model!

Model

ViewController

Page 16: AngularJS

Standard Services

Many general purpose services provided by AngularJS $http

Used for XMLHttpRequest handling $location

Provide information about the current URL $q

A promise/deferred module for asynchronous requests $routeProvider

Configure routes in an SPA $log

Logging service Many more

Page 17: AngularJS

Dependency injection

AngularJS uses dependency injection to decouple modules

Dependencies are automatically injected by the framework

Based on the parameter name

JavaScript is often minified in production Need to provide AngularJS with some extra hints

Page 18: AngularJS

Standard directives

Directives allow you to enhance HTML with new capabilities

Start using HTML as a domain specific language

AngularJS comes with a long list of standard directives ngApp ngBind ngModel ngRepeat ngClick ngEnable/ngDisable ngHide/ngShow ngView …

Page 19: AngularJS

Custom directives

Turn HTML into your Domain Specific Language Use templates to embed complete blocks

Can use either attributes, elements, CSS classes or comments

Directives let you interact with the DOM The place for jQuery code

Page 20: AngularJS

Routing

Used to create SPA style application The page can change without using the server

The ngView is often used to render a template HTML templates loaded when needed Can also be pre loaded as script with type="text/ng-

template"

The $routeProvider service is used to configure the route

The $location service can be used to navigate Using an anchor tag is also possible

The $routeParams service can be used to retrieve parameters

Properties named in the route URL template

Page 21: AngularJS

$http service

The basic service for doing all HTTP requests The building block for all AJAX requests

Can be used as a function $http(config)

Provides a number of shortcut methods $http.post(url, config) $http.get(url, config) $http.put(url, config) $http.delete(url, config)

Uses the promises API as the result Provided by the $q service

Page 22: AngularJS

$resource

Creates a service for working with RESTful services Much easier than using the $http object

Standard functions are already preconfigured Only the common HTTP PUT is missing

Requires a dependency on ngResource Located in angular-resource.js

Page 23: AngularJS

Unit testing AJAX code

The $httpBackend is the service that is responsible Use the XMLHttpRequest object

There is a second version in the ngMock module Used for unit testing code that does HTTP requests

Can be configured to fake HTTP requests Or verify that HTTP calls where made

Page 24: AngularJS

Summary

AngularJS is a complete framework for client side applications

Based on the standard MVC design pattern

Two way data binding makes it easy to build data entry forms

Dependency injection makes it easy to separate modules

Build with testing in mind

Page 25: AngularJS

The code Check http://msmvps.com/blogs/theproblemsolver/