2016-01-13 7 views
12

Ich bin einen Weg der Verwendung von Angular2 gegangen, aber schreibe ES5-Code, was bedeutet, dass die Beispiele und Anleitungen, die ich finde, normalerweise aus für TypeScript relevanten Antworten übersetzt werden müssen.Angular2 Web Worker mit ES5

Kann mir jemand helfen mit einer ES5-Version:

die Anwendung Bootstrapping. In Typoskript sehe ich es getan, wie:

import {WORKER_APP_PLATFORM, WORKER_APP_APPLICATION} from "angular2/platform/worker_app"; 
import {platform} from "angular2/core"; 
platform([WORKER_APP_PLATFORM]).application([WORKER_APP_APPLICATION]).bootstrap(myApp) 

die web_workers Komponente Zugriff auf:

import {Component} from 'angular2/web_worker/worker'; 
@Component({ ... ]) 

nahm ich die letztererletztereletzteres durch den Aufruf

ng.web_worker.worker.Component({ ... }) 

würden erreicht werden, aber das scheint nicht das zu sein Fall: ng.web_worker ist nicht definiert.

Das Problem könnte sein, dass ich web_worker/ui.js nicht richtig einbinden kann. Wenn ich es anstelle von Bundles/angular2-all.umd.js einschließe, erhalte ich nur Fehlermeldungen über die Notwendigkeit, undefiniert zu sein. Wenn ich RequireJS explizit in mein Projekt einfüge, erhalte ich eine Reihe anderer Fehler.

Jede Hilfe wird sehr geschätzt!

+0

Woher hast du diesen Code ?. Komponente ist ein Teil von eckigen 2 Kern, nicht web_worker. Ich fand nur, dass "worker_app" Modul einige WORKER_RENDER, MessageBus, etc. exportiert, ich fand es hier: https://github.com/angular/angular/blob/master/modules/angular2/docs/web_workers/web_workers.md – Andrey

+0

I fand dieses Codebeispiel: http://www.syntaxsuccess.com/viewarticle/web-workers-in-angular-2.0 – MatsGA

+0

Ok, was Sie tun möchten, ist Winkel 2 Teil im UMD-Format verwenden. Aber ich konnte nicht eckig 2 umd bauen mit Web-Worker enthalten. Die einzige Möglichkeit, die ich jetzt für ES5 sehen kann, ist die Verwendung von angular 2 ohne UMD-Bundle mit SystemJS-Modulen. (Ich hoffe, ich falsch und Sie können eine einfachere Lösung finden) – Andrey

Antwort

2

Kann ich fragen, warum möchten Sie es mit ES5 tun? Sie können SystemJS und ES6 problemlos verwenden, wenn Sie Typoskript nicht mögen. Typescript wäre fast identisch mit ES6.

Falls Sie es noch mit ES5 tun wollen, müssen Sie die Importe ändern Anrufe verlangen:

var WORKER_APP_PLATFORM = require("angular2/platform/worker_app").WORKER_APP_PLATFORM; 
var WORKER_APP_APPLICATION = require("angular2/platform/worker_app").WORKER_APP_APPLICATION; 
var platform = require("angular2/core").platform; 
platform([WORKER_APP_PLATFORM]).application([WORKER_APP_APPLICATION]).bootstrap(myApp) 

Ein weiteres Beispiel:

var Component = require('angular2/web_worker/worker').Component; 

Sie bekommen die Idee. Sie brauchen auch nicht RequireJS ... Sie können SystemJS verwenden. Sie sollten die Hauptdatei wie folgt importieren:

System.import("main") 

SystemJS alle Anrufe async erfordern lösen wird, aber in dem Code, der erforderlich Anrufe Sync aussehen.

+0

Vielen Dank für Ihre Antwort. Wir haben unsere Meinung zu ES5 geändert und mit TypeScript neu implementiert, was gar nicht so schwierig war, wie wir befürchtet hatten. Danke für die Hilfe – MatsGA