1. Trang chủ
  2. » Luận Văn - Báo Cáo

angularJS tiếng việt ạ- lập trình

31 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 368,2 KB

Nội dung

M CL C CH NG I: TỔNG QUAN V ANGULAR JS FRAMEWORK 1.1 Ngơn ngữ lập trình web JavaScript 1.1.1 Lịch sử phát triển .1 1.1.2 Javascript gì? 1.1.3 Javascript làm đ ợc gì? 1.2 T̉ng quan v̀ AngularJs framework 1.2.1 Lịch sử phát triển 1.2.2 Angular JS gì? 1.2.3 Các tính 1.2.4 Đặc tr ng 1.2.5 Mơ hình MVC 1.2.6 SPA – Single Page Application .5 CH NG II: ANGULAR JS FRAMEWORK 2.1 T i ph i sử d ng AngularJs? 2.2 AngularJs đ c lập trình nh th nào? 2.2.1 C̀i đặt AngularJs .6 2.2.2 Ví ḍ đơn gỉn 2.2 Ćc thƠnh ph̀n c̉a AngularJs 2.2.1 Angular Template .8 2.2.2 Modules 2.2.3 Scope 13 2.2.4 Model .13 2.2.5 Controller .13 2.2.6.Expression (Biểu th́c) 14 2.2.7 Filters (Ḅ ḷc) .15 2.2.8 Directives .16 2.2.9 Services 18 2.2.10 Multiple Views and Routing 19 2.2.11 Form validation 22 2.3 Lập trình AngularJS ph́a server với Node.js 23 2.3.1.Node.js gì? 23 2.3.2.Node.js l̀m đ ợc gì? 23 2.3.3 Block code Non-block code 23 2.3.4 ng ḍng 24 2.4 Cơng c lập trình với AngularJS .25 2.4.1 Yeoman 25 2.4.2 WebStorm 26 2.5 Khởi ch y ng d ng 27 2.6 Testing and Debug 27 2.6.1 Karma .27 2.6.2 C̀i đặt Karma 27 2.6.3 Test với Karma .27 TÀI LIỆU THAM KH O .29 T̀m hiểu v̀ AngularJS CH NG I: TỔNG QUAN V ANGULAR JS FRAMEWORK 1.1 Ngôn ngữ lập trình web JavaScript 1.1.1 Lịch sử phát triển - Đ ợc phát triển b i Brendan Eich Hãng truỳn thông Netscape với tên Mocha, sau đổi tên thành LiveScript, cuối thành JavaScript - JavaScript đ ợc bổ sung vào trình duyệt Netscape phiên b̉n 2.0b3 c a trình duyệt ǹy v̀o tháng 12 năm 1995 JavaScript đ ợc bổ sung vào trình duyệt Internet Explorer Internet Explorer phiên b̉n 3.0 đ ợc phát h̀nh tháng năm 1996 1.1.2 Javascript gì? - JavaScript ṃt ngơn ngữ lập trình kịch b̉n dựa đối t ợng đ ợc phát triển từ ý niệm nguyên mẫu Ngôn ngữ ǹy đ ợc dùng ṛng rưi cho trang web, nh ng đ ợc dùng để tạo kh̉ viết script sử ḍng đối t ợng nằm sẵn ́ng ḍng 1.1.3 Javascript lƠm đ c gì? - Trên trình duyệt, nhìu trang web sử ḍng JavaScript để thiết kế trang web đ̣ng ṃt số hiệu ́ng hình ̉nh thông qua DOM JavaScript đ ợc dùng để thực ṃt số tác ṿ thực đ ợc với HTML nh kiểm tra thông tin nhập vào, tự đ̣ng thay đổi hình ̉nh - Bên ngồi trình duyệt, JavaScript đ ợc sử ḍng tập tin PDF c a Adobe Acrobat v̀ Adobe Reader Đìu khiển Dashboard hệ đìu hành Mac OS X phiên b̉n 10.4 có sử ḍng JavaScript 1.2 T̉ng quan v̀ AngularJs framework 1.2.1 Lịch sử phát triển - Dự án AngularJS đ ợc năm 2009, lập trình viên Misko Hevery Google viết Misko v̀ nhóm lúc ǹy tham gia v̀o dự án c a Google tên Google Feedback Với AngularJS, Misko đư rút ngắn số dòng code front-end từ 17000 dòng khỏng 1500 Với thành cơng đó, đ̣i ngũ c a dự án Google Feedback định Nguyễn Minh Sang T̀m hiểu v̀ AngularJS phát triển AngularJS theo h ớng mã nguồn m Theo thơng số từ Github mà thấy, dự án AngularJS có gần 11000 ng i theo dõi v̀ 2000 l ợt fork - Công nghệ HTML hỗ trợ tốt cho trang web tĩnh, kiểu nh tr ớc năm 2000 Khi bạn xây dựng trang web với PHP, Node/Express, hay Ruby th̀ ṃt trang web tĩnh với ṇi dung đ ợc thay đổi bạn gửi request v̀ máy ch , máy ch render trang với ṇi dung t ơng ́ng Tuy nhiên ṃi th́ đư thay đổi nhìu từ phát triển c a HTML5, có chống l ng từ ơng lớn nh Google, Yahoo, Facebook, v̀ tập hợp đông đ̉o c a c̣ng đồng mã nguồn m - Douglas Crockford, ng i đ ợc biết đến nhìu qua JSON v̀ JSLint đư dùng chênh lệch v̀ đ̣ dày sách "Javascript: The definitive guide" "Javascript: The good parts" để châm biếm cách h̀i h ớc v̀ JavaScript - Tuy nhiên, thành công c a jQuery đư khiến JavaScript đ ợc nhìu ng i u thích tính đơn gỉn dễ sử ḍng Việc phát triển website sử ḍng AJAX khơng khó, bạn dùng jQuery để làm việc với $.ajax nhiên làm ǹo để xây dựng ṃt phần m̀m m ṛng, dễ test, nâng cấp b̉o trì khơng h̀ đơn gỉn b̉n thân JavaScript khơng đ ợc thiết kế từ đầu để làm việc ǹy Do đ i c a framework hỗ trợ lập trình viên xây dựng ́ng ḍng web cách có hệ thống đư đ i nh Sencha, Ember, Knockout, Backbone, v̀ AngularJS Nguyễn Minh Sang T̀m hiểu v̀ AngularJS 1.2.2 Angular JS gì? - Angular framework javascript mạnh mẽ Angular tăng c ng HTML cho ́ng ḍng web Nó có ch́c để gỉm bớt trình phát triển ́ng ḍng web Từ nhìu năm tr ớc, HTML bắt đầu, đ ợc dự định để xây dựng trang web nói l̀ ṃt cách để hiển thị tài liệu tĩnh, không để xây dựng ṃt ́ng ḍng web đ̣ng Bây gi , t ng t ợng HTML lần đ ợc dùng để xây dựng ́ng ḍng web đ̣ng, Angular Angular HTML có đ ợc đ ợc thiết kế để xây dựng ́ng ḍng web L i gỉi thích khó hiểu nh ng đ̣c tiếp v̀ sau bạn ngạc nhiên với Angular làm hiểu ý nghĩa ǹy 1.2.3 Ćc t́nh ch́nh - Hai cách liên kết liệu Angular kh̉ thay đổi giá trị thục tính c a đối t ợng, đồng th i giao diện ng i dùng đ a thay đổi th i điểm đó, v̀ ng ợc lại Ví ḍ, bạn có thục tính c a ṃt đối t ợng g̣i "Page.Title ', lần thay đổi giá trị' Page.Title, giao diện ng i dùng tự đ̣ng cập nhật hiển thị giá trị c a 'Page.Title Và bạn nhập vào giao diện ́ng ḍng ng cập nhật giao diện ng i dùng c a bạn, i dùng v̀ cập nhật thục tính c a đối t ợng Tất c̉ đ̀u đ ợc xử lý b i Angular khơng cần ph̉i viết giống nh ṃt số framework javascript khác Những cần làm đơn gỉn l̀ xác định model c a chúng ta, bây gi bất ć ṃt model đ ợc thay đổi, thay đổi bất ć nơi ǹo đ ợc đặt, đối t ợng c̣ thể lớp đại diện Model Angular cấu trúc javascript cũ rõ r̀ng, khơng có g̀ lạ mắt nh ng lại hữu ích - Tính thực l̀ đặc điểm tạo nên ṃt khỏng cách khác lớn Angular framework javascript khác Directives l̀ đ̀ cập đến ṃt tính để m ṛng nghĩa c a từ HTML, đồng th i đ ợc xem nh l̀ ṃt cách trình duyệt mẹo c a bạn Chúng ta biết v̀ header HTML5, l̀ đại diện cho ṃt tiêu đ̀ nh ng phần tử tĩnh Mặc dù HTML có nhìu thẻ , nh ng khơng đ mạnh để tạo ṃt ́ng ḍng web đẹp Với đặc điểm dẫn , tạo từ vựng HTML để trình duyệt hiểu có nghĩa l̀ g̀ v̀ nên l̀m g̀ Ví ḍ với Angular tạo thẻ nh sau drag me Các văn b̉n bên Nguyễn Minh Sang T̀m hiểu v̀ AngularJS tag draggable bây gi tr thành draggable trình duyệt, sau cần viết ṃt định nghĩa dẫn draggable ́ng ḍng Angular c a l̀ xong.Đây l̀ ṃt ví ḍ đơn gỉn c a Angular, làm nhìu th́ hữu ích V̀ khơng giới hạn ṃt phần tử html mà có sẵn để thực thi thục tính, lớp thích html Directives Angular khác với directtives tạo b i html chỗ chúng thực nhìu h̀nh vi đ̣ng - Nhìu framework cần có template nh ng Angular template lại html - Dependency injection làm cho ́ng ḍng Angular dễ d̀ng để phát triển, xếp mã (code) thành module Bằng cách này, tạo thành phần tái sử ḍng mà đ ợc g̣i v̀ sau, bất ć cần thiết Ý t ng ǹy l̀ đặc biệt tốt ́ng ḍng m ṛng lớn v̀ cần ph̉i đ ợc m ṛng, dễ dàng b̉o trì kiểm ch́ng Dependency injection ṃt cách để ghép đoạn mã code với nhau, đìu ǹy đòi hỏi ph̉i phân chia mã code theo ch́c riêng biệt nh service, controller, provider nh ng không giới hạn chúng 1.2.4 Đặc tr ng - Kiến trúc MVC, Two-way binding, Dynamic templates, Expressions, Modules, Scopes, Dependency injection, Directives, Routing, Services, Filters, Form validation, Testing in mind 1.2.5 Mơ hình MVC Nguyễn Minh Sang T̀m hiểu v̀ AngularJS - Mơ hình MVC (Model - View - Controller) ṃt kiến trúc phần m̀m hay mô hình thiết kế đ ợc sử ḍng kỹ thuật phần m̀m Nó giúp cho developer tách ́ng ḍng c a ḥ thành phần khác Model, View Controller Mỗi thành phần có ṃt nhiệm ṿ riêng biệt v̀ đ̣c lập với thành phần khác - Mô h̀nh MVC đ ợc giới thiệu từ năm 70 nh ṃt phần c a Smalltalk, nh ng ǹn t̉ng web, đ ợc thịnh hành gần -Ýt ng đằng sau MVC l̀ để chia rõ thành phần model(xử lý, truy xuất database), view(giao diện), controller(đìu h ớng yêu cầu từ ng i dùng) - MVC thể tính chun nghiệp lập trình, phân tích thiết kế Do đ ợc chia thành thành phần đ̣c lập nên giúp phát triển ́ng ḍng nhanh, đơn gỉn, dễ nâng cấp, b̉o trì Đối với Angular, View DOM, Controller lớp JavaScript, Model liệu đ ợc l u thục tính c a đối t ợng JS - Sau ch́ng kiến nhìu tranh luận v̀ MV*, ṃt tác gỉ c a Angular đư tuyên bố AngularJS ṃt MVW framework (Model – View – Whatever, Whatever l̀ viết tắt c a whatever works for you) 1.2.6 SPA – Single Page Application - Ṃt single page application hay đ ợc g̣i l̀ single page interface, l̀ ṃt web app hay website hiển thị vừa vặn ṃt mặt c a trang web với ṃc đích giúp ng i dùng có tr̉i nghiệm giống nh dùng ́ng ḍng desktop - L̀ ́ng ḍng chạy bên tr̀nh duyệt, không yêu cầu ph̉i t̉i lại tòn ḅ trang web lần sử ḍng Nguyễn Minh Sang T̀m hiểu v̀ AngularJS NG II: ANGULAR JS FRAMEWORK CH 2.1 T i ph i sử d ng AngularJs? - Angular đ ợc đ a b i Google Tại đìu quan tṛng để biết ? Nh bạn đoán, Google đư phát triển t̀i v̀ thiên t̀i nh đ̣i bóng c a ḥ Ḥ thực biết tinh tế c a trang web phát triển ́ng ḍng web Ít thực tế cung cấp cho ng t i dùng đ̉m b̉o Angular xuất phát từ ng i tin ng Ngồi ra, bạn đư sử ḍng s̉n phẩm c a Google nh Gmail hay Google Plus, bạn không ngạc nhiên với t ơng tác c a chúng c̉ ajax gửi liên ṭc ṃi nơi mà không ph̉i làm toàn ḅ trang web v̀ để sử ḍng Angular kiến th́c ch yếu cần ph̉i biết tr ớc Javascript 2.2 AngularJs đ c lập trình nh th nƠo? 2.2.1 CƠi đặt AngularJs 2.2.1.1 T i AngularJS - Truy cập v̀o trang web https://angularjs.org https://github.com/angular/angular.js v̀ t̉i v̀ b̉n angularjs B̉n l̀ 1.2.16 2.2.1.2 Ch̀n Angular vƠo ng d ng * Ṭ host AngularJS - Theo cách ǹy th̀ cần ph̉i download angularjs v̀ máy v̀ nhúng trực tiếp v̀o ́ng ḍng * Dùng phiên b n có sẵn server c̉a Google - Ngồi cách bạn sử ḍng phiên b̉n nén c a AngularJS có sẵn server c a Google Sử ḍng cách ǹy có đìu lợi tiết kiệm băng thông cho trang web c a bạn AngularJS đ ợc load nhanh máy c a ng i dùng đư cache AngularJS - Nh ng cách ǹy không hoạt đ̣ng không đ ợc kết nối mạng Nguyễn Minh Sang T̀m hiểu v̀ AngularJS 2.2.2 V́ d đ n gi n V́ ḍ AngularJS

