2016-04-04 8 views
0

Ich versuche JQWidgets zu arbeiten. Es hat eine jsxcore.js-Datei, die die folgende Variable definiert:Wird system.js zu meinem Javascript hinzugefügt?

var jqxBaseFramework = window.minQuery || window.jQuery; 

Dann in anderen Dateien, diese Variable verwendet wird. Aber ich bekomme einen Fehler, der jqxBaseFramework is not defined in der nächsten Datei sagt.

Ich habe bemerkt, dass wenn ich eine Datei system.import, diese an die Spitze der es hinzugefügt:

(function(require, exports, module, __filename, __dirname, global, GLOBAL) { 

Dies bewirkt, dass Variablen, die in ihrem Umfang wäre außerhalb des Gültigkeitsbereichs zu sein.

Geht system.js so? Wenn ja, gibt es eine Problemumgehung?

Wenn nicht, werde ich gehen müssen diese Variable an den Anfang jeder Datei hinzufügen .... Nicht lustig, da es einige sind.

+0

Erfahren Sie mehr über CommonJS-Module. Sie sollten 'require()'/'import', nicht globals verwenden. – SLaks

+0

@SLaks - Dies ist nicht mein Code. Das mache ich in meinem Code. Mein Code verwendet 'import'. Aber ich brauche einen Weg, um JQWidgets in meinen Code zu laden. – Vaccano

Antwort

1

Geht system.js so?

Ja

Wenn ja, gibt es eine Arbeit um den Umfang Thema?

Ja. SystemJS ist ein Modulladesystem. Sie behandeln Ihre Dateien als gekapselte Module. Du solltest das Konzept der Globals wegwerfen.

Wenn Sie einen Wert von einem Modul verfügbar machen möchten, exportieren Sie es. Sollte ein Modul einen Wert von einem bestimmten Modul benötigen, benötigen Sie es. Lesen Sie mehr über CommonJS, um mehr darüber zu erfahren, wie dieser Mechanismus funktioniert.

+0

Das klingt nach einer großartigen Idee. Und das mache ich in meinem Code. Leider habe ich den Code zu JQWidgets nicht und kann keine Alternative zu einem vernünftigen Preis finden. Gibt es eine Möglichkeit, diese Variable/Wert in das Modul/Datei zu übergeben, ohne es zu ändern? – Vaccano

+0

@Vaccano Der schnellste Weg wäre, ein Dummy-Modul zu erstellen, das es exportiert. So etwas wie 'module.exports = window.minQuery || window.jQuery; ' – Joseph

+0

Ich bin kein JavaScript-Experte, daher kann mir hier etwas fehlen, aber wenn die nächste Datei auf' jqxBaseFramework' verweist, wird es immer noch fehlschlagen, oder? Weil mein Export nicht mit dieser Variablen verbunden ist. – Vaccano