Cloud Storage

Nếu ứng dụng của bạn được lưu trữ trên App Engine, một dịch vụ bộ nhớ trên đám mây sẽ có sẵn cho phép người dùng lưu, tải, chia sẻ và phát hành các chương trình của họ.

Thiết lập App Engine

Mục tiêu đầu tiên là nhận được bản sao của riêng bạn về Blockly chạy trên App Engine.

  1. Tải và cài đặt SDK Python.
  2. Đăng nhập vào Google App Engine và tạo một ứng dụng.
  3. Chỉnh sửa appengine/app.yaml và thay đổi ID ứng dụng từ blockly-demo thành tên ứng dụng bạn đã tạo ở bước trước.
  4. Sao chép (hoặc liên kết mềm) các tệp và thư mục sau vào appengine/static/:
    • demos/
    • msg/
    • media/
    • *_compressed.js
  5. Không bắt buộc: Nếu bạn muốn sử dụng blockly_uncompressed.js trên máy chủ, hãy sao chép cả tệp đó vào appengine/static/ rồi sao chép core vào appengine/static/.
  6. Không bắt buộc: Nếu muốn chạy Blockly Playground, bạn sẽ phải sao chép các thư mục blocks, generatorstests, cũng như các tệp trong bước 5.
  7. Chạy Trình chạy Google App Engine từ GUI, thêm thư mục appengine của bạn làm ứng dụng hiện có và nhấn nút "Deploy". Nếu bạn muốn sử dụng dòng lệnh, hãy chạy: appcfg.py --oauth2 update appengine/.

Sau khi tải lên Blockly, bạn có thể trỏ trình duyệt đến URL mà bạn đã tạo ở bước 2. Bạn sẽ thấy một danh sách các bản minh hoạ, bao gồm cả bản minh hoạ về bộ nhớ trên đám mây.

Trò chuyện với đám mây

Hãy kiểm tra nguồn của bản minh hoạ bộ nhớ tại demos/storage/index.html và lưu ý các tính năng sau đây. Trước tiên, có một tập lệnh bao gồm tải API lưu trữ trên đám mây:

<script src="/storage.js"></script>

Lưu ý rằng tập lệnh này giả định chỉ có một không gian làm việc dạng khối trên trang. Bạn cũng có thể sửa đổi các định nghĩa về thông báo này theo ý muốn:

BlocklyStorage.HTTPREQUEST_ERROR = 'There was a problem with the request.\n';
BlocklyStorage.LINK_ALERT = 'Share your blocks with this link:\n\n%1';
BlocklyStorage.HASH_ERROR = 'Sorry, "%1" doesn\'t correspond with any saved Blockly file.';
BlocklyStorage.XML_ERROR = 'Could not load your saved file.\n' +
    'Perhaps it was created with a different version of Blockly?';

Bạn có thể tìm thấy bản dịch của các thông báo này sang ngôn ngữ khác trong Blockly Games trên thư mục json.

Việc lưu các khối hiện tại là một lệnh gọi đến BlocklyStorage.link():

<button onclick="BlocklyStorage.link()">Save Blocks</button>

Để khôi phục các khối đã lưu khi tải trang, bạn chỉ cần gọi BlocklyStorage.retrieveXml bằng hàm băm của URL sau khi Chèn:

if ('BlocklyStorage' in window && window.location.hash.length > 1) {
  BlocklyStorage.retrieveXml(window.location.hash.substring(1));
}

Bộ nhớ cục bộ

API storage.js cũng cung cấp khả năng lưu một tập hợp khối duy nhất trong bộ nhớ cục bộ của trình duyệt. Việc này có thể được triển khai thay vì sử dụng bộ nhớ trên đám mây, hoặc ngoài bộ nhớ trên đám mây (mặc dù trong trường hợp sau này, người dùng phải cẩn thận cả hai loại bộ nhớ sẽ cố gắng khôi phục cùng lúc).

Để khôi phục các khối từ bộ nhớ cục bộ, hãy gọi BlocklyStorage.restoreBlocks trong thời gian chờ ngay sau khi chèn Blockly.

setTimeout(BlocklyStorage.restoreBlocks, 0);

Để tự động sao lưu các khối vào bộ nhớ cục bộ khi người dùng rời khỏi trang, hãy gọi BlocklyStorage.backupOnUnload và trình nghe này sẽ đăng ký trình nghe sự kiện trên sự kiện tải trang.

BlocklyStorage.backupOnUnload();

Ví dụ:

Đây là bản minh hoạ trực tiếp bộ nhớ trên đám mây.