HTML ve JavaScript'i aynı .html
dosyada bir araya getirebilirim , ancak görüntülerin ayrı dosyalar olması gerekir. Aklıma gelen tek çözüm kullanıcıya bir .zip
klasör vermektir .
Bu hoş değil ... Bunu başka nasıl yapabilirim?
HTML ve JavaScript'i aynı .html
dosyada bir araya getirebilirim , ancak görüntülerin ayrı dosyalar olması gerekir. Aklıma gelen tek çözüm kullanıcıya bir .zip
klasör vermektir .
Bu hoş değil ... Bunu başka nasıl yapabilirim?
Yanıtlar:
İkili görüntü verilerinin base64 temsilini görüntünün src özniteliği olarak koymaya izin veren dataurl-sözdizimini kullanarak HTML belgesine görüntü gömebilirsiniz. Bu aynı zamanda başka herhangi bir medya dosyası üzerinde de çalışır.
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9EFBAoYMhVvMQIAAAAtSURBVHicY/z//z8DHoBH+v///yy4FDEyMjIwMDDhM3lgpaEuh7gTEzDiDxYA9HEPDF90e5YAAAAASUVORK5CYII=">
CSS stil sayfalarını kullandığınızda, bunları JavaScript'te tamamen yordamsal olarak oluşturabilirsiniz.
Tüm dosyaları bir .zip dosyasına koymak uygun bir çözüm değildir, çünkü çoğu web uygulamasının bir HTTP sunucusuna ihtiyaç duyması için bir web sunucusuna ihtiyacı vardır. Bazı sistemlerde file://
URI şeması aracılığıyla dosyalara erişebilirsiniz , ancak güvenlik nedeniyle her yerde çalışacağı garanti edilmez ve AJAX istekleri gibi şeyler için başarısız olur.
Çoğu kaynağın inline olduğu çok basit bir uygulama için işe yarayabilir, ancak bu gerçekten kimseye tavsiye edeceğim yaklaşım değildir. Yine de alternatifler var, örneğin:
Node-Webkit kullanarak web uygulamanızı yerel bir uygulama olarak paketleyebilirsiniz . Bunu, oyununuza yerel masaüstü özellikleri (yerel kaydetme oyunları gibi) eklemek için bile kullanabilirsiniz.
Bu bir " paket ve tamamlandı " yaklaşımı değildir .. muhtemelen uygulamanızın bölümlerini yeniden yazmanız ve farklı yükleyiciler yazmanız gerekir (örneğin, bir masaüstü uygulamasıyla dosyaları dosya sistemi aracılığıyla yüklemeyi tercih edersiniz, HTTP kullanırsanız) -Tarayıcı / çevrimiçi oyunda istekleri).
Birincil hedefiniz, oyuncunun oyununuzu çevrimdışı oynamasına izin vermekse, uygulamanıza çevrimdışı erişime izin vermek için uygulama önbelleğini de kullanabilirsiniz . Bu, çoğu modern tarayıcıda çalışan bir özelliktir . Ek avantaj, kullanıcının hiçbir şey indirmek zorunda olmaması ve sadece çevrimdışı olsa bile oyununuzu oynamak için bir yer imini kullanabilmesidir.
Zaman uyumsuz olarak yüklenen kaynaklar için (AJAX) ayrıca ayrı yükleme mekanizmaları uygulamanız gerekir. Sen yararlanabilecek yerel depolama çevrimdışı kullanım için bu kaynakları kaydedin.
file:///
protokolün erişmesine izin verir localStorage
, bu da tasarruf için çalışır. Çevrimiçi oyun dışında bir HTML oyununda yapılabilecek her şeyi yapmak için ölçeklendirilir.
Oyunun çevrimdışı çalışmasını sağlamak ve bazı yerel işlevlerin keyfini çıkarmak için Chrome tabanlı bir çözüm için bir Chrome Uygulaması oluşturmayı düşünebilirsiniz .
Bu şekilde daha fazla görünürlük için Chrome Web Mağazası'na dağıtabilir, bazı güçlü API'ların keyfini çıkarabilir ve bağımsız bir uygulama gibi görünmesini sağlayabilirsiniz .
Dezavantajı elbette Chrome gerektirir.
Peki, gerçekten ne kadar iş koymak istediğinize bağlı. Geçerli Web API'larını kullanarak şunları yapabilirsiniz:
Cmd+S
ya Ctrl+S
tarayıcıda) veya PWA olarak sayfayı önbelleğe. Mobil cihazlarda dataURI'lerin çok iyi performans göstermediğini bilin.zip
dosyayla devam etmek istiyorsanız , JSZip'i kontrol edin . Ben nasıl kullanabilirsiniz hakkında hiçbir fikrim yok, ama eminim birisi iyi bir fikir (belki dosya zip ve daha sonra ikili veri dönüştürmek dize ve html içine satır içi yerleştirmek) gelip olabilir.