2014-12-29 21 views
8

HTML5 Web Çalışanlar genellikle importScripts() kullanarak harici komut dosyalarına bağlıdır. Bu tür komut dosyaları Raylar 4'ün altında nereye gitmeli, böylece varlıklar boru hattına göre normal bir şekilde küçülecekler ve yine de doğru şekilde çalışıyorlar?Rails 4'te bir web çalışanı dosyası nereye yerleştirilir?

  1. Harici komut, değildi varsayılan olarak aktif boru hattı (tarafından işlenmez vendor/assets altına konulursa: ele alınması gereken varlık boru hattı ile çalışırken

    bazı sorunlar vardır Raylar 3).

  2. Komut dosyaları, app/assets'un altına yerleştirildiyse, işlenmeleri için bunların application.js'a dahil edilmesi gerekir. Ancak, çalışan dosyaları birleştirilmiş çıktıya dahil edilmemelidir (ör. application-[digest].js).
  3. Komut dosyaları varlık yapılandırmasına dahil edilirse, sonuçta elde edilen dosyalar dosya adlarında bir özet içerecektir. İşçiyi yüklemek için, kullanıcının tarayıcıya yolunu vermesi gerekir (ör. new Worker('myWorker.js'). Yolu nasıl bulabiliriz? (asset_path'u denedim, ancak çalışmadı)
  4. Tıpkı 3'te olduğu gibi, . ismen diğer dosyaları importScripts() arayarak nasıl yüklemek için yolunu öğrenmek istiyorum
+0

hep işçiler ve ithalatta ile bitirmek '/ public' klasörü ancak bu yaklaşımla çok mutlu olmadığımı söylemeliyim. –

cevap

0

konvansiyona göre bunun vendor/assets gitmeli (kadar popüler değil) kesin olmak için:?.

    Bu özel uygulamaya kesinlikle bağlı olan
  • app/ her şey
  • lib/ siz yazdınız ama herkes Google'dan buraya gelen İçin
  • vendor/ tüm üçüncü taraf kodunu
+0

Cevabınız için teşekkürler, ancak buradaki kural aslında burada kullanılmamaktadır. Asıl meseleyi açıklığa kavuşturmak için sorumu güncelledim. –

3

(veya ayrı taş çıkartılacaktır olabilir) uygulamanıza bağlı olmayan tüm kod - Inline Workers'u kullanabilirsiniz.

Inline İşçi

ayrı işçi dosyaları oluşturmak zorunda kalmadan kendi kendine yeten sayfasını anında sizin işçi komut dosyası oluşturmak veya oluşturmak istiyorsanız ne olacak? Blob() ile şunları yapabilirsiniz "satır içi" bir dize olarak işçi koduna URL kolu oluşturarak ana mantık olarak aynı HTML dosyasında işçi:

var blob = new Blob([ 
    "onmessage = function(e) { postMessage('msg from worker'); }"]); 

// Obtain a blob URL reference to our worker 'file'. 
var blobURL = window.URL.createObjectURL(blob); 

var worker = new Worker(blobURL); 
worker.onmessage = function(e) { 
    // e.data == 'msg from worker' 
}; 
worker.postMessage(); // Start the worker. 
İlgili konular