Webbutveckling med AngularJS

Relevanta dokument
<script src= "

INTRODUKTION TILL ANGULAR JS

Fortsättningskurs Webbklientprogrammering

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Hybridappar. Utveckla mobilappar i HTML, Javascript och CSS

JAVASCRIPT. Beteende

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

Kommunikation och Användargränssnitt

JavaScript. JavaScript Ramverk (Bibliotek) jquery + jquery UI

Kursplanering Utveckling av webbapplikationer

Modern webbutveckling. av Robert Welin-Berger

JavaScript in SharePoint and not just for Apps. Wictor Wilén

Räkna med ASP.NET MVC 3

HTML och CSS. Eric Elfving Institutionen för datavetenskap. 18 augusti 2015

En grundkurs i hemsidor och hur de är uppbyggda

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

Självständigt arbete på grundnivå

Windows Forms Winstrand Development

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

Next -> Next -> Finish

Prototyping och utveckling med AngularJS

Avancerade Webbteknologier 2. AD11g Göteborg 2012 Mobilanpassning

Exemple på Tentauppgifter Webbprogrammering

Laboration 1 XML, XPath, XSLT och JSON

Android översikt. TDDD80 Mobila och sociala applikationer

MVC med Javascript och Ajax. Filip Ekberg

Kompletterande exempel till XSLT

Agil användbarhetsutveckling för handhållna enheter. Per Lind

Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener <scenes>... 3 Typsnitt <fonts>... 3 Övergångar <transitions>...

XML. Extensible Markup Language

Laboration 3 HTML och struktur samt frågorna A - C övningar/uppgifter

HTML och CSS. Eric Elfving Institutionen för Datavetenskap (IDA)

Labb 3: ASP.NET 4.5 Anpassningar av användargränssnittet: Master Pages, Teman, och Kontroller

Labora&on 7 Syfte med laborationen:

Materialspecifikationer webb 2014

A" utveckla kartor med responsiv design. Johan Lah8 Geografisk IT- utvecklare Stadsbyggnadskontoret, Malmö stad

Det ska endast finnas två bilder av samma typ på spelplanen.

Föreläsning 4. CSS Stilmallar för webben

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Content Management System. Publiceringssystem

Moderna Jfokus, Stockholm Monday, February 4, 13

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Services + REST och OAuth

Materialspecifikationer

Hur hänger det ihop? För att kunna kommunicera krävs ett protokoll tcp/ip, http, ftp För att veta var man skall skicka

Introduk+on +ll programmering i JavaScript

Webbutveckling Laboration 1: HTML5 och CSS3.

JavaScript. DOM Scripting

Asp.net mvc intro PER KVARNBRINK,

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Prislista. Information. Se detaljerad info i dokumentet. Se detaljerad info i dokumentet. Se detaljerad info i dokumentet

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

! HTML Formulär! JavaScript! Syntax! Events! DOM. ! URL variabler i en query string (get) ! HTTP post request (post)

För dig som lärare har vi placerat nya inkomna svar från elever under Följ upp uppgifter medan elev på samma ställer ser alla sina aktiva Uppgifter.

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Hi-Fi Prototyping + laborationsgenomgång & verktyg

Använda Chaos desktop och Microstation

TDP013. Node.js, Mocha, Istanbul. Anders Fröberg Institutionen för Datavetenskap

Introduktion Till WordPress

Räkna med ASP.NET Web Forms

ANGULAR 1 TIPS FROM THE TRENCHES

Sammanfattning. Applikationen är utvecklad i Microsofts utvecklingsmiljö Visual Studio 2012.

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Övning MS SQL och MVC del 2

METODER OCH VERKTYG EXEMPEL PÅ UPPDRAG KOMPETENSOMRÅDEN

LEX INSTRUKTION LEX LDAP

Webbteknik för ingenjörer

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Under Kurser visas dina kurser som kort och om där finns nya uppgifter eller anslag visas antalet i kurskortet.

Del 1 och 2 HTML/CSS. Webbutveckling Laboration 1 Nicklas Bostedt

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

W3 What s new in AECOsim Building Designer Workshop Jonas Wahlberg, Application Engineer Building

4.1 Skapa innehållselement

Introduktion till programmering

Content Management System. Publiceringssystem

WinStudio - Uppstart. Drifttagning av operato rspanel med IndraWorks och WinStudio. IndraWorks 14. Version

