Okay, nenn mich einfach den Krypta-Wächter bei all dem Nekro, das ich mache, aber ich habe nie das Gefühl gehabt, dass der wahre Wert davon richtig verstanden wurde. In der Vergangenheit wurde behauptet, dass "unauffälliges JavaScript" oder das Heraushalten Ihres JS aus dem HTML-Code über Inline-HTML-Ereignishandlerattribute und Skript-Tags, die nicht so oft wie möglich mit einer Datei verknüpft sind, ein wichtiges Schlüsselelement von:
- Zugänglichkeitsbedenken
- SEO
- Und progressive Verbesserung
LÜGEN! (Nun, jetzt wären sie)
Die Wahrheit ist, dass Sie technisch aufdringliches JavaScript verwenden und trotzdem die oben genannten drei Elemente entfernen können. Es sei denn, Sie haben HTML-Inhalte dynamisch erstellt, was an diesem Tag ein großes SEO-No-No war.
Aber hör auf und denk nach ... über DICH!
Wirklich, der große Vorteil, der größte und am meisten unterverkaufte Gewinn bei der Aufrechterhaltung der Trennung war immer der direkte Vorteil, den der Entwickler daraus zieht. Sie können so viele Ereignishandler wie Sie möchten im selben HTML-Element für dasselbe Ereignis haben, wie es zweckmäßig ist. Das bedeutet, wenn ein Tag mit class="some_class"
immer ein bestimmtes Verhalten aufweist, aber auch ein Bonusverhalten, wenn es sich in einem id="bonus_behavior"
Div befindet, müssen wir nicht mit der Logik in unserem einmal erlaubten Ereignishandler herumspielen, um dies zu verzweigen. Wir können je nach Kontext nur Handler hinzufügen oder nicht.
Einfach zu lesen
Ein weiterer Vorteil ist die Lesbarkeit. Dies war ein kritischeres Problem, als die Browser-Tools aus der exklusiven Fehlermeldung des IE bestanden, die Ihnen mitteilte, dass etwas nicht stimmte, [object]
aber IMO, es ist immer noch eine große Sache. CSS hier, JS dort und HTML ist der Ort, an dem sich sowohl sie als auch der Server treffen. Wenn all diese Dinge an einem Ort zusammenkommen, ist es sinnvoll, sich auf die Hooks (IDs, Klassen und Hierarchien) zu verlassen, um eine Abstraktionsebene zu erstellen, die alles verwendet, um eine Verbindung zum HTML herzustellen.
IMO: Je mehr Sie HTML, CSS und JS voneinander trennen können, desto einfacher ist es, nicht nur zu lesen, sondern auch zu ändern und zu verstehen, was vor sich geht. Ich sehe ein leeres Div mit "dynamic_combo_box" als Klasse und ich habe eine gute Idee, dass etwas eine ausgefallene Auswahl macht, die Daten dynamisch lädt. Ich habe einen Hinweis darauf, wie man das in JS und CSS findet, und wenn ich in diesen Belangen auf die Klasse stoße, habe ich eine gute Idee, worum es geht und wie man es im HTML findet.
Zu einfach, um noch schlampiger zu werden
Und natürlich geht die Lesbarkeit tendenziell mit der Wartbarkeit einher. Wenn Sie die Dinge einfach direkt erledigen, indem Sie alles in Skript-Tags ablegen, in denen sich der relevante HTML-Code befindet, wird es für die Benutzer einfacher, das Skript einfach auszuschneiden und in den HTML-Code einer anderen Seite einzufügen, an der sie gerade arbeiten Sie wollen ähnliche Funktionen, was bedeutet, dass Sie jetzt eine Sache haben, die höchstwahrscheinlich irgendwann zu zwei ärgerlich ähnlichen, aber nicht zu 100% ähnlichen Dingen wird, deren Verhalten im Laufe der Zeit problematisch werden kann, indem sie sich den Erwartungen widersetzen und die Hinzufügung einer sinnloseren Verzweigung erfordern, um Ausnahmen zu behandeln, die man benötigt ein anderer tat es nicht.
Das Rigging-Verhalten dieser HTML-Hooks fördert also die intelligente Wiederverwendung von Code. Wenn Sie das Verhalten für eine alternative Implementierung verzweigen müssen, rufen Sie einfach dieselbe Funktion auf und behandeln sie dort mit einer HTML-Hierarchie oder einem Daten-Att, der ein Alt-Verhalten auslöst. Es ist ein One-Stop-Shopping für alle, die verstehen möchten, wie UI-Elemente eines bestimmten Typs funktionieren, und diese verächtlich faulen Cut & Paste-Typen werden das Richtige / Wartungsfreundlichere tun, nur weil es am einfachsten ist Jetzt tun und das ist der beste Weg, um Wartbarkeit zu erreichen. Machen Sie es zum einfachsten "duh", selbst für jemanden, dem es egal ist, ob es sich um Panik oder Apathie handelt.
Aber was ist mit 2014?
Es mag ein legitimer Punkt sein, dass in modernen Anwendungen mit nur einer Seite einige dieser klebrigen Dinge vielleicht nicht so dogmatisch wie bisher festgehalten werden sollten, aber glauben Sie mir, wenn ich sage, ich glaube nicht, dass ich der einzige bin, der das tut wurde darauf verkauft, weil es letztendlich die Arbeit erleichtert. Ich bin faul (ich hoffe) meistens gut. Ich mag es, wenn ich nur Dinge an einem Ort ändern muss, um Änderungen in einer App zu erhalten, wenn ich nur an einem Ort suchen muss, um herauszufinden, was der Fehler ist, und wenn ich es leicht habe zu verstehen, was zum Teufel ist weiter und wie man diesen Code am besten wiederverwendet, um etwas sehr Ähnliches zu tun.
Es ist gut, eine DB oder eine Datenschicht aufzuteilen. Es ist letztendlich ein Grund, warum ich nicht einfach so viel Zeit gespart habe, als würde ich mir am Abend zuvor alle fünf Minuten Zeit nehmen, um die Wäsche zu waschen, anstatt am nächsten Morgen 10 Minuten damit zu verbringen, deine Boxer zu frieren und paranoide Geruchskontrollen durchzuführen.
Für mich waren es diese egoistischen Motivationen, die immer der Hauptgrund dafür waren, dass ich nicht nur an unauffälligen JS festhalte, sondern auch an der Trennung von Stil / Verhalten / Inhalten, so weit wie möglich, selbst wenn WHAT-freaking-WG ihr verdammtstes tut Verwirren Sie diese Bedenken auf verständlicherweise großartige und coole / handliche Weise.
Jetzt, da alle SPAs durchführen und es fast albern ist, das Geschäft davon zu überzeugen, dass wir uns um Leute kümmern sollten, die ohne JS arbeiten (Barrierefreiheit kann jetzt angeblich mit JS-generierten Inhalten behandelt werden), scheint es der nächsten Generation von JS-Entwicklern weniger wichtig zu sein Aber IMO, es gibt immer noch einen Gewinn und es ist hauptsächlich für Sie, den Entwickler, der dieses Zeug schreibt und pflegt. Und wirklich, dieser Gewinn hätte immer der am meisten unterstrichene Punkt sein sollen, war es aber nie aus irgendeinem Grund, weil er letztendlich Ihnen und auch dem Produkt durch einen glücklichen Zufall zugute kommt, da er einfacher zu optimieren / zu modifizieren / zu debuggen ist.
Ist es jemals in Ordnung?
Nun ja, ich denke. In einer Einweg-Wegwerf-App für einen Wettbewerb oder so. Aber ich würde es trotzdem tun, nur weil ich es mir angewöhnt habe und es eigentlich nicht schwieriger ist.