PG6300-14 webutvikling og api-design

 

01: Introduksjon, JS, (basic) Angular

Webutvikling

Api-design

  • (HTTP) GET /users
     
  • (HTTP) GET /users/theneva

Gjennomføring

hva skal vi gjennom?

  • MEAN-stacken (MongoDB, Express, AngularJS, Node.js)
     
  • Application Programming Interface (API)
     
  • REST (vs. SOAP?)
     
  • Real-time updates (WebSockets)
     
  • Cross-Origin Resource Sharing (CORS)
     
  • Databaser: dokumenter (vs. relasjoner)
     
  • Informasjonssikkerhet i webutvikling med API

Hvordan gjør vi det?

  • 12 økter + mappe med 4 elementer
     
  • Element vektes n * 10 % mot endelig karakter
  1. 1 uke til løsning
  2. Feedback
  3. 1 uke til forbedring

Forelesninger

(plan på It's Learning, plan noe åpen for endring)

 

  1. Hello, course: JavaScript + Angular
  2. Hello, API: Express + Node.js
  3. Persistent storage: MongoDB (Mongoose)
  4. Toolchain & modularisering av API
  5. Mobilutvikling mot API
  6. Sikring av informasjon og API
  7. Routing, user profiles, login
  8. Real-time updates (WebSockets)
  9. Testing
  10. Opprydding
  11. Deployment
  12. Oppsummering

Pensum

$19.24 for Kindle edition @ Amazon

(kan leses online)

 

Tar et par timer å bla gjennom

(eller en uke å løse oppgavene til)

 

Lenes tungt på

 

Det er under 150 kroner

Pls read it

MEAN

MongoDB & Express & AngularJS & Node.js

JavaScript

var greeting = 'Hello, world!';

alert(greeting);

console.log('greeting: ' + greeting);

var greetings = ['hello', 'hi'];

// "Hello", then "hi"
for (var i = 0; i < greetings.length; i++) {
    alert(greetings[i]);
}

FUnksjoner

// Named functions
var plus = function(a, b) {
    return a + b;
}

plus(1, 2); // 3

plus('Hello, ', 'world!'); // 'Hello, world!'

Function in a function in a function in a...

var sumFrom1ToLimit = function(limit, plusFunction) {
    var sum = 0;

    for (var i = 1; i <= limit; i++) {
        sum = plusFunction(sum, i); // !
    }

    return sum;
}

// 1 + 2 + 3 + ... + 10
sumFrom1ToLimit(10, function(a, b) { return a + b; }); // 55

=== operator

http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons

== operator

http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons

Chrome DevTools

javascript object notation

// Java language object:
public class Language {
    private String name;

    public void setName(String name) { this.name = name; }

    public void getName() { return name; }
}

// JSON representation:
{ "name": "..." }

// JSON list: [ ... ]

[ // start simple list of strings
    "hello",
    "world"
] // end list

// JSON list of objects: [ { ... }, { ... } ]

[ // start list of languages
    { "name": "JavaScript" },     // language object comma
    { "name": "Java" },           // language object comma
    { "name": "C#" }              // language object
] // end list

JSON er gyldig javascript

var someLanguage = { "name": "Java" };

var languages = [
    { "name": "C#" },
    someLanguage,
    { "name": "Haskell" }
];

console.log(languages);

Fordeler?

Ulemper?

AJAX / AJAJ

  • Hent data fra utenfor koden
    • Filer, API-er, ...?
       
  • XMLHttpRequest i plain JS
  • "MVC"-rammeverk for web apps (klientside)
     
  • Deklarativt (vs. imperative JQuery)
     
  • Statisk web app

Model-View-Controller

  • Pattern for separasjon av logikk
     
  • blah blah


     
  • MVP?

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

Angular Templates

HTML

 

Directives (ng-app, ng-model, ng-repeat)

 

{{ Expressions }}

 

Model

Data binding

https://docs.angularjs.org/guide/databinding

Data binding example

<div ng-app ng-init="qty=1;cost=2">
  <b>Invoice:</b>
  <div>
    Quantity: <input type="number" min="0" ng-model="qty">
  </div>
  <div>
    Costs: <input type="number" min="0" ng-model="cost">
  </div>
  <div>
    <b>Total:</b> {{qty * cost | currency}}
  </div>
</div>

Controllers

<html ng-app="myFirstNamesApp">
<head></head>
<body ng-controller="NamesController">
<ul ng-repeat="name in names">
    <li>{{name}}</li>
</ul>
<script src="./angular.js"></script>
<script>
    var app = angular.module('myFirstNamesApp', []);
    app.controller('NamesController', function ($scope) {
        $scope.names = [
            'Sterling Archer', 'Malory Archer', 'Lana Kane', 'Algernop Krieger'];
    });
</script>
</body>
</html>
  • Ansvarlig for informasjon til view
     
  • Må registreres

Øving

  1. Installer IDE (IntelliJ eller WebStorm plz)
     
  2. Installer Node og NPM (dekket i tutorial)
     
  3. Angular tutorial step 0, 1, 2, 3, 4 (minus testing)

PG6300-14-01 Introduksjon, JS, Angular

By theneva

PG6300-14-01 Introduksjon, JS, Angular

Forelesning 1 i PG6300-14 Webutvikling og API-design

  • 831