JavaScript ist offensichtlich nicht mehr wegzudenken. Ich bin jedoch noch neu darin und ich habe festgestellt, dass es schwierig ist, das Gefühl zu bekämpfen, dass es so ein Chaos zu sein scheint, und ich möchte mich jetzt nicht damit befassen. Ich verstehe andere Sprachen viel besser als JavaScript, weil ich diese Angst nicht in den Griff bekommen kann. Ich habe das Gefühl, dass ich beim Schreiben von JavaScript versuche, ein Porträt von Weimaraner Welpen zu malen.
Normalerweise hilft es mir dabei, eine Handvoll der wichtigsten Anweisungen im Auge zu behalten, die ich mir für jeden meiner Schritte selbst überlegen kann. (Meiner Meinung nach ist eine Handvoll fünf oder weniger.)
Können Sie fünf (oder weniger) JavaScript-spezifische Fragen auflisten, die ich mir für jeden Schritt, den ich beim Codieren von JavaScript vornehme, stellen sollte? Was würden sie sein?
Update: Um dies zu verdeutlichen, möchte ich nicht, dass beim Erlernen von JavaScript fünf Dinge beachtet werden. Ich bitte um fünf Fragen, um mich immer vorwärts zu fragen, die jeder immer stellen sollte. Fragen auf hoher Ebene wie: "Wiederhole ich das wahrscheinlich woanders?" oder "Ist dieser Variablen- / Funktionsname spezifisch genug (oder zu spezifisch)?" <== mit Ausnahme dieser Beispielfragen, die JavaScript nicht eigen sind. Ich suche nach Anweisungen, die JavaScript eigen sind.
Antworten:
Ich werde dies in zwei Teilen beantworten. Eine davon ist "Fünf oder weniger Tipps zum Erlernen des Schreibens von gutem JavaScript". Das andere ist "Fünf oder weniger Tipps zum Schreiben von gutem JavaScript".
Lernen:
Tun:
BEARBEITEN (Hinzufügen von Fragen zur Einhaltung des OP):
Auf welchen Bereich beziehe ich mich?
Dies sollte bei durchgesickerten Globalen, Ereignishandlern und der Verwendung von Closures hilfreich sein.
Wiederhole ich mich?
Die richtige Abstraktion und Verwendung von OO-Techniken ist wichtig. Setze sie mit Bedacht ein.
Wiederholt sich mein Code?
Es ist bemerkenswert einfach, den DOM-Zugriff in eine Schleife zu stellen oder Funktionen (anonym oder anderweitig) in einer Schleife zu erstellen. Beachten Sie, dass dieser Code wahr sein kann , dass Anwendungen
setTimeout
odersetInterval
als auch traditionelle Schleifen.Bedeutet das, was ich denke, dass es bedeutet?
Truthy- und Falsy-Werte in JS können etwas schwierig sein, insbesondere wenn nicht-strenge Vergleiche verwendet werden (
==
im Gegensatz zu===
). Dynamische Eingabe, Typenzwang und die Frage, ob Sie auf Objekte oder Literale verweisen, können ebenfalls relevant sein.quelle
Erstens, wissen Sie, wie die Technologie dahinter funktioniert.
Sie müssen dies wissen, weil Sie wissen, wie es funktioniert, weil Sie auf Netzwerkprobleme stoßen oder, wie ich unzählige Male gesehen habe, die Leute überhaupt nicht verstehen können, was Server- und Client-Seite eigentlich sind. Eine der häufigsten neuen Fragen lautet: "Wie kann ich JS veranlassen, eine Variable in meinem ASP-Code zu ändern ?!"
Verstehen Sie, dass Ihr Code größer ist als Sie oder Ihre spezifische Situation
cell.innerHTML = "<script>alert("xss")</script>"
und eine Warnmeldung angezeigt wird, haben Sie es falsch gemacht.<noscript>
Tags, um ihn darauf aufmerksam zu machen./[a-z ']/i
, aber Hindi, Arabisch, Akzente (dies ist ein Problem von kurzsichtigen Entwicklern), Chinesisch , und andere. Zeichensätze, Unicode und UTF-8 verstehen.Du bist ein Programmierer, keine Pastafabrik. Hör auf Spaghetti zu schreiben.
"This fizzes the bizz"
oder diejenigen, die halb englisch, halb französisch sind, sind nicht hilfreich. Beschreiben Sie, was eine Funktion tut. Beschreiben komplexer Codeabschnitte.<a href="javascript:alert("foo")">
. FFS TUN DAS NICHT. Warten Sie, bis das vollständige Dokument geladen ist. Trennen Sie Ihren JavaScript-Code vom HTML-Dokument. Dies ist die grundlegende Vorgehensweise für OOP 101. Fügen Sie JS oder CSS niemals in Ihr HTML-Dokument ein. Finden Sie heraus, wie es richtig gemacht wird, oder suchen Sie jemanden, der Ihnen zeigt, wie es geht. Nochmals Fragen stellen.Javascript:foo("buz")
ist ein Psudeo-Protokoll, es wird nicht vollständig unterstützt, und wenn Sie kein Javascript in der Zeile haben, würden Sie es gar nicht erst verwenden. Ich verspreche Ihnen von ganzem Herzen, dass es keinen Grund gibt, auf dieser Erde oder irgendwo im Universum Ihr Javascript in ein HTML-Element einzufügen. Je. Also tu es nicht. Ich werde nicht einmal mehr Leuten helfen, die das tun, es ist so schlimm.Finde heraus, wie du Code so schreibst, dass er nicht die ganze Zeit kaputt geht.
main_backup_20110911.js.bak.1
Sie verlieren Daten, Ihr Verzeichnis wird unordentlich und Sie können nicht einfach zu einem früheren Zeitpunkt "zurückspulen". Sie können nicht sehen, was los ist, Sie können keine Code-Patches erstellen. Fangen Sie einfach an, GIT zu lernen, es sollte eine Stunde dauern und Sie werden niemals zurückkehren.Schreiben Sie JavaScript, das die Leute lieben
Konzentrieren Sie sich immer auf das Wesentliche.
for (;;)
und warum Sie einefor( in )
Schleife verwenden. Wann wird eine while-Schleife verwendet? Stoppen Sie das Verschachteln von IFs, wenn Sie nur ein Schaltergehäuse verwenden können. Objekte behalten die Ordnung nicht bei, verwenden Sie sie also nicht als Array. alte Opera / FF, alte MISE, manchmal respektiert Flash die Reihenfolge Ihrer Objekte nicht. Verwenden Sie ein Array, wenn Sie die Reihenfolge der Dinge beibehalten möchten, und ein Objekt, wenn Sie ein Objekt (etwas, das keine Reihenfolge der Elemente hat) haben möchten.Konzentriere dich auf das lange Spiel, nicht auf einen schnellen Blitz und stirb.
which
". Lassen Sie eine Menge Code fallen, den niemand benutzen kann und der verschwinden kann. Sie haben nichts beigetragen. Verwenden Sie keine Variablen wiea
undchezburger
.Für alle Interessierten habe ich das meiste aus persönlichen Notizen in einem Tutorial entnommen, das ich nirgends fertig geschrieben habe.
quelle
TCPIP(HTTP(ClientServerRelationship(), Cookies(), HTML(JavaScript(Knowledge))))
Lesen Sie Douglas Crockfords Javascript: The Good Parts . Das ist ein ziemlicher Tipp, aber ehrlich gesagt, der beste Rat, den ich je zum Schreiben von gutem Javascript gehört habe.
Lesen Sie dazu die Artikel von Douglas Crockford in Javascript .
quelle
quelle
Hier sind einige Fragen, mit denen Sie JavaScript aktivieren können.
Wie funktioniert JSON und wofür ist es gut?
Warum sind Funktionsobjekte in Javascript?
Warum sollte ich eval nicht benutzen?
Wie erstelle ich Ereignisse in Javascript?
Wie erkenne ich Features in Javascript?
Ziemlich genau deckt die meisten Dinge ab, die Sie in Javascript tun müssen.
quelle
eval()
überprüfen Sie es doppelt und dreifach auf eine andere Weise. Es gibt fast immer einen saubereren und einfacheren Weg, es sei denn, Sie versuchen tatsächlich, eine ganze Zeichenfolge im Wert von JavaScript auszuführen.(function() {/* stuff */})()
Dies ist eine gute Möglichkeit, eine Reihe von Code einzuschließen und einen lokalen Bereich dafür zu erstellen. Die Verwendung von Objekten ist ein anderer, oftmals besserer Weg. Objekte sind bei dieser Verwendung eher mit Namespaces in anderen Sprachen vergleichbar. Passen Sie einfach aufthis
.this
Verweist im Gegensatz zu den meisten anderen Sprachen nicht immer auf das, was Sie intuitiv für möglich halten. Denken Sie auch daran, dass, sofern nicht anders angegeben, alle JS-Variablen, -Funktionen und andere Objekte global sind, auch über mehrere.js
Dateien hinweg.quelle
return
und die nächste Zeile, die Ihre Daten enthält, haben Sie tatsächlichreturn ;
aufgrund von ASI gesagt . Ich würde sagen, es ist wichtiger, die ASI- und Whitespace-Regeln zu verstehen, als "immer Semikolons verwenden". Aber es ist eine großartige Möglichkeit, sich selbst zu retten.I'd say it's more important to understand ASI and whitespace rules than it is "always use semicolons."
Ich glaube, Klassen sind ein ziemlich mächtiges Werkzeug, um Code zu strukturieren. Es gibt viele sprachunabhängige Regeln zum Entwerfen klassenbasierter Systeme, und einige OO-Prinzipien werden bei der Verwendung von Klassen tatsächlich offensichtlicher implementiert.
Deshalb schlage ich vor, dass Sie sich CoffeeScript ansehen .
Ich schlage vor, dass Sie nur versuchen, Informationen zur Implementierung von SOLID , DRY , GRASP , KISS und YAGNI zu sammeln , und vor allem, wie Sie Situationen denen sie in Konflikt zu geraten scheinen (das tun sie nie, nur Ihr Verständnis von ihnen oder das vorliegende Problem). Es ist ziemlich leicht zu finden, auch beim Stapelaustausch.
Bitte beachten Sie, dass diese Prinzipien ebenso für die "rohe" JavaScript-Entwicklung gelten. Viele Inhalte, die Sie auf ihnen finden, veranschaulichen sie jedoch in klassenbasierten Sprachen. Daher kann es hilfreich sein, in einer Sprache zu programmieren, in der das Verständnis nicht zu aufwändig ist.
Persönlich denke ich, dass JavaScript eine extrem mächtige Sprache ist, aber eigentlich muss man erst andere Sprachen verstehen, um diese Tatsache wirklich zu würdigen.
quelle
Ich gehe davon aus, dass Sie JavaScript für die clientseitige Benutzeroberflächenentwicklung in einer Webanwendung verwenden.
1) Sollte dies Clientseite sein oder sollte dies Serverseite sein? Ich weiß, dass ich ernsthafte Codestücke geschrieben habe, die es wirklich verdient haben, auf dem Server zu sein und umgekehrt. Oft werde ich einen AJAX-Aufruf für etwas machen, das einfach besser in den Server-Code eingefügt wird, um auf dem Weg dorthin eingeschlossen zu werden. Vor allem Dinge, die statisch sind, sich aber regelmäßig ändern (z. B. Kategorienliste).
2) Gibt es ein Plugin, das das schon macht?Ich benutze JQuery sehr oft und die Antwort lautet fast immer JA! Ich nehme oft Plugin-Code, den jemand geschrieben hat, und passe ihn an meine Bedürfnisse an (normalerweise füge ich den Dingen zusätzliche Klassen hinzu usw.), aber selten muss ich jemals von vorne anfangen.
3) Ist Javascript der richtige Ort dafür? Gelegentlich werde ich feststellen, dass ich eine ganze Reihe dynamischer Stile zu etwas über Javascript hinzufüge, wenn es viel sinnvoller ist, intelligentes CSS zu verwenden.
4) Sollte ich ein anderes Werkzeug verwenden? Damit habe ich mich in letzter Zeit auseinandergesetzt. Es gibt einige Javascript-Alternativen wie Kaffeeskript , die in meinem Stack gut gehandhabt werden (Rails 3.1), und ich habe darüber nachgedacht, ob ich einen Großteil meines Codes dorthin verschieben soll oder nicht.
5) Ist dieser Javascript-Code ein guter Code? Javascript ist Code wie jeder andere Code. Ist dieser Code so gut wie der Rest meines Codes? Wenn nein, warum nicht? Ist es wegwerfbar? Bin ich faul
quelle