ฉันสามารถรวม HTML และ JavaScript ไว้ด้วยกันใน.html
ไฟล์เดียวกันแต่ภาพต้องเป็นไฟล์แยกต่างหาก ทางออกเดียวที่อยู่ในใจของฉันคือการมอบ.zip
โฟลเดอร์ให้กับผู้ใช้
นี่มันไม่สวยเลย ... ฉันจะทำยังไงดีล่ะ?
ฉันสามารถรวม HTML และ JavaScript ไว้ด้วยกันใน.html
ไฟล์เดียวกันแต่ภาพต้องเป็นไฟล์แยกต่างหาก ทางออกเดียวที่อยู่ในใจของฉันคือการมอบ.zip
โฟลเดอร์ให้กับผู้ใช้
นี่มันไม่สวยเลย ... ฉันจะทำยังไงดีล่ะ?
คำตอบ:
คุณสามารถฝังรูปภาพในเอกสาร HTML โดยใช้ dataurl-syntax ซึ่งอนุญาตให้ใส่ base64 ที่เป็นตัวแทนของข้อมูลภาพไบนารีเป็นแอตทริบิวต์ src-image ของรูปภาพ ยังสามารถใช้งานกับไฟล์สื่อชนิดอื่นได้
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9EFBAoYMhVvMQIAAAAtSURBVHicY/z//z8DHoBH+v///yy4FDEyMjIwMDDhM3lgpaEuh7gTEzDiDxYA9HEPDF90e5YAAAAASUVORK5CYII=">
เมื่อคุณใช้สไตล์ชีท CSS คุณสามารถสร้างโพรซีเดอร์อย่างสมบูรณ์เหล่านี้ใน JavaScript
เพียงแค่วางไฟล์ทั้งหมดลงในไฟล์. zip ไม่ใช่โซลูชันที่ทำงานได้เพราะเว็บแอปพลิเคชันส่วนใหญ่ต้องการเว็บเซิร์ฟเวอร์เพื่อให้พวกเขาสามารถเข้าถึงทรัพยากรผ่านทางคำขอ HTTP ในบางระบบคุณสามารถเข้าถึงไฟล์ผ่านfile://
URI-schemeแต่นั่นไม่รับประกันว่าจะทำงานได้ทุกที่เพราะเหตุผลด้านความปลอดภัยและจะล้มเหลวสำหรับสิ่งต่าง ๆ เช่นคำขอ AJAX
มันอาจใช้งานได้กับแอพที่ง่ายมาก ๆ ที่คุณมีทรัพยากรส่วนใหญ่อยู่ในบรรทัด แต่นี่ไม่ใช่วิธีที่ฉันแนะนำให้ใคร มีทางเลือกแม้ว่าเช่น:
คุณสามารถจัดแพคเกจเว็บแอพลิเคชันของคุณเป็นแอปที่ใช้Node-Webkit คุณสามารถใช้สิ่งนี้เพื่อเพิ่มคุณสมบัติเดสก์ท็อปดั้งเดิม (เช่นบันทึกเกมในเครื่อง) ลงในเกมของคุณ
นี่ไม่ใช่วิธีการ " แพ็คเกจและเสร็จสิ้น " แม้ว่าคุณอาจต้องเขียนบางส่วนของแอปพลิเคชันของคุณใหม่และเขียนตัวโหลดอื่น (เช่นด้วยแอปเดสก์ท็อปคุณจะโหลดไฟล์ผ่านระบบไฟล์ในขณะที่ใช้ HTTP) - การร้องขอในเบราว์เซอร์ / เกมออนไลน์)
หากเป้าหมายหลักของคุณคืออนุญาตให้ผู้เล่นเล่นเกมของคุณแบบออฟไลน์คุณสามารถใช้แอปพลิเคชันแคชเพื่ออนุญาตการเข้าถึงแอปของคุณแบบออฟไลน์ นี้เป็นคุณลักษณะที่ทำงานในเบราว์เซอร์ที่ทันสมัยที่สุด ประโยชน์เพิ่มเติมคือผู้ใช้ไม่ต้องดาวน์โหลดอะไรและสามารถใช้ที่คั่นหน้าเพื่อเล่นเกมของคุณได้แม้ในขณะออฟไลน์
สำหรับทรัพยากรที่กำลังโหลดแบบอะซิงโครนัส (AJAX) คุณจะต้องใช้กลไกการโหลดแยกต่างหาก คุณสามารถใช้การจัดเก็บในตัวเครื่องเพื่อบันทึกทรัพยากรเหล่านี้เพื่อการใช้งานออฟไลน์
file:///
โปรโตคอลเข้าถึงlocalStorage
ซึ่งใช้งานได้สำหรับการบันทึก มันจะขยายขนาดเพื่อทำสิ่งใดสิ่งหนึ่งที่สามารถทำได้ในเกม HTML ยกเว้นการเล่นออนไลน์
สำหรับโซลูชันที่ทำงานบน Chrome เพื่อให้เกมทำงานแบบออฟไลน์และเพลิดเพลินกับฟังก์ชั่นพื้นฐานบางอย่างคุณสามารถสร้างChrome Appได้
วิธีนี้คุณสามารถแจกจ่ายได้ใน Chrome เว็บสโตร์สำหรับการมองเห็นเพิ่มคุณสามารถเพลิดเพลินไปกับบางAPIs ที่มีประสิทธิภาพและทำให้มันมีลักษณะเหมือนเป็น app
แน่นอนว่าข้อเสียคือต้องใช้ Chrome
มันขึ้นอยู่กับว่าคุณต้องการใส่มันลงไปมากแค่ไหน การใช้ชุด API เว็บปัจจุบันคุณสามารถ:
Cmd+S
หรือCtrl+S
ในเบราว์เซอร์) หรือแคชเพจเป็น PWA เพิ่งรู้ว่าบนมือถือ dataURIs ทำงานได้ไม่ดีนักzip
ไฟล์ชำระเงินJSZip ฉันไม่รู้ว่าคุณจะใช้งานได้อย่างไร แต่ฉันแน่ใจว่ามีบางคนคิดว่าเป็นความคิดที่ดี (อาจบีบไฟล์ของคุณแล้วแปลงข้อมูลไบนารี่เป็นสตริงและวางไว้ใน html)