Hello {{'World' + '!'}}

Phơn t́ch v́ d : ng-app directive: Directives l̀ tùy biến gắn v̀o DOM (attribute, element name, CSS class …) để HTML compiler c a AngularJS thêm v̀o biến đổi DOM element Ng-app cho biết phạm vi hoạt đ̣ng c a AngularJS Chỉ thị ǹy cho biết vị trí bắt đầu để sử ḍng phần tử c a AngularJS - Ch̀n AngularJs v̀o ́ng ḍng

Hello {{'World' + '!'}}

Ṃt đặc điểm quan tṛng c a AngularJs l̀ kh̉ binding liệu sử ḍng cặp dấu ngoặc nḥn {{}} Đoạn mư ǹy xuất liệu l̀ chuỗi “Hello World !” tr̀nh duyệt Nguyễn Minh Sang T̀m hiểu v̀ AngularJS Trong dấu ngoặc nḥn ch́a biến v̀ biểu th́c toán ḥc

1 + = {{ + }}

Đoạn mư ǹy in lên tr̀nh duyệt chuỗi “1 + = 3” 2.2 Ćc thƠnh ph̀n c̉a AngularJs 2.2.1 Angular Template Đôi lúc tr̀nh xây dựng hệ thống, file HTML tr nên ph́c tạp để gỉi vấn đ̀ ta cần chia thành nhìu phần khác nhau, AngularJS cung cấp cho ṃt gỉi pháp hữu ích l̀ template - Angular template l̀ đặc t̉ dạng declarative (khai báo), với thông tin từ Model & Controller, tr thành rendered View mà User thấy trình duyệt Nó static DOM, ch́a HTML, CSS, thành phần, thục tính riêng c a Angular Các thành phần Angular thục tính giúp Angular thêm hành vi biến đổi template DOM thành dynamic view DOM - Nói cách đơn gỉn th̀ template AngularJS l̀ “HTML voi81 additional markup” Trong Angular, có cách để tạo ṃt template Dùng file ngồi: Chúng ta dùng thêm ṃt file html bên ngòi để làm template cho file chính, ví ḍ: message.html Hello, {{name}}! Dùng script Chúng ta tích hợp thẳng template v̀o file h̀nh thông qua thẻ script với type l̀ text/ng-template Hello, {{name}}! Nguyễn Minh Sang T̀m hiểu v̀ AngularJS Ví ḍ: + = {{2 + 2}} Angular tính tốn giá trị biểu th́c v̀ xuất m̀n h̀nh kết qủ “2 + = 4” 2.2.7 Filters (Bộ ḷc) Trong Angular, ṃt filter cung cấp ṃt định dạng liệu để hiển thị tới ng i dùng Theo tinh thần c a UNIX filters sử ḍng cú pháp t ơng tự | (pipe) Angular cung cấp ṃt số filter đ ợc xây dựng sẵn nh : lowercase, date, number, currency, limitTo, orderBy… Ví ḍ: Uppercased: {{ userInput | uppercase }} Khi ng i dùng nhập liệu v̀o input th̀ giá trị đ ợc chuyển th̀nh chữ viết th ng Ṃt số filter khác: {{ "chũi ḱ ṭ vít thừng" | uppercase }} {{ {name: "Sang", age: 21} | json }} {{ 1304375948024 | date }} {{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }} K t qu : CHŨI Ḱ Ṭ VÍT TH ̀NG { "name": "Sang", "age": 21 } May 3, 2011 05/03/2011 @ 5:39AM Nguyễn Minh Sang 15 T̀m hiểu v̀ AngularJS 2.2.8 Directives Những th́ nh thục tính, class, tên c a DOM element g̣i chung directive AngularJS dựa v̀o chúng để attach thị kiện tới DOM element B̉n thân AngularJS đư có nhìu directive : ng-bind, ng-model, ng-click, ngcontroller Việc dùng directive gỉm thiểu đ ợc số l ợng thẻ HTML , code HTML nhìn g̣n gàng sáng s a AngularJS cung cấp cho loại directive l̀ : - Directive dạng element ( thẻ HTML ) viết tắt E - Directive dạng attribute ( thục tính c a thẻ HTML ) viết tắt A, dạng mặc định - Directive dạng class( class CSS ) viết tắt C Ví ḍ: Chuẩn bị t̀i liệu HTML với đ loại directive: V́ ḍ AngularJS Nguyễn Minh Sang 16 T̀m hiểu v̀ AngularJS 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' }; }); Trong myCtrl khai báo thông tin customer với name v̀ địa Trong myDirective return object việc hiển thị hay đổ liệu v̀o directive nh việc c a Angular không cần quan tâm L u ý: Tên directive ph̉i khai báo dạng camelCase cịn g̣i dùng dấu - để ngăn cách từ để nguyên nh khai báo đ ợc  restrict : loại directive mặc định E(element), C class, A attribute  template: Ṇi dung c a directive Nguyễn Minh Sang 17 T̀m hiểu v̀ AngularJS  templateUrl: Liên kết tới file template bên Template ch́a ṇi dung c a directive Name: {{customer.name}} Address: {{customer.address}}  Nếu restrict:"A" có liệu  Nếu restrict:"C" có liệu  Nếu restrict:"E" có liệu Khi thay đổi restrict cần l u ý infect element để xem đổ liệu vào thẻ 2.2.9 Services AngularJS service ṃt object ṃt function pḥ trách ṃt tác ṿ ǹo Việc viết service việc gom đoạn xử lý logic vào object function để dễ qủn lý Cũng giống nh mô h̀nh MVC tách phần xử lý, đìu h ớng hiển thị riêng biệt Trong AngularJS service ch́a tất c̉ phần xử lý, Controller nhận yêu cầu g̣i service cần thiết để xử lý, Model handle liệu từ control, View hiển thị liệu, Route đìu h ớng request tới controller B̉n thân AngularJS ch́a service nh : $http, $scope, $window, $RouteProvider Có ćch để t o service Angularjs Cách 1: Cú pháp: module.service( 'serviceName', function ); Ví ḍ: var module = angular.module('myapp', []); module.service('userService', function(){ this.users = ['Sang', 'Nguyen', 'Minh']; }); Nguyễn Minh Sang 18 T̀m hiểu v̀ AngularJS Cách 2: Cú pháp: module.factory('userService', function(){ Ví ḍ: var fac = {}; fac.users = ['John', 'James', 'Jake']; return fac; }); C̉ cách đ̀u tạo đ ợc service Với cách sau đăng ký tên service xong bạn đ ợc cung cấp thể c a function mà bạn truỳn vào module.service Với cách sau đăng ký tên factory, function truỳn vào module.factory cần return thể c a đối t ợng tạo bên 2.2.10 Multiple Views and Routing Đôi ṃt trang, nhìu muốn hiển thị ṃt phần HTML ́ng với ch́c c̣ thể mà ta không cần chuyển đổi trang, Angular ṃt full-stack framework hiệu qủ giúp l̀m đ ợc việc nhanh chóng dễ dàng Route ḅ đìu h ớng yêu cầu từ phía ng i dùng tới controller t ơng ́ng để xử lý dựa theo đối số truỳn url Route AngularJS l̀ th̀nh phần quan tṛng giúp AngularJs tạo đ ợc ́ng ḍng SPA, chuyển trang m̀ không cần t̉i lại tr̀nh duyệt Trong AngularJs sử ḍng $routeProvider để bắt yêu cầu Biểu th́c route đ ợc tính từ sau dấu # Nguyễn Minh Sang 19 T̀m hiểu v̀ AngularJS Xét ví ḍ V́ ḍ AngularJS Từ phiên b̉n AngularJs 1.0.7 th̀ Route đư đ ợc tách th̀nh ṃt file js riêng biệt, v̀ để sử ḍng đ ợc ta ph̉i nhúng file angular-route.min.js v̀o ́ng ḍng Directive ng-view đ ợc sử ḍng để hiển thị liệu Đăng ký biến app th̀nh ṃt module AngularJS v̀ thiết lập route b̉n Để làm việc với Route th̀ bạn cần g̣i sử ḍng ṃt extends module c a angular ngRoute var app = angular.module('demoApp', ['ngRoute']); app.config(['$routeProvider', function($routeProvider){ $routeProvider when('/, { templateUrl : index.html', controller : 'homeController' }) when('/post/:id', { templateUrl : 'detail.html', Nguyễn Minh Sang 20 T̀m hiểu v̀ AngularJS controller : 'postController' }) otherwise({ redirect: '/' }) }]);  app.config l̀ method cho phép khai báo Controller, View t ơng ́ng với url Với route ǹy th̀ truy cập v̀o đ ng dẫn c a trang web th̀ tr̀nh duyệt load file index.html v̀ bind v̀o .when('/post/:id', { Trong route tới chi tiết b̀i đăng có sử ḍng $routeParams service dùng để nhận đối số l̀ id c a b̀i viết, giúp xác định đ ợc xác b̀i viết cần hiển thị Đ ng dẫn truy cập tới chi tiết b̀i đăng có dạng #/post/id Trong id l̀ id c a b̀i đăng Khi cấu h̀nh route không cần ph̉i ghi dấu “#” Khi gặp đ ng dẫn có dạng #/post/id route g̣i tới controller postController sử ḍng template từ file detail.html .when('/post/:id', { templateUrl : 'detail.html', controller : 'postController' }) $routeProvider.otherwise xử lý cho route mặc định Khi đ ng dẫn không khớp với route đư đ ợc thiết lập th̀ đ ợc tái đìu h ớng v̀ trang ch otherwise({ redirect: '/' }); Nguyễn Minh Sang 21 T̀m hiểu v̀ AngularJS 2.2.11 Form validation - Controls (input, select, textarea) cách mà ng i dùng nhập liệu - Form ṃt tập controls với ṃc đích nhóm controls liên quan với - Form controls cung cấp validation services, để ng i dùng đ ợc báo lỗi liên quan đến nhập liệu - Server – side validation cần thiết để đ̉m b̉o đ̣ an toàn c a ́ng ḍng - Sử ḍng thục tính “novalidate” để tắt ch́c validation mặc định c a trình duyệt - CSS Classes:    ng-valid: class đ ợc thêm vào phần tử kiểm tra ng-invalid: class đ ợc thêm vào phần tử không kiểm tra ng-pristine: class đ ợc thêm vào phần tử lúc ban đầu, tr ớc AngularJS xử lý kiểm tra  ng-dirty: class đ ợc thêm vào phần tử AngularJS xử lý kiểm tra - Custom Validation  Angular cung cấp xử lý b̉n cho hầu hết kiểu input HTML5: (text, number, url, email, radio, checkbox) k̀m directives để kiểm tra (required, pattern, minlength, maxlength, min, max)  Có thể tự đ a validate riêng cách tự tạo directive để đ a h̀m validate c a vào ngModel controller - Validation xuất  chỗ Model to View update: Model thay đổi, tất c̉ hàm NgModelController#$formatters array đ ợc pipe – lined, để hàm định dạng đ ợc giá trị v̀ thay đổi trạng thái valid c a form control thông qua NgModelController#$setValidity  View to Model update: t ơng tự nh vậy, ng i dùng t ơng tác với control, g̣i NgModelController#$setViewValue Nó pipe – line tất c̉ hàm Nguyễn Minh Sang 22 T̀m hiểu v̀ AngularJS NgModelController#$parsers array, để hàm lần l ợt chuyển đổi giá trị trạng thái thay đổi c a form control thông qua NGModelController#$setValidity 2.3 Lập trình AngularJS ph́a server với Node.js 2.3.1.Node.js gì? Node.js ǹn t̉ng (platform) chạy mơi tr ng V8 Javascript runtime Node.js cho phép lập trình viên xây dựng ́ng ḍng có tính m ṛng cao sử ḍng Javascript server V̀ v̀ đ ợc porting từ C nên v̀ mặt tốc đ̣ xử lý nhanh 2.3.2.Node.js lƠm đ c gì? - Xây dựng websocket server (Chat server) - ng ḍng upload file nhanh client - Ad server - Hoặc ́ng ḍng liệu th i gian thực Nodejs khơng ph̉i ṃt web framework.Nó không d̀nh cho ng không ph̉i ṃt ǹn t̉ng thực thi tác ṿ đa luồng i bắt đầu, 2.3.3 Block code Non-block code Ví ḍ xây dựng ch́c đ̣c file in liệu c a file Logic Đ̣c file từ Filesystem, gán liệu t ơng ́ng với biến "contents" In liệu biến "content" Thực công việc khác Non-block code: Đ̣c file từ Filesystem Sau đ̣c xong in liệu (callback) Thực công việc khác Code Nguyễn Minh Sang 23 T̀m hiểu v̀ AngularJS Block code var contents = fs.readFileSync 'hello.txt' ; // Dừng cho đ́n đọc xong file console.log(contents); console.log 'Tḥc công việc khác' ; Non-block code fs.readFile('hello.txt', function(contents){ console.log(contents); }); console.log 'Tḥc cơng việc khác' ; Ta thấy đây, tốc đ̣ xử lý c a non-block code l̀ cao so với block code Gỉ sử bạn thực cơng việc file tr lên tốc ḍ xử lý c a Non-block code nhanh Block code nhìu 2.3.4 ng d ng đ̀u tiên hello.js var http = require 'http' ; // cách require modules http.createServer(function(request, response){ response.writeHead(200, {'Content-Type':'text/plain'}); // Status code content type response.write "Xin chào lập trình viên!" ; // Thơng điệp gửi xuống client response.end ; // Đóng ḱt nối } listen 3000 ; // Ch̀ ḱt nối cổng 3000 console.log "Server ch̀ ḱt nối cổng 3000" ; Chạy server: node hello node hello.js > Server chờ kết nối cổng 3000 Mở trình duyệt truy cập tới địa http://localhost:3000 dùng terminal: curl http://localhost:3000 > Xin chào lập trình viên Nguyễn Minh Sang 24 T̀m hiểu v̀ AngularJS 2.4 Cơng c lập trình với AngularJS 2.4.1 Yeoman - Gồm ́ng ḍng:    Yo Grunt Bower - Yeoman không l̀ tool m̀ đ ợc sử ḍng nh l̀ ṃt Workflow, tập hợp “best practices” để giúp cho việc phát triển Web dễ d̀ng - Lightning – fast scaffolding  Dễ dàng tạo khung cho dự án với template tùy biến đ ợc (vd:HTML5 Boilerplate, Bootstrap), Angular JS Great buil process    Minification and concatenation (thu nhỏ cố kết?) Tối u tất c̉ image files, HTML Compile CoffeScript and Compass files - Automatically lint your script  Tất c̉ Script đ̀ đ ợc tự đ̣ng chạy qua JSHint để đ̉m b̉o tuân theo best- practices - Built-in preview server - Tối u ̉nh cực tốt  Dùng OptiPNG JPEGTran - Package management cực tốt  Dễ d̀ng search đ ợc package thông qua command-line, c̀i đặt update chúng mà khơng cần m trình duyệt - PhantomJS Unit Testing Nguyễn Minh Sang 25 T̀m hiểu v̀ AngularJS  Dễ dàng chạy unit test WebKit thông qua PhantomJS - Các công c̣ hỗ trợ tốt cho việc lập trình 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/ - Phiên b̉n 8.0.2 - Là phần m̀m có phí - Là IDEs có hỗ trợ plug-in Angular JS - WebStorm bạn cần 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; }); Nguyễn Minh Sang 26 T̀m hiểu v̀ AngularJS 2.5 Khởi ch y ng d ng - Sử ḍng Yeoman:  Yeoman cung cấp ṃt cách đơn gỉn để chạy ṃt Web Server v̀ đáp ́ng tất c̉ yêu cầu c a tập tin liên quan đến Angular JS   Bạn cần gõ vào command-line: yeoman server Web Server tự đ̣ng đ ợc c̀i đặt m trình duyệt với trang ch Angular JS c a bạn V̀ ch ơng tr̀nh tự đ̣ng đ ợc cập nhật thay đổi code Angular JS - Không sử ḍng Yeoman:   Bạn cần ṃt Web Server để kh i đ̣ng trình duyệt (Xampp, Wamp, AppServ ) Bạn cần l u ý l̀ ph̉i Refresh lại trình duyệt để xem thay đổi có đìu chỉnh v̀ code Angular JS, không giống nh sử ḍng Yeoman 2.6 Testing and Debug - Việc Testing thực cần thiết với ́ng ḍng nh Website - Angular JS cung cấp công c̣ test thực mạnh mẽ, số l̀ Karma 2.6.1 Karma - Thực test TDD (test-driven development) - Karma sử ḍng NodeJSand SocketIO để thực thi ́ng ḍng c a bạn test nhìu trình duyệt ṃt cách nhanh chóng - Trang ch : https://github.com/vojtajina/karma/ 2.6.2 CƠi đặt Karma - Cần c̀i đặt NodeJS NPM, vào command-line gõ: sudo npm install -g karma 2.6.3 Test với Karma - Gồm b ớc:  Định dạng cấu hình c a Angular JS: Nguyễn Minh Sang 27 T̀m hiểu v̀ AngularJS o Nếu bạn sử ḍng Yeoman, Karma tự đ̣ng nhận đ ợc cấu hình c a Angular JS   o Nếu không sử ḍng Yeoman, bạn cần gõ vào command-line: karma init Kết nối server cho Karma o Nhập vào command-line: karma start [optionalPathToConfigFile] o Karma tự đ̣ng chạy server port 9876 (đây l̀ port mặc định, bạn muốn đổi cần thay đổi file karma.conf.js) Test o Nhập vào command-line: karma run Nguyễn Minh Sang 28 T̀m hiểu v̀ AngularJS TÀI LIỆU THAM KH O [1] AngularJS Cheat Sheet (2013) – tác giả ProLoser – trang [2] Professional Node.js(2012) – tác giả Pedro Teixeira – 412 trang [3] Ng-book The Complete Book on AngularJS (2013) – tác giả Ari Lerner – 608 trang [4] AngularJS (2013) – tác giả Brad Green, Shyam Seshadri – 196 trang [5] Single page web applications JavaScript end-to-end (2013) – tác giả Michael Mikowski, Josh Powell – 433 trang Nguyễn Minh Sang 29 ... Javascript 2.2 AngularJs đ c lập trình nh th nƠo? 2.2.1 CƠi đặt AngularJs 2.2.1.1 T i AngularJS - Truy cập v̀o trang web https:/ /angularjs. org https://github.com/angular/angular.js v̀ t̉i v̀ b̉n angularjs. .. biến $scope $scope.greeting = 'Hello World!'; Gán giá trị cho biến greeting Để in đ ợc giá trị c a greeting tr̀nh duyệt {{ greeting}} Ng-controller... Với AngularJS, Misko đư rút ngắn số dòng code front-end từ 17000 dòng khỏng 1500 Với thành cơng đó, đ̣i ngũ c a dự án Google Feedback định Nguyễn Minh Sang T̀m hiểu v̀ AngularJS phát triển AngularJS

Ngày đăng: 23/09/2022, 16:02

HÌNH ẢNH LIÊN QUAN

1.2.5. Mơ hình MVC - angularJS tiếng việt ạ- lập trình
1.2.5. Mơ hình MVC (Trang 6)
- Mơ hình MVC (Model -View - Controller) làm ̣t kiến trúc phần m̀m hay mơ hình thi ết kếđ ợc sử ḍng trong kỹ thuật phần m̀m - angularJS tiếng việt ạ- lập trình
h ình MVC (Model -View - Controller) làm ̣t kiến trúc phần m̀m hay mơ hình thi ết kếđ ợc sử ḍng trong kỹ thuật phần m̀m (Trang 7)
w