javascript validator Was nützt JSLint, wenn jQuery die Validierung nicht besteht




jslint npm (8)

Die Ziele der jQuery-Entwickler entsprechen nicht Ihren Zielen. jQuery ist auf Geschwindigkeit und Kompaktheit ausgelegt und das Erreichen dieser Ziele übertrifft Lesbarkeit und Wartungsfreundlichkeit.

Crockfords Tests in JSLint haben mehr damit zu tun, etwas zu erreichen, mit dem er sich wohl fühlt, wenn er nach Hause kommt, um seine Mutter zu treffen. Das ist eine berechtigte Sorge, wenn Sie für eine gewisse Zeit mit Ihrem Code verheiratet sein werden.

Also habe ich verschiedene Methoden untersucht, um mein JavaScript aufzuräumen und zu testen. Ich dachte mir, genau wie jede andere Sprache, um besser zu werden, ist es, guten Code zu lesen. jQuery ist sehr beliebt, daher muss es ein gewisses Maß an guter Kodierung haben.

Also warum, wenn ich jQuery durch JSLints Validierung laufen lasse, gibt es mir diese Nachricht:

Error:

Problem bei Zeile 18 Zeichen 5: Erwartete einen Bezeichner und sah stattdessen 'undefiniert' (ein reserviertes Wort).

nicht definiert,

Problem bei Zeile 24 Zeichen 27: Fehlendes Semikolon.

