หากคุณโฮสต์แอปพลิเคชันบน App Engine คุณสามารถใช้บริการพื้นที่เก็บข้อมูลระบบคลาวด์เพื่อให้ผู้ใช้บันทึก โหลด แชร์ และเผยแพร่โปรแกรมได้
การตั้งค่า App Engine
วัตถุประสงค์แรกคือการทําให้สําเนา Runly ทํางานบน App Engine ของคุณเอง
- ดาวน์โหลดและติดตั้ง Python SDK
- เข้าสู่ระบบ Google App Engine และสร้างแอปพลิเคชัน
- แก้ไข
appengine/app.yaml
และเปลี่ยนรหัสแอปพลิเคชันจากblockly-demo
เป็นชื่อแอปพลิเคชันที่คุณสร้างขึ้นในขั้นตอนก่อนหน้า - คัดลอก (หรือลิงก์ทําเครื่องหมาย) ไฟล์และไดเรกทอรีต่อไปนี้ลงใน
appengine/static/
demos/
msg/
media/
*_compressed.js
- ไม่บังคับ: หากต้องการใช้
blockly_uncompressed.js
บนเซิร์ฟเวอร์ ให้คัดลอกไฟล์นั้นไปยังappengine/static/
และคัดลอกcore
ลงในappengine/static/
- ไม่บังคับ: หากต้องการเรียกใช้ Playly Playground คุณจะต้องคัดลอกไดเรกทอรี
blocks
,generators
และtests
รวมถึงไฟล์ในขั้นตอนที่ 5 - เรียกใช้ Google App Engine Launcher จาก GUI, เพิ่มไดเรกทอรี
appengine
เป็นแอปพลิเคชันที่มีอยู่ และกดปุ่ม "Deploy" หากต้องการใช้บรรทัดคําสั่ง ให้เรียกใช้:appcfg.py --oauth2 update appengine/
เมื่ออัปโหลดบล็อกแล้ว คุณสามารถชี้เบราว์เซอร์ไปยัง URL ที่คุณสร้างในขั้นตอนที่ 2 คุณควรเห็นรายการสาธิต รวมถึงการสาธิตพื้นที่เก็บข้อมูลระบบคลาวด์
พูดคุยกับระบบคลาวด์
ตรวจสอบแหล่งที่มาของการสาธิตพื้นที่เก็บข้อมูล ที่ demos/storage/index.html และสังเกตฟีเจอร์ต่อไปนี้ ตัวอย่างแรก มีสคริปต์ที่โหลด Cloud Storage API ดังนี้
<script src="/storage.js"></script>
โปรดทราบว่าสคริปต์นี้จะถือว่ามีพื้นที่ทํางานขนาดบล็อกเพียงหน้าเดียวในหน้าเว็บ นอกจากนี้ยังมีคําจํากัดความของข้อความ ซึ่งคุณควรแก้ไขตามต้องการ
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?';
คุณดูการแปลข้อความเหล่านี้เป็นภาษาอื่นๆ ได้ใน Blockly Games ในไดเรกทอรี JSON
การบันทึกบล็อกปัจจุบันเป็นการเรียกใช้ BlocklyStorage.link()
ครั้งเดียว:
<button onclick="BlocklyStorage.link()">Save Blocks</button>
หากต้องการคืนค่าบล็อกที่บันทึกไว้เมื่อโหลดหน้าเว็บ เพียงเรียก BlocklyStorage.retrieveXml
ด้วยแฮชของ URL หลังจากแทรกการบล็อกของlyly แล้ว
if ('BlocklyStorage' in window && window.location.hash.length > 1) { BlocklyStorage.retrieveXml(window.location.hash.substring(1)); }
พื้นที่เก็บข้อมูลในเครื่อง
storage.js
API ยังมีความสามารถในการบันทึกบล็อกชุดเดียวในพื้นที่เก็บข้อมูลของเบราว์เซอร์ด้วย ซึ่งอาจนําไปใช้แทนพื้นที่เก็บข้อมูลระบบคลาวด์หรือนอกเหนือจากพื้นที่เก็บข้อมูลระบบคลาวด์ (แต่หากเป็นกรณีหลัง ก็จะต้องระมัดระวังเรื่องพื้นที่เก็บข้อมูลทั้ง 2 ประเภทที่พยายามกู้คืนพร้อมกัน)
หากต้องการกู้คืนการบล็อกจากพื้นที่เก็บข้อมูลในเครื่อง โปรดโทรหา BlocklyStorage.restoreBlocks
ในหมดเวลาทันทีหลังจากที่บล็อก Blockly
setTimeout(BlocklyStorage.restoreBlocks, 0);
หากต้องการสํารองข้อมูลบล็อกลงในพื้นที่เก็บข้อมูลในเครื่องโดยอัตโนมัติเมื่อผู้ใช้ออกจากหน้าเว็บ ให้เรียกใช้ BlocklyStorage.backupOnUnload
และจะบันทึก Listener เหตุการณ์เกี่ยวกับเหตุการณ์ยกเลิกการโหลดของหน้าเว็บ
BlocklyStorage.backupOnUnload();
ตัวอย่าง
การสาธิตการใช้งานจริงสําหรับพื้นที่เก็บข้อมูลระบบคลาวด์