Wo wird eine Web-Worker-Datei in Rails 4 abgelegt?

8

HTML5 Web Worker hängen normalerweise von externen Skripten ab, die importScripts() verwenden. Wohin sollten solche Skripte unter Rails 4 gehen, damit sie wie in der Assets-Pipeline normal vereinheitlicht werden und dennoch korrekt funktionieren?

Beim Arbeiten mit der Asset-Pipeline gibt es einige Probleme, die behoben werden müssen:

  1. Die externen Skripte, die unter vendor/assets stehen, werden standardmäßig nicht von der Asset-Pipeline verarbeitet (was in Rails 3 nicht der Fall war).
  2. Wenn die Skripts unter app/assets platziert werden, müssen sie in application.js enthalten sein, damit sie verarbeitet werden können. Worker-Dateien sollten jedoch nicht in der kombinierten Ausgabe enthalten sein (d. H.% Co_de%).
  3. Wenn die Skripts in der Konfigurationsdatei von Assets enthalten sind, enthalten die resultierenden Dateien einen Digest in ihrem Dateinamen. Um den Worker zu laden, muss man dem Browser seinen Pfad geben (z. B. application-[digest].js . Wie würden wir den Pfad herausfinden? (Ich habe new Worker('myWorker.js') versucht, aber es hat nicht funktioniert).
  4. Genau wie in 3 müssen Mitarbeiter beim Aufrufen von asset_path auf andere Dateien anhand ihres Namens verweisen. Wie würden wir den Pfad zum Laden herausfinden?
Hosam Aly 29.12.2014, 23:02
quelle

2 Antworten

3

Wenn Sie von Google hierher kommen, können Sie Inline-Mitarbeiter verwenden.

Inline-Arbeiter

Was ist, wenn Sie Ihr Worker-Skript im Handumdrehen erstellen oder eine eigenständige Seite erstellen möchten, ohne separate Worker-Dateien erstellen zu müssen? Mit Blob () können Sie Ihren Worker in dieselbe HTML-Datei wie Ihre Hauptlogik "inline" einfügen, indem Sie einen URL-Handle für den Worker-Code als String erstellen:

%Vor%     
learning_to_swim 23.02.2016 15:08
quelle
0

Gemäß der Konvention (die nicht so populär ist) sollte sie zu vendor/assets gehen. Um genau zu sein:

  • app/ alles, was genau an diese bestimmte App gebunden ist
  • lib/ Der gesamte Code, der von Ihnen geschrieben wurde, aber nicht an Ihre Anwendung gebunden ist (kann oder wird extrahiert, um einen Edelstein zu trennen)
  • vendor/ aller Fremdanbietercode
Hauleth 29.12.2014 23:23
quelle