5

Gibt es einen Vorteil für die Verwendung von querySelector() vs jQuery $() in einem userscript? Ich möchte, dass das Skript in allen gängigen Browsern funktioniert, die Benutzercripts unterstützen. Daher bin ich besonders an der Browserkompatibilität interessiert.

Ich begann darüber zu fragen, weil ich honestbleeps' ausgezeichnete Reddit Enhancement Suite enthält als Abhängigkeit jQuery bemerkt, aber meistens bleibt bei querySelector() für Elemente und andere grundlegende JavaScript-Methoden für die DOM-Manipulation auswählen.

Ist es nur eine Frage des Geschmacks oder gibt es einen Grund, jQuery auf ein Minimum zu beschränken?

+2

Ich würde nicht zu viel in diese Mischung in der * Reddit Enhancement Suite * lesen. In jedem großen oder sich entwickelnden Projekt finden Sie eine Mischung aus Code älteren Stils, der (meistens) zusammen mit neueren oder besseren Methoden funktioniert. (Neuere ist aber nicht unbedingt besser.) ... Nur wenige Entwickler oder Teams werden alten Arbeitscode umgestalten, nur um alles konsistent zu machen. –

Antwort

3

Der einzige Grund, querySelector() oder querySelectorAll() zu verwenden, ist, wenn Sie jQuery nicht verwenden. jQuery-Selektoren sind leistungsfähiger und performanter als Browser mit erweiterten CSS-Selektoren.

Das sagte, einschließlich jQuery kann einfache Skripte unnötig komplizieren. Es erfordert Script Injection auf den meisten Browsern - was Sandboxes besiegt, potentielle Konflikte verursacht und Ihr Skript von einem Server eines Drittanbieters abhängig macht.
Here is a cross-browser way to include jQuery that minimizes conflicts. And, if the browser supports local jQuery copies, it doesn't require a third-party server to always be up/fast.

Wenn das Skript einfach und Sie können ohne viel Aufwand jQuery vermeiden, verwenden querySelector(). Ihr Skript funktioniert in allen skriptfähigen Browsern zu 99 Prozent.

Wenn das Skript jQuery trotzdem lädt, verwenden Sie jQuery-Selektoren für maximale Leistung und Konsistenz.

Beachten Sie, dass jQuery für alle außer die grundlegendste DOM-Manipulation in der Regel die Kosten wert ist. Und für Firefox + Greasemonkey oder Chrome + Tampermonkey gibt es fast keine Nachteile bei der Verwendung von jQuery, wenn Sie @require it.

+0

Darüber hinaus verwendet jQuery standardmäßig 'querySelectorAll()', wenn Sie trotzdem einen gültigen CSS-Selektor angeben. – BoltClock

1

querySelectoris not supported in some browser versions, wobei jQuerys $() ist.

+2

Gilt nicht für Fragen von "fettmonster" und "Benutzer". Alle neueren Versionen von scriptfähigen Browsern unterstützen 'querySelector()'. (Zumindest unter den Standard-Anbietern) –