2016-08-05 7 views
0

ich versuche, jQuery-Validator in ES6ohne Verwendung von jQuery, und ich irgendwie eine Straßensperre getroffen haben, um neu zu versuchen, es ist Funktionalität neu erstellen die für das Hinzufügen von Validierungsmethoden unter Verwendung von Globaler Bereich, das heißt, wenn Sie Validator.addMethod irgendwo aufrufen, wird es die zugehörige Funktion in der Validator ausführen und eine Methode zu der Validator hinzufügen.Bind Klassen Global Scope in ES6

kann ich nicht, dies zu tun in ES6 scheinen, da ich nicht erlaubt bin meine Klasse in dem globalen Rahmen zu exportieren, ist meine Klasse nie zugänglich aus dem Fenster Objekt, wie zum Beispiel jQuery ist, ohne dies jeder, der eine neue Validierungsfunktion zu import eine neue Funktion es Klasse haben würde hinzufügen möchte hinzufügen, und ich kann einfach

Validator.addMethod('required', function(element, value){ 
    return value.length > 0; 
}) 

auf eine beliebige Datei i die Validator-Klasse nach dem Laden wollen nicht nennen, so meine Frage ist, Ist das in ES6 wirklich unmöglich oder fehle ich etwas? Ich weiß bereits, dass es nicht die beste Praxis ist und offen für Vorschläge wäre, aber die Idee ist die einfache Bedienung auch für Leute, die ES6 nicht beherrschen.

+0

Also läuft dieser Validator auf dem Front-End? wo schreibst du es? ist es isomorph? –

+0

@ duxfox-- Es läuft nur auf dem Front-End, ich habe einen separaten PHP-Validator auf dem Server laufen – JonnySerra

Antwort

2

ES6 und höher wurde entwickelt, um den globalen Anwendungsbereich nicht zu verschmutzen. Ihre Bedenken sind nur die Lösung für viele böse Codierungsverfahren in JavaScript.

BTW, können Sie immer Zugriff window Objekt und eine Eigenschaft hinzufügen die gleiche Art und Weise wie Ihre Klasse genannt:

class Validator {} 

window.Validator = Validator; 

... weil eine Klasse noch eine Konstruktorfunktion und prototypische Vererbung von einem Klassen- gewickelt ist basierte Syntax.

Wenn Sie vorhaben, Ihre Bibliothek sowohl in Browsern und NodeJS verteilen, könnten Sie dies tun wollen:

class Validator {} 

var global = window || global; 
global.Validator = Validator; 

BTW, wenn Sie die Dinge in die richtige Art und Weise tun möchten, können Sie verteilen Ihre Bibliothek mit der universellen Moduldefinition. Learn more at the official GitHub repository of Universal Module Definition (UMD).