2017-12-11 39 views
3

初めて、「新しい」ネイティブimportexportの機能を使ってプロジェクトを開発しました。私のすべてのモジュールはこう書かれています。Webワーカーでモジュールを使用できますか?

さて、これらのモジュールの一部をWebワーカー経由で実行する機能を追加します。モジュールを複製したり変更したりすることなく(メンテナンスの悪夢を作り出す)それは可能ですか?

例えば、私は約 the importScripts functionality in web workersを知っていますが、ドキュメンテーションはモジュールの書き出しでうまくいくとは言いません。私はこのようなファイルがある場合

だから:

import // ... resources ... 

function doStuff() { 
    // do stuff that a web worker can handle, no DOM manip, etc 
} 

export default doStuff; 

をそれがシームレスにその構成要素のどれもが、そのWebワーカーができない事もしないと仮定すると、ウェブワーカーの内部で利用することはできますか?

もしそうでなければ、webpackのようなものを使ってモジュールをまとめて1つのWebワーカーファイルにまとめることができますか?これを行う一般的な方法がいくつかありますか?

+0

スペックは、新しいオプションパラメータをワーカーコンストラクタに配置する予定であり、*モジュール*ワーカーであるかどうかを知ることができます:https://github.com/whatwg/html/commit/e3a5bb757f64374c37d8c4528c01298463ef0b2aしかし、まだブラウザはこれを実装していないようです。 – Kaiido

+0

@Kaiidoクールに感謝する –

答えて

1

これは自己回答では計画していませんでしたが、あなたのプロジェクト全体にwebpackを使用したくない場合でも、そのwebpackアイデアにいくつかのテストを行いました。 Webワーカーはあなたのエントリーポイントであり、必要なすべてのモジュールをwebpackで1つのファイルにまとめ、出力ファイルをWebワーカーとして使用します。

私はWebPACKの出力にウェブ働きやすいファイルをつもりだったわからなかったが、それはありませんので、あなたはこのようなものを使用することができますし、それをWebPACKの場合、それは完璧に動作します:

import testFunc from './test.js'; 

onmessage = function(e) { 
    testFunc(); 
    console.log('Message received from main script:', e.data); 
    var workerResult = 'hello world'; 
    console.log('Posting message back to main script'); 
    postMessage(workerResult); 
} 

私はこれをテストしました。これは、Webパック形式のWebワーカーとして実行された場合、絶対に動作します。

関連する問題