Сократите сценарий в своем собственном пакете для веб-работника в приложении Angular. - PullRequest
0 голосов
/ 01 февраля 2019

Я работаю над приложением Angular (v6) и, в конкретном компоненте, я хочу инициализировать веб-работника через Worker, передав файл JavaScript, который я хочу минимизировать в рабочей среде.

@Injectable({
   providedIn: 'root',
})
export class MyService {

  constructor() {
    this.worker = new Worker('script.js');
    this.worker.onmessage = (event: MessageEvent) => {
      ...
    };
  }

}

Приложение angular.json выглядит следующим образом:

{
  "projects": {
    "app-name": {
      "architect": {
        "build": {
          "options": {
            "scripts": [
              "src/scripts/worker.script.js",
              ...
            ]
          }
        }
      }
    }
  }
}

Файл src/scripts/worker.script.js содержит типичную самозапускающуюся Javascript анонимную функцию:

(function() {
  ...
}());

Теперь, это решение удовлетворяет меня только частично, потому что все сценарии сводятся вместе в scripts.js, поэтому то, что я передаю Работнику, может быть больше, чем мне нужно.В частности, если в какой-то момент мне понадобится второй Worker, использующий второй сценарий, мой подход потерпит неудачу.Пожалуйста, обратите внимание на следующие ограничения:

  • Я хочу, чтобы файл JavaScript был минимизирован, поэтому я хочу не добавлять его в раздел assets angular.json
  • Iне удается изменить код файла JavaScript.
...