Angular2 hiện tại vẫn đang trong giai đoạn Developer Preview tuy nhiên mình sẽ bắt đầu tìm hiểu trước cho đến khi nó được release thì dùng luôn. Hiện tại trên trang của Angular2 thấy chúng ta có thể code bằng Javascript, Typescript và Dart, nhưng xem qua các bài hướng dẫn thì mọi người có vẻ dùng Typescript phổ biến hơn. Nên mình cũng sẽ làm quen với Angular2 bằng Typescript luôn.
Trong phần làm quen này, chúng ta cùng nhau viết ứng dụng vô cùng đơn giản coi như để biết được Angular2 là cái gì, và viết nó như thế nào. Một ứng dụng Hello World.
Chúng ta sẽ cùng nhau thực hiện các bước sau:
- Tạo thư mục
- Tạo Component gốc trong file
app.ts - Nhúng các thư viện và code vào file
index.html - Chạy ứng dụng
- Cải tiến một vài phần cho ứng dụng
Tạo thư mục
1 | mkdir angular2 |
Tạo Component gốc trong file app.ts
1 | import {bootstrap, Component} from 'angular2/angular2'; |
Ở trên, mình đã tạo ra một Component, thành phần quan trọng nhất trong Angular 2. Ta có thể coi nó như phần views của ứng dụng. Hiện tại AppComponent của chúng ta là một class rỗng, chưa làm gì cả.
Trong Typescript, dấu @ cho ta biết đó là một decoration, nó giống như là metadata cho class.
- Đầu file, ta import
bootstrapvàComponenttừ thư viện angular2 để sử dụng. @Componentcho Angular biếtAppComponentlà một component. Config object của@Componentgồm 2 thuộc tính.selector: CSS selector cho Angular biết component của chúng ta sẽ được áp dụng ở đâu. Như ví dụ trên nó sẽ áp dụng vào element `‘ template: Phần hiển thị của component. Tạm thời ta dùng inline code, sau này ta sẽ tách nó ra thành 1 file template riêng.
bootstrap: cho Angular biết component này là component gốc của ứng dụng. Sau này trong component gốc ta có thể có các component khác.
Nhúng các thư viện và code vào file index.html
Trong file index.html ta có code như sau:
1 | <html> |
- Tạm thời ta sẽ không bàn về 3 thư viện ở trên cùng.
- Trong đoạn config cho
System(từsystem.js, đây là một công cụ cho phép ta import code) ta yêu cầu chuyển đổi code từTypescriptsangJavascriptngay trên trình duyệt. - Import
AppComponentcủa chúng ta từ fileapp.ts - Trong
<body>ta thêm một element<my-app>, chính là selector củaAppComponentđã viết ở trên.
Chạy ứng dụng
Để chạy ứng dụng ta cần 1 static file server, ở đây mình sẽ dung live-server
1 | npm install -g live-server |

Chúc mừng, ứng dụng angular 2 đầu tiên của bạn đã hoàn thành.
Cải tiến
Ở đây có một vài phần chúng ta sẽ cần phải cải tiến cho ứng dụng của mình.
- Cấu trúc lại ứng dụng cho việc phát triển sau này
- Sử dụng resource từ local thay vì tải từ mạng:
Tải resource từ trên mạng thì hiện tại vẫn ổn, nhưng trong quá trình dev mỗi lần ta reload lại trình duyệt ta sẽ mất thêm thời gian tải các resource từ mạng, vì vậy ta đưa các file resource về máy mình rồi tải lại sẽ nhanh hơn. - Chuyển đổi Typescript sang Javascript bằng công cụ thay vì trên trình duyệt:
Vì việc chuyển đổi thực hiện trên trình duyệt sẽ khiến cho ứng dụng của chúng ta trở nên chậm, khi có nhiều file cần phải xử lý. Vì vậy ta sẽ đổi sang javascript trước rồi mới để trình duyệt tải vào. - Sử dụng một vài công cụ cho việc dev (Như là công cụ để thực hiện mục 3)
Cấu trúc lại ứng dụng cho việc phát triển sau này
Trong thư mục hiện tại, ta tạo thêm thư mục src và thư mục con của nó app. Di chuyển index.html vào thư mục src và app.ts vào thư mục src/app.
1 | angular2 |
Cài đặt các package npm
1 | npm init -y |
angular: thư viện angularsystemjs: hỗ trợ module loading
Ngoài ra có 2 packages hỗ trợ cho việc dev
typescript: chuyển đổi typesript sang javascriptlive-server: static server tự động reload lại trang web khi file thay đổi
Sau khi chạy lệnh cài đặt xong ta có file package.json như sau:
1 | { |
Tìm đến phần scripts sửa lại:
1 | "scripts": { |
Cập nhật lại file index.html
Nạp resource từ thư mục ta vừa cài các packages
1 | <script src="../node_modules/systemjs/dist/system.src.js"></script> |
Cập nhật lại cấu hình của System
1 | <script> |
Vì bây giờ ta không chuyển đổi typescript ngay trên trình duyệt nữa, mà sẽ chạy lệnh chuyển đổi từ máy trước, nên trên trình duyệt ta chỉ nạp các file js.
Cấu hình cho việc biên dịch typescript
Trong thư mục src ta thêm file tsconfig.json với nội dung như sau:
1 | { |
Bạn có thể xem thêm các tùy chọn tại đây Typescript config
Biên dịch typescript sang javascript
Di chuyển đến thư mục gốc của ứng dụng, chạy lệnh tsc mà ta vừa thêm vào package.json ở trên:
1 | npm run tsc |
Sau khi chạy, ta sẽ thấy trong thư mục src/app có thêm file app.js và app.js.map file này giúp ích cho ta trong việc debug giữa file javascript và file typescript. Vì đã thêm tham số -w nên câu lệnh sẽ tiếp tục watch-theo dõi các file typescript, khi có thay đổi nó sẽ tự biên dịch lại. Bạn cứ để nó chạy ở đó, nếu muốn dừng thì nhấn Ctrl+C.
Chạy ứng dung
Mở một cửa sổ terminal khác, di chuyển đến thư mục gốc của ứng dụng và chạy lệnh:
1 | npm start |
Và trình duyệt lại chạy lên, hiển thị ứng dụng của chúng ta với chữ “Hello Angular2”
Thay đổi nội dung
Như đã nói ở trên, công cụ biên dịch typescript của chúng ta sẽ tự động biên dịch lại khi nội dung file thay đổi, và live-server cũng tự động tải lại trang khi nội dung file thay đổi. Bây giờ bạn vào file app.ts thử thay đổi lại template của component và xem trình duyệt tự động cập nhật lại nội dung cho bạn như thế nào.
Tổng kết
- Angular 2 có phần quan trọng nhất là
Component - Ta có thể dùng Typescript để viết ứng dụng với Angular 2 và biên dịch ra javascript bằng Typescript Compiler (TSC)
- Bằng cách để Compiler theo dõi file và sử dụng live-server ta có thể thấy được ứng dụng thay đổi nhanh chóng sau khi thay đổi code
- Đây chỉ là một ứng dụng rất đơn giản, để làm quen với Angular 2
Các thao tác trong bài này mình hoàn toàn theo bài hướng dẫn tại Angular Quickstart các bạn có thể đọc để nắm thêm chi tiết.
Trình duyệt hỗ trợ ES6
Angular 2 yêu cầu trình duyệt hỗ trợ ES6, hầu hết đều đã được hỗ trợ với các trình duyệt hiện tại. Tuy nhiên với các trình duyệt cũ hơn như IE11 ta có thể dùng thêm thư viện shim
Cài đặt shim
1 | npm install es6-shim --save |
Thêm vào index.html
1 | <script src="../node_modules/es6-shim/es6-shim.js"></script> |