2016-08-09 175 views
0

Stellen Sie sich zwei Javascript-Dateien und ein Einstiegspunkt Datei:Webpack: einzelner Bereich für mehrere js-Dateien?

app.js:

require(a.js); 
require(b.js); 

a.js:

var a = 4; 

b.js:

var b = a+1; 
console.debug(b); 

Diese funktioniert leider nicht, weil der Kontext von Datei a in Datei b verloren geht, also b.js kennt keine Variable genannt.

Wie kann ich das beheben, dass Webpack mit - ich das gleiche Ergebnis wie

<script src="a.js"></script> 
<script src="b.js"></script> 

mit dem zusätzlichen Effekt der Bündelung durch Webpack einfach erhalten möchten.

Antwort

2

Mit ES2015 Module

a.js (was nicht für Sie zur Verfügung stehen, können Sie require stattdessen verwenden):

export var a = 4; 

b.js

import { a } from "./b.js"; 
var b = a+1; 
console.debug(b); 

Webpack ist ein Modul Gebäude/Bündelung System, das durch die Erstellung von UMD (Universal Module) funktioniert von Javascript-Dateien. Sie müssen diese Module importieren/exportieren, damit sie in Reichweite sind.

+0

Das Problem ist, dass es Tonnen von Variablenabhängigkeiten gibt, die ich nicht alle exportieren kann. Gibt es nicht einen anderen Weg, sie einfach zu verketten und zu verkleinern (wie zum Beispiel Schluck) – nauti

+0

@nauti Leider finde ich es wirklich schwer, dass du einen Weg findest, zu tun, was du denkst. Um die Anzahl der Exporte zu minimieren, müssen Sie höchstens mehrere Variablen in Objekten zusammenfassen und stattdessen diese Objekte exportieren. Ansonsten würde ich sagen, dass Webpack einfach nicht für dich ist. –

+0

Ich hatte den Eindruck, dass es eine gute Methode ist, riesige Javascript-Dateien in logische Subdateien (Komponenten) aufzuteilen, wenn größere Anwendungen geschrieben werden - wenn Webpack keine Möglichkeit hat, Dateien vor dem Bündeln einfach zu verketten, muss ich wirklich zweimal nachdenken benutze es in der Zukunft. Das ist eine Enttäuschung. – nauti