2016-11-21 4 views
1

Ist es möglich zu verhindern, dass Angular Instance in den globalen (Fenster-) Bereich injiziert wird, wenn sie zum Beispiel mit einem Webpack oder einem anderen Modulbündler benötigt und gebündelt werden?Angular window injection

Ich habe festgestellt, dass die derzeitige Haupt JavaScript-Datei in Winkeln npm Paket ist:

require('./angular'); 
module.exports = angular; 

Mein webpack Eintrag Dateiinhalt ist:

import angular from 'angular'; 

// my custom code goes here 

die Haupt webpack Aufgabe undichte Variablen also zu verhindern, ist zu globalem Umfang, aber wenn ich versuche, winkelig in Chrome DevTools wie folgt zu loggen:

Ich werde sehen, dass diese Winkelinstanz injiziert wird. Irgendwelche Ideen, um das zu verhindern?

Zusätzliche Informationen:
Angularjs Version - 1.6.0-rc.0
Webpack Version - 2.1.0-beta.27

aktualisieren.

Antwort

0

Es sieht aus wie es schwer, in den veröffentlichten NPM-Code codiert ist, die globale Winkelgröße auf das window Objekt zuordnen, egal was:

angular   = window.angular || (window.angular = {}) 

Also gibt es keinen direkten Weg, um es zu verhindern. Sie könnten immer delete window.angular nach dem Laden, aber keine Versprechungen, die die Bibliothek nicht beeinflussen.

+0

Meine Idee verhindert die Injektion von eckigen Instanzen in den globalen Geltungsbereich, um verschiedene Versionen von angular auf einer Seite zu verwenden. Ich tue Sache, Winkelvariable im Fenstergegenstand zu löschen, ist für mich passend. –

+0

Also die einzige Möglichkeit zu tun, was ich will, ist die Bearbeitung von Winkelquellen? –

+0

Sie können versuchen, es als eine Variable zu speichern 'var localAngular = window.angular; lösche window.angular' nach dem require und fordere dann die andere Version. Allerdings erfordern zwei Versionen von eckigen Sounds wie ein Albtraum und ich würde einfach nicht tun –

Verwandte Themen