07/11/2019, 15:04

Hướng dẫn Angular 2: Tạo CRUD App bằng Angular CLI

Đây là bài viết đầu tiên trong series 4 bốn phần hướng dẫn cách viết một ứng dụng Todo (quản lý công việc) trong Angular 2: Part 1— Cài đặt và khởi chạy phiên bản ứng dụng Todo đầu tiên Part 2— Tạo các thành phần khác nhau để hiển thị list trong todo và todo riêng biệt Part 3— ...

Đây là bài viết đầu tiên trong series 4 bốn phần hướng dẫn cách viết một ứng dụng Todo (quản lý công việc) trong Angular 2:

  1. Part 1— Cài đặt và khởi chạy phiên bản ứng dụng Todo đầu tiên
  2. Part 2— Tạo các thành phần khác nhau để hiển thị list trong todo và todo riêng biệt
  3. Part 3— Cập nhật dịch vụTodo để giao tiếp REST API
  4. Part 4— Dùng Component Router để định tuyết các thành phần khác nhau

Chú thích: ứng dụng todo là một ứng dụng đơn giản nhắc nhở một loạt công việc cần làm trong ngày/tuần, với mỗi todo là một công việc phải hoàn thành.

Trong bài viết này, chúng ta sẽ đi sâu vào cấu trúc cơ bản của ứng dụng để cho ra đời một ứng dụng trông như sau:

Đến cuối series này, cấu trúc ứng dụng của chúng ta sẽ như sau:

Những mục được bảo đỏ sẽ được nhắc đến trong bài viết này, những khái niệm còn lại sẽ được giới thiệu trong các bài viết sau của series.

Trong phần đầu tiên này, bạn được hướng dẫn cách:

  • Khởi tạo ứng dụng Todo bằng Angular CLI
  • Tạo class Todo để thể hiện các mục todo riêng biệt
  • Tạo dịch vụ TodoDataService để tạo, cập nhật và bỏ mục todo
  • Dùng thành tố AppComponent để hiển thị giao diện người dùng
  • Deploy ứng dụng đến page GitHub của bạn

Bắt đầu nhé!

Khởi tạo ứng dụng Todo bằng Angular CLI

Một trong những cách bắt đầu một ứng dụng Angular 2 tốt nhất là dùng command-line interface (CLI) của Angular.

Để cài đặt Angular CLI, chạy:

Đoạn trên sẽ cài đặt lệnh ng gobal lên hệ thống.

Để xác nhận xem quá trình cài đặt đã thành công hay chưa, bạn có thể chạy:

Đoạn lệnh trên sẽ hiển thị phiên bản bạn đã cài đặt:

Sau khi đã cài đặt Angular CLI, bạn đã có thể sử dụng công cụ để khởi tạo ứng dụng Todo của mình:

Đoạn lệnh này sẽ tạo một thư mục mới với tất cả những file cần thiết để bắt đầu:

todo-app
├── README.md
├── angular-cli.json
├── e2e
│   ├── app.e2e-spec.ts
│   ├── app.po.ts
│   └── tsconfig.json
├── karma.conf.js
├── package.json
├── protractor.conf.js
├── src
│   ├── app
│   │   ├── app.component.css
│   │   ├── app.component.html
│   │   ├── app.component.spec.ts
│   │   ├── app.component.ts
│   │   ├── app.module.ts
│   │   └── index.ts
│   ├── assets
│   ├── environments
│   │   ├── environment.prod.ts
│   │   └── environment.ts
│   ├── favicon.ico
│   ├── index.html
│   ├── main.ts
│   ├── polyfills.ts
│   ├── styles.css
│   ├── test.ts
│   ├── tsconfig.json
│   └── typings.d.ts
└── tslint.json

Nếu vẫn chưa quá quen thuộc với Angular CLI, bạn có thể đọc thêm tại The Ultimate Angular CLI Reference.

Giờ đây bạn đã có thể điều hướng đến thư mục mới:

Và khởi động được Angular CLI development server:

Đoạn lệnh sẽ khởi động local development server truy cập được từ trình duyệt http://localhost:4200/.

Angular CLI development server có hỗ trợ LiveReload, nên mỗi khi file nguồn thay đổi trình duyệt sẽ tự động tải lại ứng dụng.

Tiện quá các bạn nhỉ?

Tạo Todo Class

Vì Angular CLI tạo được file TypeScript, chúng ta có thể dùng class để thể hiện mục todo:

Chúng ta hãy thử dùng Angular CLI để tạo class Todo nhé:

Đoạn lệnh sẽ tạo:

Hãy mở src/app/todo.ts:

Và thêm logic ta cần:

Trong Todo class definition này, chúng ta sẽ chỉ định rằng mỗi instance Todo có 3 tính chất:

  • id: số, ID chuyên biệt của todo item
  • title: string, tên của todo item
  • complete: boolean,todo item đã hoàn thành hay chưa

Chúng ta còn phải cung cấp logic hàm dựng cho phép chỉ định property value trong quá trình thực thể hóa (instantiation) để có thể dễ dàng tạo được những instance Todo mới như sau:

Đến đây, hãy thêm unit test để đảm bảo constructor logic của chúng ta làm việc như dự đoán.

Khi tạo class Todo, ta đã dùng tùy chọn --spec. Tùy chọn này sẽ khiến Angular CLI cũng tạo thêm src/app/todo.spec.ts với unit test cơ bản cho ta luôn:

Hãy thêm vào unit test nữa để đảm bảo constructor logic làm việc đúng như dự đoán:

Để xác định xem code của chúng ta đã đúng hay chưa, giờ đây ta sẽ chạy:

để thực thi Karma test runner và chạy tất cả unit test ta cần. Out của bạn sẽ như sau:

Sau khi ta đã có class Todo hoạt động được để thể hiện một todo riêng biệt, tiếp đến hãy tạo service TodoDataService để quản lý tất cả mục todo.

Tạo TodoDataService Service

TodoDataService sẽ đảm nhận nhiệm vụ quản lý Todo item.

Trong các phần tiếp theo của series, chúng ta sẽ tìm hiểu các giao tiếp với EST API, nhưng lúc này chúng ta sẽ chỉ lưu trữ tất cả dữ liệu trong bộ nhớ.

Hãy sử dụng Angular CLI lần nữa để tạo service:

Với output:

Khi tạo service, Angular CLI cũng tạo thêm unit test theo mặc định, nên ta không cần phải dùng thêm tùy chọn --spec.

Angular CLI đã tạo đoạn code sau cho TodoDataService của ta trong src/app/todo-data.service.ts:

Và một unit test tương ứng trong src/app/todo-data.service.spec.ts:

Hãy mở src/app/todo-data.service.ts và thêm todo management logic của chúng ta vào TodoDataService: