2016-06-09 23 views
0

Ich arbeite an Bibliothek. Ich habe versucht, es zu ändern, so dass es einen benutzerdefinierten Player anstelle des HTML5-Players verwendet. So ersetzte ich die Funktionsaufrufe play() usw. mit den Aufrufen an meinen benutzerdefinierten Player (sagen custFunc1()). Diese Aufrufe sind in einer separaten Datei definiert: custPlayer.js.Aufruf einer außerhalb der Javascript-Bibliothek definierten Funktion

Also in meiner index.html Datei, werde ich zuerst die custPlayer.js Datei enthält und dann die eingebaute Datei.

Allerdings ist das Problem, dass beim Erstellen des video.js-Paket mit Grunt, bekomme ich den Fehler, dass custFunc1 ist nicht definiert und damit Grunt ist nicht in der Lage, die video.js-Bibliothek zu erstellen. Jetzt

konnte ich von einem Kollegen, um herauszufinden, dass das Hinzufügen von /* globalen custFunc1 */ zu Beginn der jeweiligen Datei im Paket aus, wo ich custFunc1 behebt das Problem aufrufen. Das Grunzen gelingt und es funktioniert gut.

Also, was ich wissen will, ist:

  1. Wie funktioniert das das Problem tatsächlich lösen, da dies genau wie ein Kommentar in Javascript ist, wie es dies anders nicht behandeln und verstehen, dass es anzeigt, dass die Funktionsdefinition wird außerhalb der Bibliothek vorhanden sein?

  2. Ist das Wort global eine Art von Keyword in Javascript?

  3. Gibt es andere Möglichkeiten, dies zu erreichen, abgesehen von dem, was ich erwähnt habe?

  4. Auf eine etwas andere Anmerkung, wollte ich fragen, ob ist das grobe Äquivalent von ?

Antwort

1

Ihr Javascript wird linted als Teil Ihrer Grunzen Prozess, wenn Sie an der Wurzel des Projektordners aussehen sollten Sie eine Datei wie .jshintrc oder etwas in diese Richtung (unterschiedlich je nach Linter) sehen.

Ihre aktuellen Einstellungen bedeutet, dass der Linter Ihre .js-Dateien nacheinander durchläuft und wenn er auf eine Variable oder Funktion von einer anderen Datei stößt, wird der Fehler angezeigt. Sie können diese Überprüfung entweder deaktivieren oder custFunc1 zu einem Array bekannter globaler Variablen hinzufügen. In jshint tun Sie es wie so - https://github.com/gruntjs/grunt-contrib-jshint#jshintrc

{ 
    "globals": { 
    "custFunc1": true 
    } 
} 

Die Globals werden wahrscheinlich bereits in der Datei vorhanden sein, so dass nur custFunc1 hinzufügen: true zu.

Oh und um Frage 1 zu beantworten - die Syntax des Kommentartyps teilt dem Linter mit, seine Einstellungen für diese aktuelle Datei zu ignorieren und die Einstellungen in der .jshintrc-Datei zu überschreiben.

2 - Ja, es ist eine Einstellung in jshintrc und das Hinzufügen von custFunc1 zu ihr innerhalb der Datei selbst statt global in der.jshintrc-Datei.

3 - Oben erwähnt.

4 - nie benutzt maker aber ja ich glaube, es ist ähnlich, dass es ein vor Prozess Werkzeug