Ich beginne damit, dass ich gerade etwas über AngularJS lerne und diesen Artikel gelesen habe, der für aufdringliches JavaScript als das Richtige einzutreten scheint:
http://www.ng-newsletter.com/posts/angular-for-the-jquery-developer.html
Mein Verständnis ist, dass unauffälliges JavaScript im Allgemeinen als "das Richtige" angesehen wird (was vielleicht umstritten ist, aber außerhalb des Rahmens meiner Frage liegt). Aber ich habe mich gefragt, ob es eine bestimmte Funktion von AngularJS gibt, bei der Ereignisbindungen über Attribute wie ng-click
? Gibt es eine Möglichkeit, AngularJS zu verwenden und KEINE Inline-Ereignisbindungen zu verwenden?
Als Referenz: Aufdringliches JavaScript bezieht sich im Allgemeinen darauf, dass Ihre JavaScript-Verknüpfungen im HTML selbst enthalten sind. Unauffälliges JavaScript bezieht sich auf die Verwendung von JavaScript oder anderen Mitteln zum programmgesteuerten Anwenden von Codeverhalten auf das DOM anstelle des Klartext-Markups mit Verweisen auf JavaScript.
quelle
Antworten:
Ja.
So funktioniert eckig.
In alten Zeiten (kurz nachdem alle Dinosaurier ausgestorben waren und kurz bevor Smartwatches zu The Next Big Thing wurden) galt unauffälliges JavaScript als The Right Thing. Unauffälliges JavaScript würde mit ihrer Cousine Progressive Enhancement abhängen, und die beiden wurden als das Licht der Welt und das Leuchtfeuer der Güte angekündigt.
Dafür gab es einen Grund. Viele Benutzer verwendeten Browser mit schlechten JavaScript-Engines oder möglicherweise ohne JavaScript-Engines. Oder sie hatten JavaScript deaktiviert. Das Web war in erster Linie für die Übertragung von Hypertext gedacht, und wir sollten unsere Websites für einige nicht unbrauchbar machen, indem wir ihnen JavaScript aufzwingen.
Aus dem gleichen Grund war es sinnvoll, JavaScript aus dem HTML-Code herauszuhalten. HTML sollte rein gehalten werden, dachte man, weil JavaScript etwas war, das Sie später hinzugefügt haben - wenn der Benutzer es erlaubte. Wenn nicht, spiegelte zumindest das HTML-Markup die Semantik dessen wider, was Sie vermitteln wollten.
Dies ist nicht die Philosophie von AngularJS oder die modernsten Richtlinien für die Webentwicklung, da sich die Dinge geändert haben. Wenn wir AngularJS oder ähnliche Frameworks verwenden, verwenden wir das Web, um Anwendungen bereitzustellen , nicht nur Text und Bilder. Webanwendungen sind ohne JavaScript nutzlos, und es macht keinen Sinn, etwas anderes vorzutäuschen. Wir haben also die Fesseln der progressiven Verbesserung abgeworfen, weil (a) wir uns sicher darauf verlassen können, dass alle unsere Benutzer JavaScript aktiviert haben, und (b) es uns nur verlangsamt.
Warum nicht unauffälliges JavaScript, wenn wir keine progressive Verbesserung durchführen? Die Trennung von Anliegen ist ein wunderbares Konzept. Aber es sind sechs von einem oder einem halben Dutzend der anderen: Sie haben entweder HTML mit Verweisen auf JavaScript oder JavaScript mit Verweisen auf HTML (auf jQuery-Weise).
Wenn Sie AngularJS verwenden, werden Sie in Ihrem Code ziemlich bald eine sauberere Trennung von Bedenken feststellen als in anderen Arten der Webentwicklung. Sicher, es gibt Verweise auf JS-Funktionen in Ihrem HTML. Sie können sich jedoch problemlos in HTML bewegen, ohne sich Gedanken über das Brechen von Code machen zu müssen. Ihr JS ist sauber, testbar und basiert nicht auf einem bestimmten DOM. Auf diese Weise können Sie Geschäftslogik besser wiederverwenden UND HTML besser wiederverwenden.
Fazit: Machen Sie sich keine Sorgen. Sie werden sich schnell genug daran gewöhnen. Und widersetzen Sie sich nicht den Dingen, nur weil Ihnen immer gesagt wurde, dass der andere Weg der richtige ist.
Addendum Wenn Sie es das Gefühl , wichtig für Ihre HTML mit dem Standard kompatibel ist, können Sie das verwenden
data-
Präfix auf Winkel Richtlinien: dhdata-ng-click=
unddata-ng-repeat=
und Ihre HTML wird W3C - konform sein. Persönlich mache ich mir darüber nie Sorgen, aber es ist harmlos.quelle