jQuery = window.jQuery = Fenster. $ = Funktion (Selektor, Kontext) {

Problem bei Zeile 24 Zeichen 28: Erwartete eine Kennung und stattdessen '='.

jQuery = window.jQuery = Fenster. $ = Funktion (Selektor, Kontext) {

Problem bei Zeile 24 Zeichen 28: Stoppen, nicht fortfahren. (0% gescannt) .

Dies wurde mit JSLint und jquery-1.3.1.js gemacht


JQuery ist natürlich nicht das Beste auf der Welt. Das ist schon klar, wenn man sich die Notation anschaut. Die Dollar-Klammer-Kombination ist wirklich schlecht für Ihre Augen. Die Programmierung sollte klar und einfach sein. JQuery ist weit davon entfernt. Dieser Grund ist genug für mich, um es nicht zu benutzen. Dass es nicht richtig geschrieben ist, überrascht mich nicht und unterstreicht nur meine Gedanken zu dieser JavaScript-Bibliothek.


Wenn Sie jQuery selbst nicht aktiv entwickeln, warum sollten Sie JSLint sogar überhaupt ausführen? Wenn es funktioniert, funktioniert es und Sie müssen sich keine Sorgen machen.


JSLint hilft Ihnen, Probleme zu finden, es ist kein Test der Gültigkeit oder ein Ersatz für das Denken. jQuery ist ziemlich fortgeschritten, wie js geht, was ein solches Ergebnis verständlich macht. Ich meine, die ersten paar Zeilen sind Speed-Hacks, kein Wunder, dass der starrste js-Parser ein paar Fehler hat.

In jedem Fall ist die Annahme, dass populärer Code vollkommen korrekt oder sogar "gut" ist, fehlerhaft. JQuery-Code ist gut, und Sie können viel davon lernen, es zu lesen. Du solltest deine Sachen immer noch durch JSLint laufen lassen, nur weil es gut ist, eine andere Meinung zu hören, was du geschrieben hast.

Aus der Beschreibung von JSLint:

JSLint nimmt eine JavaScript-Quelle und scannt sie. Wenn es ein Problem findet, gibt es eine Nachricht zurück, die das Problem und einen ungefähren Ort innerhalb der Quelle beschreibt. Das Problem ist nicht notwendigerweise ein Syntaxfehler, obwohl es oft ist. JSLint betrachtet einige Stilkonventionen sowie strukturelle Probleme. Es beweist nicht, dass Ihr Programm korrekt ist. Es bietet nur eine weitere Reihe von Augen, um Probleme zu erkennen.

JSLint definiert eine professionelle Teilmenge von JavaScript, eine strengere Sprache als die in der Edition 3 der ECMAScript-Sprachspezifikation definierte. Die Teilmenge bezieht sich auf Empfehlungen in Code Conventions für die JavaScript-Programmiersprache.


Wenn Sie Daisy-Chain-Methoden wie jQuery möchten, können Sie YUI3 schätzen.


JSLint testet die Meinung einer bestimmten Person (Douglas Crockford), was einen guten JavaScript-Code ausmacht. Crockford ist sehr gut, aber einige seiner Meinungen sind bestenfalls anal-retentiv, wie die Unterstrich-Regel oder die Verwendung der Inkrement / Dekrement-Operatoren.

Viele der Probleme, die von JSLint in der obigen Ausgabe markiert werden, sind Probleme, von denen Crockford glaubt, dass sie schwer zu pflegen sind, oder sie sind Dinge, von denen er glaubt, dass sie ihn dazu verleitet haben, "kluge" Dinge in der Vergangenheit zu tun.

Es gibt einige Dinge, die Crockford als Fehler identifiziert, denen ich zustimme, wie die fehlende Semikolon-Sache. Das Löschen von Semikolons zwingt den Browser zu raten, wo das Token zum Ende der Anweisung eingefügt werden soll, und das kann manchmal gefährlich sein (es ist immer langsamer). Und mehrere dieser Fehler sind darauf zurückzuführen, dass JSLint keine Mehrfachzuweisungen wie jQuery in Zeile 24 erwartet oder unterstützt.

Wenn Sie eine Frage zu einem JSLint-Fehler haben, mailen Sie an Crockford, er ist wirklich gut darin zu antworten, und mit seiner Antwort wissen Sie zumindest, warum JSLint so implementiert wurde.

Oh, und nur weil eine Bibliothek beliebt ist, heißt das nicht, dass Code etwas Gutes ist. JQuery ist beliebt, weil es eine relativ schnelle, einfach zu bedienende Bibliothek ist. Dass es gut umgesetzt wird, ist für seine Beliebtheit bei vielen eher belanglos. Allerdings sollten Sie sicherlich mehr Code lesen, sollten wir alle.

JSLint kann beim Identifizieren von Problemen mit dem Code sehr hilfreich sein, selbst wenn JQuery die gewünschten Standards nicht erfüllt.


"jQuery ist sehr beliebt, daher muss es einen gewissen Grad an guter Kodierung haben."

Man möchte hoffen, dass dies bei jQuery der Fall ist, aber leider stimmt es nicht wirklich. jQuery ist nützlich und beliebt, aber es ist keine gut geschriebene JavaScript-Bibliothek. David Mark hat kürzlich eine vernichtende Kritik an jQuery in comp.lang.javascript geschrieben, die eine große Anzahl von Beispielen des schlechten Codes in jQuery untersucht:

http://groups.google.com/group/comp.lang.javascript/msg/37cb11852d7ca75c?hl=de&


Ich habe einen Fall gefunden, in dem JSLint sehr, sehr nützlich ist: Wenn man eine dieser riesigen Bibliotheken nimmt, die im Netz herumfliegen, dann findet man schnell wieder 50k Javascript auf jedem neuen Seitenladen (Caching kann helfen, ist aber keine Allheilungslösung).

Was würdest du dann tun? Komprimiere diese Bibliotheken. Aber Ihr Host führt keine Komprimierung für Nicht-HTML-Dateien durch! Na und? Sie verwenden einen Javascript-Komprimierer.

Das Beste, was ich gefunden habe, ist Dean Edwards; Ich habe es verwendet, um John Fraser Showdown (eine Markdown für Javascript-Bibliothek) zu komprimieren, aber leider hat die Komprimierung den Code zerstört. Da Showdown nicht mehr unterstützt wird, musste ich es selbst korrigieren - und JSlint war dafür von unschätzbarem Wert.

Kurz gesagt, JSlint ist nützlich, um Ihren JS-Code für die Hochleistungskomprimierung vorzubereiten.





jquery