Professional Documents
Culture Documents
pht trin AngularJS theo hng m ngun m. Theo thng s t Github m mnh thy,
hin ti d n AngularJS ang c gn 11000 ngi theo di va hn 2000 lt fork.
- Cng ngh HTML h tr tt cho cc trang web tnh, kiu nh trc nm 2000 vy. Khi
bn xy dng 1 trang web vi PHP, Node/Express, hay Ruby thi n cng ch l mt trang
web tnh vi ni dung c thay i khi bn gi request v my ch, my ch s render 1
trang vi ni dung tng ng. Tuy nhin moi th thay i nhiu t s pht trin ca
HTML5, nht l khi c s chng lng t nhng ng ln nh Google, Yahoo, Facebook, va
s tp hp ng ao ca cng ng m ngun m.
- Douglas Crockford, ngi c bit n nhiu qua JSON va JSLint dng s chnh
lch v dy gia 2 cun sch "Javascript: The definitive guide" v "Javascript: The good
parts" chm bim 1 cch hai hc v JavaScript.
- Tuy nhin, s thnh cng ca jQuery khin JavaScript c nhiu ngi yu thch v
tnh n gian v d s dung. Vic pht trin 1 website s dung AJAX th khng kh, bn
c th dng jQuery lm vic ny vi $.ajax tuy nhin lm th nao xy dng mt phn
mm c th m rng, d test, nng cp v bao tr th khng h n gian v ban thn
JavaScript khng c thit k ngay t u lm nhng vic nay. Do s ra i ca
nhng framework h tr lp trnh vin xy dng ng dung web 1 cch c h thng ra
i nh Sencha, Ember, Knockout, Backbone, va AngularJS.
1.2.2. Angular JS l g?
- Angular l framework javascript mnh m. Angular tng cng HTML cho cc ng dung
web. N c chc nng giam bt qu trnh pht trin ng dung web. T nhiu nm trc,
khi HTML mi bt u, n c d nh xy dng trang web hoc c th ni la mt
cch hin th ti liu tnh, khng xy dng mt ng dung web ng. By gi, hy
tng tng nu HTML ln u tin c dng xy dng cc ng dung web ng,
l Angular. Angular l nhng g HTML s c c nu n c thit k xy dng cc
ng dung web . Li giai thch ny c th kh hiu nhng khi oc tip v sau bn s ngc
nhin vi nhng g Angular c th lm v s hiu ngha nay.
1.2.3. Cac tinh nng chinh
- Hai cch lin kt d liu trong Angular l kha nng thay i gi tr thuc tnh ca i
tng, ng thi giao din ngi dng a ra s thay i ngay ti thi im , va
ngc li. V du, nu bn c thuc tnh ca mt i tng goi l "Page.Title ', mi ln thay
i gi tr' Page.Title, giao din ngi dng t ng cp nht v hin th gi tr mi ca
'Page.Title. V nu bn nhp vo trong giao din ng dung ngi dng ca bn, n c th
cp nht giao din ngi dng va cng cp nht thuc tnh ca i tng. Tt ca u c
x l bi Angular do khng cn phai vit ging nh trong mt s framework javascript
khc. Nhng g cn lm ch n gian la xc nh model ca chng ta, v by gi bt c khi
no mt model c thay i, n s thay i bt c ni nao n c t, c th l trong
i tng cu th hoc trong cc lp i din. Model trong Angular ch l cu trc javascript
c r rang, khng c gi l mt nhng n li rt hu ch.
- Tnh nng mi thc s la c im to nn mt khoang cch khc nhau ln gia Angular
v bt k framework javascript khc. Directives la cp n mt tnh nng m rng
ngha ca t HTML, ng thi cng c th c xem nh la mt cch ch cho trnh
duyt mo mi ca bn. Chng ta bit v header trong HTML5, la i din cho mt tiu
nhng n ch l phn t tnh. Mc d HTML c th c nhiu th , nhng n khng
mnh to ra mt ng dung web p. Vi c im ch dn , chng ta c th to ra t
vng HTML mi trnh duyt hiu n c ngha la gi va n nn lam gi. V du vi Angular
chng ta c th to ra th nh sau <draggable> drag me </ draggable > . Cc vn ban bn
Nguyn Minh Sang
trong tag draggable by gi s tr thnh draggable trong trnh duyt, sau ch cn vit
mt nh ngha ch dn draggable trong ng dung Angular ca chng ta la xong.y la mt
v du n gian ca Angular, n c th lm rt nhiu th hu ch hn. Va n khng ch gii
hn mt phn t html m c sn thc thi cc thuc tnh, cc lp hoc cc ch thch html.
Directives trong Angular khc vi directtives to bi html ch chng c th thc hin
nhiu hanh vi ng hn.
- Nhiu framework cn c template nhng Angular template li ch l html.
- Dependency injection lm cho ng dung Angular d dang hn pht trin, chng ta c
th sp xp m (code) thnh cc module. Bng cch ny, chng ta c th to ra cc thnh
phn ti s dung m c th c goi v sau, bt c khi no cn thit. tng nay la c
bit tt l khi ng dung m rng ln hn va cn phai c m rng, d dng bao tr v
kim chng. Dependency injection l mt cch ghp cc on m code vi nhau, iu
nay i hi phai phn chia m code theo cc chc nng ring bit nh service, controller,
hoc provider nhng khng gii hn chng.
1.2.4. c trng
- Kin trc MVC, Two-way binding, Dynamic templates, Expressions, Modules, Scopes,
Dependency injection, Directives, Routing, Services, Filters, Form validation, Testing in
mind.
1.2.5. M hnh MVC
- M hnh MVC (Model - View - Controller) l mt kin trc phn mm hay m hnh
thit k c s dung trong k thut phn mm. N gip cho cc developer tch ng dung
ca ho ra 3 thnh phn khc nhau Model, View v Controller. Mi thnh phn c mt
nhim vu ring bit va c lp vi cc thnh phn khc.
- M hinh MVC c gii thiu t nhng nm 70 nh mt phn ca Smalltalk, nhng i
vi nn tang web, th n mi c thnh hnh gn y.
- tng ng sau MVC la chia r 3 thnh phn chnh l model(x l, truy xut
database), view(giao din), v controller(iu hng yu cu t ngi dng).
- MVC th hin tnh chuyn nghip trong lp trnh, phn tch thit k. Do c chia thnh
cc thnh phn c lp nn gip pht trin ng dung nhanh, n gian, d nng cp, bao tr.
i vi Angular, View s l DOM, Controller l cc lp JavaScript, cn Model s l d
liu c lu thuc tnh ca cc i tng trong JS.
- Sau khi chng kin nhiu tranh lun v MV*, mt tc gia ca Angular tuyn b
AngularJS l mt MVW framework (Model View Whatever, trong Whatever la vit
tt ca whatever works for you).
1.2.6. SPA Single Page Application
- Mt single page application hay cn c goi la single page interface, la mt web app
hay website hin th va vn trn mt mt ca trang web vi muc ch gip ngi dng c
trai nghim ging nh ang dng ng dung trn desktop.
- La ng dung chy bn trong trinh duyt, khng yu cu phai tai li toan b trang web mi
ln s dung.
- Theo cch nay thi cn phai download angularjs v my va nhng trc tip vao ng dung.
* Dng phin bn c sn trn server cua Google
- Ngoi cch trn ra bn cng c th s dung phin ban nn ca AngularJS c sn trn
server ca Google. S dung cch nay c 2 iu li l tit kim bng thng cho trang web
ca bn v AngularJS s c load nhanh hn nu my ca ngi dng cache
AngularJS.
- Nhng cch nay khng hot ng nu khng c kt ni mng.
<script
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min
.js"></script>
2.2.2. Vi d n gin
<!doctype html>
<html lang="en" ng-app>
<head>
<meta charset="utf-8">
<title>Vi du AngularJS </title>
<script src="js/angular.js"></script>
</head>
<body>
<p>Hello {{'World' + '!'}}</p>
</body>
</html>
Phn tich vi d:
ng-app directive:
Directives la cc ty bin gn vao cc DOM (attribute, element name, CSS class )
HTML compiler ca AngularJS c th thm vao hoc bin i DOM element.
<html ng-app>
Dng script
Chng ta c th tch hp thng template vao file hin hanh thng qua th script vi type la
text/ng-template
<script type="text/ng-template" id="message.html">
<h3>Hello, {{name}}!</h3>
</script>
</body>
</html>
10
Trong v du trn chng ta thy vic khai bo module nh th nao, vy controller khi ng
dung s c khai bo nh th nao. Hy xem v du dui y
index.html
<!doctype html>
<html ng-app="ExampleModule">
<head>
<script
src="http://code.angularjs.org/1.2.12/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div ng-controller="ExampleCtrl">
Hello, {{ name }}!
</div>
</body>
</html>
script.js
var app = angular.module('ExampleModule', []);
app.controller('ExampleController', function($scope) {
$scope.name = 'World';
});
11
index.html
css
style.css
scripts
module_1.js
module_2.js
module_3.js
main.js
12
main.js
var app =
'Module3']);
angular.module('ExampleModule',
['Module1',
'Module2',
app.controller('ExampleController', function($scope) {
$scope.name = 'World';
});
2.2.3. Scope
'$scope' la i tng tham chiu ti model c s dung trong controller. La thanh phn
gn kt gia View va Controller. Scope cung cp cc APIs theo di cc thay i ca
Model : $watch
Scope cung cp cc APIs truyn bt k thay i nao ca Model ti View : $apply
T ng ng b d liu gia Model va View
2.2.4. Model
<input type="text" ng-model="greeting">
{{ greeting }}
13
Ng-controller cho bit controller ang hot ng. on m nay s in ra trinh duyt chui
Hello World! c khai bo trong GreetingController.
2.2.6.Expression (Biu thc)
Expression c s dung trong tt ca cc phn ca AngularJs, vi vy cn phai nm vng
v expression va cch ma Angular s dung, tnh ton. N c bao bi k hiu {{ }}. Mt
bin c khi to t controller thng qua $scope cng c coi la mt expression.
- Expression cc snippets ging JS c t trong bindings, kiu nh {{expression}}.
- c x l bi $parse service.
14
Khi ngi dng nhp d liu vao input thi gi tr s c chuyn thanh ch vit thng.
Mt s filter khc:
{{ "chui ki t vit thng" | uppercase }}
{{ {name: "Sang", age: 21} | json }}
{{ 1304375948024 | date }}
{{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}
Kt qu:
CHUI KI T VIT THNG
{ "name": "Sang", "age": 21 }
May 3, 2011
05/03/2011 @ 5:39AM
15
2.2.8. Directives
Nhng th nh thuc tnh, class, tn ... ca 1 DOM element goi chung l directive.
AngularJS s da vao chng attach cc ch th hoc cc s kin ti DOM element .
Ban thn AngularJS c rt nhiu cc directive : ng-bind, ng-model, ng-click, ngcontroller...
Vic dng directive s giam thiu c s lng th HTML , code HTML nhn s gon
gng v sng sa hn.
AngularJS cung cp cho chng ta 3 loi directive la :
- Directive dng element ( l 1 th HTML ) vit tt l E.
<my-directive></my-directive>
V du:
Chun b tai liu HTML vi 3 3 loi directive:
<!doctype html>
<html ng-app>
<head>
<title>Vi du AngularJS </title>
<script src="js/angular.js"></script>
</head>
<body>
<div ng-controller="myController">
<my-directive></my-directive>
<div my-directive></div>
<div class="my-directive"></div>
Nguyn Minh Sang
16
</div>
</body>
</html>
AngularJS
var app = angular.module('demoApp', []);
app.controller('myController', function($scope) {
$scope.customer = {
name: 'Sang',
address: 'Quang Trung, Go Vap'
};
})
.directive('myDirective', function() {
return {
restrict : 'C',
template: 'Name: {{customer.name}}
Address: {{customer.address}}'
// templateUrl: 'directive_template.html'
};
});
17
V du:
var module = angular.module('myapp', []);
module.service('userService', function(){
this.users = ['Sang', 'Nguyen', 'Minh'];
});
18
Cch 2:
C php:
module.factory('userService', function(){
V du:
Ca 2 cch u to ra c service.
Vi cch 1 sau khi ng k tn service xong bn s c cung cp 1 th hin ca function
m bn truyn vo module.service.
Vi cch 2 sau khi ng k tn factory, trong function truyn vo trong module.factory cn
return th hin ca i tng to bn trong n.
2.2.10. Multiple Views and Routing
i khi trong mt trang, nhiu khi chng ta ch mun hin th mt phn HTML ng vi
mi chc nng cu th m ta khng cn chuyn i trang, Angular l mt full-stack
framework hiu qua gip chng ta c th lam c vic ny nhanh chng v d dng.
Route l b iu hng cc yu cu t pha ngi dng ti cc controller tng ng x
l da theo cc i s truyn trn thanh url. Route trong AngularJS la thanh phn quan
trong gip AngularJs to c ng dung SPA, chuyn trang ma khng cn tai li trinh
duyt.
Trong AngularJs chng ta s s dung $routeProvider bt cc yu cu. Biu thc route
c tnh t sau du #.
19
Xt v du
<!doctype html>
<html lang="en" ng-app="demoApp" >
<head>
<meta charset="utf-8">
<title>Vi du AngularJS </title>
<script src="js/angular.min.js"></script>
<script src="js/angular-route.min.js"></script>
</head>
<body>
<div ng-view></div>
</body>
</html>
T phin ban AngularJs 1.0.7 thi Route c tch thanh mt file js ring bit, va s
dung c n ta phai nhng file angular-route.min.js vao ng dung.
Directive ng-view c s dung hin th d liu.
<div ng-view></div>
20
controller : 'postController'
})
.otherwise({
redirect: '/'
})
}]);
Trong route ti chi tit bai ng c s dung $routeParams service dng nhn cc i s
la id ca bai vit, gip xc nh c chnh xc bai vit cn hin th. ng dn truy cp
ti chi tit bai ng s c dng #/post/id. Trong id la id ca bai ng. Khi cu hinh route
khng cn phai ghi du #.
Khi gp ng dn c dng #/post/id th route s goi ti controller l postController v s
dung template t file detail.html.
.when('/post/:id', {
templateUrl : 'detail.html',
controller : 'postController'
})
21
kim tra.
- Custom Validation
number, url, email, radio, checkbox) kem directives kim tra (required, pattern,
minlength, maxlength, min, max).
View to Model update: tng t nh vy, khi ngi dng tng tc vi 1 control,
22
23
Block code
var contents = fs.readFileSync('hello.txt'); // Dng cho n khi c
xong file.
console.log(contents);
console.log('Thc hin cng vic khc');
Non-block code
fs.readFile('hello.txt', function(contents){
console.log(contents);
});
console.log('Thc hin cng vic khc');
http://localhost:3000
curl
24
Yo
Grunt
Bower
practices
- Built-in preview server
- Ti u anh cc tt
- Package management cc tt
25
- Cc cng cu h tr tt cho vic lp trnh Angular JS: Sublime Text, WebStorm, Emacs..
2.4.2. WebStorm
- Trang ch: http://www.jetbrains.com/webstorm/
- Download: http://download-cf.jetbrains.com/webstorm/WebStorm-8.0.2.exe
- Feature: http://www.jetbrains.com/webstorm/features/
- Phin ban mi nht l 8.0.2
- L phn mm c ph.
- L IDEs duy nht c h tr plug-in Angular JS.
- WebStorm bn ch cn g: ngdc [TAB].
directive('$directiveName$', function factory($injectables$) {
var directiveDefinitionObject = {
$directiveAttrs$
compile: function compile(tElement, tAttrs, transclude) {
$END$
return function (scope, element, attrs) {
}
}
};
return directiveDefinitionObject;
});
26
bn. Va chng trinh s t ng c cp nht khi thay i code trong Angular JS.
- Khng s dung Yeoman:
iu chnh no v code trong Angular JS, khng ging nh khi s dung Yeoman.
27
Angular JS.
o
Test
o
28
(2013) tc gi Michael
29