Xây dựng ứng dụng bằng AngularJS

Hướng dẫn này giúp bạn bắt đầu xây dựng Ứng dụng Chrome bằng khung AngularJS MVC. Để minh hoạ Angular trong thực tế, chúng tôi sẽ tham chiếu đến một ứng dụng thực tế được tạo bằng khung này, Trình tải lên của Google Drive. Mã nguồn có trên GitHub.

Giới thiệu về ứng dụng

Trình tải lên của Google Drive

Trình tải lên của Google Drive cho phép người dùng xem và tương tác nhanh với các tệp được lưu trữ trong tài khoản Google Drive của họ cũng như tải các tệp mới lên bằng API kéo và thả HTML. Đây là một ví dụ hay về cách tạo ứng dụng giao tiếp với một trong các API của Google; trong trường hợp này là API Google Drive.

Trình tải lên sử dụng OAuth2 để truy cập vào dữ liệu của người dùng. API chrome.identity xử lý việc tìm nạp mã thông báo OAuth cho người dùng đã đăng nhập, vừa giúp chúng tôi thực hiện công việc khó khăn! Sau khi chúng tôi có mã truy cập dài hạn, các ứng dụng sẽ sử dụng API Google Drive để truy cập vào dữ liệu của người dùng.

Các tính năng chính mà ứng dụng này sử dụng:

  • Tính năng tự động phát hiện của AngularJS cho CSP
  • Hiển thị danh sách các tệp đã tìm nạp từ API Google Drive
  • API hệ thống tệp HTML5 để lưu trữ biểu tượng tệp khi không có mạng
  • Kéo và thả HTML5 để nhập/tải lên tệp mới từ máy tính
  • XHR2 để tải hình ảnh, trên nhiều miền
  • API chrome.identity để uỷ quyền OAuth
  • Khung không có Chrome để xác định giao diện thanh điều hướng riêng của ứng dụng

Tạo tệp kê khai

Tất cả Ứng dụng Chrome đều yêu cầu phải có tệp manifest.json chứa thông tin mà Chrome cần để chạy ứng dụng. Tệp kê khai chứa siêu dữ liệu có liên quan và liệt kê mọi quyền đặc biệt mà ứng dụng cần để chạy.

Phiên bản rút gọn của tệp kê khai của Người tải lên sẽ có dạng như sau:

{
  "name": "Google Drive Uploader",
  "version": "0.0.1",
  "manifest_version": 2,
  "oauth2": {
    "client_id": "665859454684.apps.googleusercontent.com",
    "scopes": [
      "https://www.googleapis.com/auth/drive"
    ]
  },
 ...
  "permissions": [
    "https://docs.google.com/feeds/",
    "https://docs.googleusercontent.com/",
    "https://spreadsheets.google.com/feeds/",
    "https://ssl.gstatic.com/",
    "https://www.googleapis.com/"
  ]
}

Các phần quan trọng nhất của tệp kê khai này là các phần " OAuth2" và "quyền".

Phần " OAuth2" xác định các tham số bắt buộc theo OAuth2 để thực hiện điều kỳ diệu. Để tạo "client_id", hãy làm theo hướng dẫn trong bài viết Lấy mã ứng dụng khách của bạn. "Phạm vi" liệt kê phạm vi cấp phép mà mã thông báo OAuth sẽ hợp lệ (ví dụ: các API mà ứng dụng muốn truy cập).

Phần "quyền" bao gồm các URL mà ứng dụng sẽ truy cập qua XHR2. Cần có tiền tố URL để Chrome biết cần cho phép yêu cầu nhiều miền nào.

Tạo trang sự kiện

Tất cả Ứng dụng Chrome đều yêu cầu có trang/tập lệnh nền để khởi chạy ứng dụng và phản hồi các sự kiện của hệ thống.

Trong tập lệnh background.js, Trình tải lên của Drive sẽ mở cửa sổ 500x600px cho trang chính. Tính năng này cũng chỉ định chiều cao và chiều rộng tối thiểu cho cửa sổ để nội dung không bị quá nhỏ:

chrome.app.runtime.onLaunched.addListener(function(launchData) {
  chrome.app.window.create('../main.html', {
    id: "GDriveExample",
    bounds: {
      width: 500,
      height: 600
    },
    minWidth: 500,
    minHeight: 600,
    frame: 'none'
  });
});

Cửa sổ được tạo dưới dạng cửa sổ không có Chrome (khung: 'none'). Theo mặc định, các cửa sổ sẽ hiển thị với thanh đóng/mở rộng/thu nhỏ mặc định của hệ điều hành:

Trình tải lên của Google Drive không có khung

Trình tải lên sử dụng frame: 'none' để hiển thị cửa sổ dưới dạng "phương tiện chặn trống" và tạo nút đóng tuỳ chỉnh trong main.html:

Trình tải lên của Google Drive có khung tuỳ chỉnh

Toàn bộ khu vực điều hướng được bao bọc trong một