LATHUND FRONTPAGE 2000 SV/EN

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Projekt Foreläsning VI

Design och konstruktion av grafiska gränssnitt

Lektion 3 HTML, CSS och JavaScript

Så här skriver du ditt första program i C++

Snake App Rapport - Snake App Rapport Utskriven/PDF Export: Copyright Version 1.2 Sidan 1 av 9.

WEBBAPPLIKATION FÖR ADMINISTRERING AV DOKUMENT

En snabb titt på XML LEKTION 6

Labora&on 2 HTML och validering övningar/uppgi:er

INFORMATION FRÅN VITEC. Objektlista XML

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

MÄRKSPRÅK OCH STILMALLAR II EXAMINATIONSUPPGIFT 2 HELENE BROGELAND

Webbens grundbegrepp. Introduktion till programmering. Ytterligare exempel. Exempel på webbsida. Föreläsning 5

On-line produktion TDDC61

CMS. - Content management system

Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande:

Användargränssittet (Front-end) i mobilversionen bygger i stor utsträckning på jquery Mobile-ramverket.

Tillämpad Programmering. Ekonomi + Spel + Javascript

Karusell med länkade omslagsbilder

Webbprogrammering, grundkurs 725G54

Laboration 2: Xhtml och CSS.

Transkript:

Webbutveckling med AngularJS Kommunikation och Användargränssnitt HT 2016 Per Lind

Upplägg Laboration 1 - Skapa en SPA (single-page application) med AngularJS Laboration 2 - Responsiv design, mobile-first m.m.

Laboration 1 Vi kommer använda: AngularJS 1.5.x (1.5.8 senaste release) Bootstrap 3.3.x (3.3.7 senaste release)

https://docs.angularjs.org/guide Dokumentation http://getboostrap.com http://www.w3schools.com/

AngularJS - Varför Angular? Om man vill skapa dynamiska webb appar på klient-sidan så är Angular ett väldigt bra val. Har mycket abstraktion och tar i bakgrunden hand om många av de banala delarna i CRUD (create, read, update and delete) applikationer. Det har utökad HTML syntax i form av directives som låter en defienera nya HTML element och attribut. HTML templates är inte längre statiska mallar. Låter dig organisera dina filer, man kan bygga välstrukturerade skalbara projekt. Använder MVC-mönstret (model - view - controller). Fungerar tillsammans med jquery.

Dokumentsturktur Det är helt fritt att välja dokumentstruktur för projekt. Men rekommendationen är att försöka dela upp filer i en mapp per feature, istället för att t.ex. gruppera views för sig och controllers för sig osv.

Databindning

Databindning angular.module('scopeexample', []).controller('mycontroller', ['$scope', function($scope) { $scope.username = 'World'; $scope.sayhello = function() { $scope.greeting = 'Hello ' + $scope.username + '!'; }; }]); <html ng-app= myapp> <head>... </head> <body ng-controller= mycontroller > <button ng-click= sayhello() >Greet</button> <p>my greeting: {{greeting}}<p> </body> </html> När $scope.greeting tilldelas ett värde i Controller får view att uppdatera sig med nya model värdet

Databindning Genom att använda ngmodel-direktivet binds data till modellen. Angular uttryck inuti {{ }} har tillgång till scope och kan alltså hämta ut model-värden.

AngularJS - Controller och scope Vad är scope? Scope är objektet som håller referenser till applikationens model (variabler och funktioner). Scope fungerar som en koppling mellan controller och view. Controller har som roll att initiera och hantera beteende på $scope objektet.

AngularJS - Directives Angular is what HTML would have been, had it been designed for applications. - från AngularJS Devloper Guide Angular utökar HTML med så kallade directives. Några key features i Angular som använder directives: Data binding med {{ }}. DOM manipulations direktiv så som ngrepeat, ngif, ngshow, nghide etc. Inbyggt stöd för formulärvalidering. Utökat beteende som t.ex. DOM event handling på element. Skriva återanvändbara HTML komponenter.

Bootstrapping index.html Initiera appen med ngapp-direktivet. Detta görs genom att lägga till ng-app som attribut i det element som ska bli er apps rot. <!doctype html> <html ng-app= myapp > <head>...</head> <body>... <script src= angular.js ></script> </body> </html> app.js var app = angular.module('myapp', []);

