私はEmberアプリケーションにWebワーカーを使って機能を実装しており、ワーカーソースをパッケージ化する方法を理解するのに問題があります。Ember.jsで使用するWebワーカーソースのパッケージ化
私の最初のアプローチは、assets
ディレクトリにworker.js
を配置することでしたが、私たちの構成では、資産は生産の別のサーバーから提供されている、と私たちはエラーを取得:
Failed to construct Worker: Script at https://static-assets.foo.com cannot be accessed from origin https://app.foo.com
私はdocument.domain
でfutzingてみました( foo.com
に変更)、エラーは解決しません。
app.js
と
vendor.js
(たとえば、
worker.js
)に加えて、別のJSバンドルを作成する
ember-cli-build.js
(別名
Brocfile.js
)を変更することができれば、私は疑問に思い
<script>
タグindex.html
です。しかし、app.js/vendor.js
のロジックがember-cli
に焼き付けられたり、ブロッコリーに関する知識が不足しているため、その方法を理解することができません。
次に、私はblobからワーカーを作成することを検討しました。問題は、ブロブのソースをどこに格納するかです。私はブロブのソースを非標準の<script>
タグの中に入れて、index.html
に入れておきました。ここから、それを取り出してブロブを作成することができました。しかし、私はindex.html
に直接ワーカーソースを挿入したくないので、broccoli-replace
を使うと思ったのですが、ワーカーソースはES6で書かれており、蒸散が必要です。私はindex.html
に物を挿入することができるemberアドオンを使用することを検討しましたが、挿入するテキストを指定する必要があり、どこから取得するのかわからず、蒸散の問題が残ります。
次に、関数内でワーカーソースをラップし、実行時に関数を文字列化して本文を抽出する({}
の間)など、いくつかの非常にクルージーなソリューションを考えました。それはうまくいくが、悪臭は圧倒的だ。Babelに_toConsumableArray
のような小さな実行時ユーティリティを呼び出させる拡散演算子や配列の破壊などのES6構造は使用できない。
上記の方法のいずれかを実行するための妥当な解決法または方法はありますか?
「app.foo.com」のスクリプトを許可する設定はどうですか? –