AngularJS Skriven av: Isak Glans. Datum: 2015-04-29. Kurs: Webbutveckling. Lärare: Per Sahlin. Utbildning: Systemutvecklare i .NET, Newtons Yrkeshögskola. 1 Sammanfattning Syftet med denna uppsats är att ge en praktisk inledning till ramverket AngularJS för nybörjare. Denna guide kommer inte att ge en heltäckande grund i AngularJS, men förhoppningsvis de första stegen som behövs för att komma igång med att lära sig detta ramverk. För att du som läsare skall kunna förstå denna guide så behöver du kunna grunderna HTML och Javascript. Inledning Angular är ett populärt Javacript ramverk (eng. framework) utvecklats av Google omkring 2009. Den används ofta för att programmera ihop det grafiska gränssnittet i såväl mobil- som webbapplikationer. Angular applikationer är tänkt att skapa så kallade single page applikationer (SPA). En single page applikation är en webbapplikation som påminner mer om ett datorprogram (s.k. rich extensible web applications) än en HTML webbsida. Detta innebär att man egentligen utgår ifrån en enda index html fil, och som sedan delvis uppdateras när användaren interagerar med webbapplikationen. Istället för att ladda om sidan på nytt så uppdaterar man exempelvis enbart en div-taggs innehåll. Installation Det första steget för att lära sig Angular är att antingen ladda ner ramverket (https://angularjs.org/), eller också länka in den i din HTML header med ett så kallat CDN script på följande vis: <script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> Om du väljer att ladda ner Angular så får du en zip fil med en rad filer. För att göra de exempel som visas i denna guide så behöver du egentligen bara en fil, nämligen angular.min.js. Nästa steg är att skapa dig en index.html fil, vari du länkar in Angular. Därefter behöver du skapa dig en javascriptfil som du också länkar in i din index.html fil. Nästa steg är att bli bekant med några av de nyckelord som Angular använder i HTML. Angular i HTML Angular är ett kraftfullt ramverk som ger enkla redskap för att skapa kopplingar (eng binding) mellan data och interface (i detta fallet html filen). Så här kan Angular koden se ut i ett HTML dokument : Exempel 1. <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js" ></script> </head> <body> <div ng-app=""> 2 <p>Name: <input type="text" ng-model="name" /></p> <p ng-bind="name"></p> </div> </body> </html> Exempel 1 gör en koppling (eng. binding) mellan input elementet och paragraf-taggen. Det som skrivs i input elementet kommer också att visas i paragrafen. Allt som krävdes var den kod som visas ovan, och AngularJS ramverket. Observera följande nyckelord: ng-app, ng-model, och ng-bind. Dessa är reserverade ord som används i Angular JS. Lite förenklat kan man förklara hur de används i exemplet på följande sätt: • Ng-app säger att html-elementet (med alla sina barnobjekt) är en angular modul. • Ng-model säger att input elementets text är en egenskap i ng-app. • Ng-bind säger att paragrafen är ihopkopplad med input taggen. Exempel 1 kommer egentligen inte att validera i W3C:s valideringstest, eftersom webläsaren inte känner till Angulars syntax. För att komma runt detta problem kan man lägga till HTML taggen data- före ng-taggarna. <div data-ng-app=""> <input type="test" data-ng-model="firstName"> <p>The name is <span data-ng-bind="firstName"></span></p> </div> För att skriva logiska beräkningar i HTML använder man så kallade expressions. En expression skrivs ut med dubbla hakparentser {{ }} på följande vis: <p>My first expression: {{ 5 + 5 }}</p> På detta sätt kan man även skriva ut model data. <div data-ng-app=""> <input type="test" data-ng-model="firstName"> <p>The name is {{firstName}}</p> </div> Variabler och Iterationer Med hjälp av AngularJS kan man skapa variabler i HTML koden, och göra iterationer. Följande exempel skapar en array i body taggen, och sedan itererar igenom den i en ul-tagg: <!DOCTYPE html> <html data-ng-app=""> <head> <title>Iteration</title> </head> <body data-ng-init="names=['Pelle', 'Lisa', 'Ida']"> <ul> 3 <li data-ng-repeat="personName in names"> {{ personName }}</li> </ul> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> </body> </html> Observera att ng-app ligger i HTML-taggen. Detta görs för att knyta hela index.html till en modul. För att deklarera en variabel i AngularJS används syntaxen data-ng-init. Data-ng-repeat säger åt AngularJS att gör en iteration. Ng-repeat kan även ta emot argument som gör iterationen än mer kraftfull. Exempelvis kan man lägga in ett filter i iterationen på följande sätt: <ul> <li data-ng-repeat="personName in names | filter:'Lisa'">{{ personName }}</li> </ul> Designmönster MVW bygger liksom många andra populära ramverk idag, på idén att man skall separera kod logik från presentation. Detta innebär att man försöker att placera logik och data källor i vad som kallas för en model. Den biten av ett projekt som berör presentation kallas för view. För att sammanlänka en model med en view används en controller, men också något som heter scope (mer om detta senare). En del programmerare skulle säga att detta sätt att sammanlänka model och view borde ses som en s.k. modelView arkitektur, och andra att det helt enkelt är en controller som i MVC (Model View Controller). Eftersom systemutvecklarna bakom AngularJS valt att inte ta ställning i denna fråga så har de benämnt sitt designmönster för MVW (Model View Whatever). En AngularJS applikation består, förenklat sett, av följande ”bitar”: module, controller, scope och view. För att förstå dessa ”byggstenar” tänkte jag vissa några exempel. MVM exempel Något förenklat kan man säga att en module representerar en behållare för till exempel controller, factory och m.m. Se bild nedan. 4 Illustration 1: Bild hämtad från video: Wahlin En modul skapas med följande kod: var app = angular.module('myApp', []); Modulen i exemplet ovan har döpts till myApp. Hakparenteserna presenterar s.k. dependencies, men de förklaras inte i denna guide. För att initiera modulen så skriver följande i HTML-taggen i din index.html fil: <html ng-app="myApp"> Nu vet Angular att index.HTML filen är ”knuten” till din modul. Följande kod visar ett exempel som visar en modul, controller och scope. <!DOCTYPE html> <html data-ng-app="demoApp"> <head> <title>Controller & scope</title> </head> <body data-ng-controller="SimpleController"> <h1>Controller & scope</h1> <ul> <li data-ng-repeat="personName in names">{{ personName}}</li> </ul> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> <script> var demoApp = angular.module('demoApp', []); var myControllers = {}; myControllers.SimpleController = function ($scope) { $scope.names = ['Pelle', 'Lisa', 'Ida'] 5 } demoApp.controller(myControllers); </script> </body> </html> En controller i AngularJS har som funktion att hantera logik, och att bland annat spara data i $scope objektet. $scope objektet används sedan i view:en, det vill säga en HTML fil, för att t ex skriva ut datat. $scope kan liknas vid klistret som håller ihop en controller med en view. Den behövs inte deklareras eftersom den skapas av AngularJS. Inte heller behöver man säga åt Angular att skicka med $scope objektet, för det görs automatiskt. Detta var en kort inledning till hur AngularJS. Förhoppningsvis kan detta vara en början på någons väg i att lära sig detta populära javascriptramverk. Referenser - w3schools.com. Tillgänglig: http://www.w3schools.com/angular/angular_intro.asp. - Alicea, Tony (2014-10). Learn and Understand AngularJS - The First 50 Minutes. tillgänglig: https://www.youtube.com/watch?v=ejBkOjEG6F0. - Wahlin Dan (2013-04). AngularJS Fundamentals In 60-ish Minutes, tillgänglig: https://www.youtube.com/watch?v=i9MHigUZKEM. 6
© Copyright 2024