Fler directives Directives är föregångaren till components och låter en definiera element och attribute som utökar vanlig HTML syntax. Det finns många directives i Angular, vilka ersätter vanlig DOM manipulation som man annars skulle behövt skriva med t.ex. jquery. Om man vill lägga in ytterligare beteende så går det att skriva egna directives. ngclick - kan definiera ett uttryck som anropas när användaren klickar på elementet. ngchange - kan definiera ett uttryck som anropas när ngmodel ändras på elementet (ngmodel krävs). ngclass - kan skriva villkor för när en CSS ska appliceras på ett element.

Components AngularJS 1.5 introducerade component. Det är en förenkling av directive som gör det lättare att skapa egna återanvändabara HTML-mallar med tillhörande controller. Controllern är som standard tillgänglig i HTML mallen under alias:et $ctrl. phone-name.js function PhoneNameController() { }; angular.module('heroapp').component('phonename', { template: '<h1>{{$ctrl.phone.name}}</h1>', controller: PhoneNameController, bindings: { name: '=' } }); index.html... <phone-name name="name"></phone-name>... output: <phone-name name="name" class="ng-isolate-scope"> <h1 class="ng-binding">name: Olof</h1> </phone-name>

Angular route var app = angular.module('myapp', []); app.config(['$locationprovider', '$routeprovider', function($locationprovider, $routeprovider) { $locationprovider.hashprefix('!'); } ]); $routeprovider.when('/view1'){ templateurl: '/view1 controller: View1Controller}); $routeprovider.when(/details/:id){ templateurl: '/details/details.html, controller: DetailsController}); $routeprovider.otherwise({ redirectto: '/view1'}); Det är möjligt att skicka med parameter-värden i en URL-route, genom att använda kolon som prefix. Se details/:id, denna url kommer läsa ut adressen details/123 som Url: details/ $routeparam.id = 123; Utöver templateurl och controller, så är det även möjligt att i routing ha med ett resolve-uttryck som hämtar data från en resurs och skickar den till controller:n. Se $routeprovider.

Bootstrap Twitter Bootstrap kan användas för att få lite snyggare element. Det är ett CSS-ramverk som bygger på ett grid-system med tolv kolumner. <link rel="stylesheet" href="bootstrap.min.css" /> <script src="bootstrap.min.js" ></script> Bootstrap är uppdelat i två delar, ett stylesheet med ett tema och ett javascript bibliotek med UI komponenter så som dropdowns, dialogrutor (modals), tabbar och tooltips m.m. Det finns många färdiga templates att utgå ifrån både på w3schools och getboostrap.

Navbar En av de Bootstrap komponenter som vi kommer se i första laborationen är Navbar. Vilket som hörs på namnet är en toolbar för navigation..navbar.navbar-default.collapse.navbar-collapse

Bootswatch Bootswatch - alternativa Bootstrap teman https://www.bootstrapcdn.com/bootswatch/

Laboration Ni kommer få ett projekt att utgå ifrån på laborationen som baseras på angular-seed. Obs! Angular-seed appen använder CSS temat ifrån html5-boilerplate, men eftersom vi använder Bootstrap kan ni ta bort det. Det finns varken npm eller bower i datorsalarna så om ni använder angular-seed så behöver ni ersätta alla länkar med bower_components/ i index-filen med samma minifierade filer ifrån googleapis eller https://cdnjs.com/. Grupp 1 14/9 Onsdag: 13.15-17.00 28/9 Onsdag: 13.15-17.00 Grupp 2 21/9 Onsdag: 13.15-17.00 5/10 Onsdag: 13.15-17.00

Rekommendationer Om ni kommer arbeta på egna dator så rekommenderas starkt utvecklingsmiljön Webstorm eller Phpstorm. Det är också värt att installera NPM och Bower. Här finns en bra blogpost som kan vara en bra utgångspunkt: http://juristr.com/blog/2014/08/node-grunt-yeom an-bower/ Bower gör livet betydligt lättare när man har många tredje-parts beroende i sitt projekt, då det sköter hämtning och länkning åt en. För att installera beroende kör man kommandot bower update i kommandotolken. bower.json - ifrån angular-seed { } "name": "angular-seed", "description": "A starter project for AngularJS", "version": "0.0.0", "homepage": "https://github.com/angular/angular-seed", "license": "MIT", "private": true, "dependencies": { } "angular": "~1.5.0", "angular-route": "~1.5.0", "angular-loader": "~1.5.0", "angular-mocks": "~1.5.0", "html5-boilerplate": "^5.3.0"