Cum să-i spui WordPress că jQuery există deja pe pagină pentru a evita duplicatele prin wp_enqueue_scripts

8 mai 2012, 18:01:40
Vizualizări: 269
Voturi: 0

Pentru a reduce numărul de cereri HTTP, combin toate scripturile pe care le folosește tema mea într-un singur fișier .js minificat de fiecare dată când salvăm opțiunile temei.

Unul dintre fișierele incluse în acest .js este biblioteca jQuery.

În loc să includ jQuery ca fișier separat (folosind wp_enqueue_scripts), includ fișierul de bază jQuery din WordPress ca parte a fluxului de ieșire al acestui fișier master .js.

Problema este că, deoarece nu folosesc wp_enqueue_scripts() pentru a încărca jQuery, există posibilitatea să fie inclus de mai multe ori pe pagină prin intermediul unui plugin care nu știe că este deja prezent.

Pot să setez un flag pentru ca WordPress să știe că fișierul există deja pe pagină?

0
Toate răspunsurile la întrebare 3
5

Temele nu ar trebui să se preocupe de minificarea codului. Aceasta este domeniul Plugin-urilor. Temele sunt prezentare, nu funcționale.

Prin încercarea de a adăuga minificarea JS în Temă, de fapt împiedici un Plugin de caching să îndeplinească această funcție și potențial introduci erori (cum ar fi încărcarea duplicată a bibliotecii jQuery).

8 mai 2012 18:06:21
Comentarii

Mai multe teme (inclusiv a mea) au un widget de slider care necesită jQuery pentru a funcționa. În opinia ta, ar trebui ca slide-urile care necesită js să fie întotdeauna separate într-un plugin?

Scott B Scott B
8 mai 2012 19:13:58

Nu văd lucrurile așa. Tema necesită ca jQuery să fie încărcat, așa că în mod corespunzător încarcă jQuery. Toate acestea sunt clar pe partea prezentării. Minimizarea JS este la fel de clar pe partea funcțională a acelei linii. Iar metodele non-standard de încărcare a bibliotecilor de scripturi, pe lângă faptul că sunt funcționale, sunt și o practică care ar trebui descurajată atât de Teme, cât și de Plugin-uri.

Chip Bennett Chip Bennett
8 mai 2012 19:17:15

Ah, atunci înțeleg mai bine punctul tău. Nu ești împotriva faptului ca tema să includă jQuery, ci doar împotriva includerii lui într-un mod "non standard" (combinarea scripturilor șablon într-un singur fișier minimizat) ar trebui lăsată unui plugin pentru că e funcțional. Pot trăi cu asta ca principiu de ghidare, dar cred că ar trebui să existe o modalitate de a adopta cele mai bune practici în designul/dev web (minimizarea cererilor HTTP, minimizarea scripturilor) fără a necesita un plugin.

Scott B Scott B
8 mai 2012 19:38:20

În mod ideal, dacă aș putea încărca toate scripturile mele într-un singur apel wp_enqueue_scripts și să transmit un parametru, astfel încât rezultatul final să fie un singur fișier .js care să includă toate fișierele, asta este ceea ce doresc. Sunt de acord să las minificarea unor optimizatori terți.

Scott B Scott B
8 mai 2012 19:48:02

"ar trebui să existe o modalitate de a adopta cele mai bune practici în designul web/dezvoltare (reducerea cererilor HTTP, minificarea scripturilor) fără a fi nevoie de un plugin" - Ce e în neregulă cu un Plugin? Atât temele cât și plugin-urile folosesc aceeași API a Plugin-urilor pentru a face aceleași lucruri. În acest caz, cea mai bună practică este separarea prezentării de funcționalitate, așadar plasarea minificării într-un plugin este abordarea conformă celor mai bune practici.

Chip Bennett Chip Bennett
8 mai 2012 20:18:01
4

Nu ar trebui să faci asta, nu este o practică bună. Ar trebui să folosești întotdeauna versiunea de jQuery furnizată în pachetul WordPress. Dacă folosești propria versiune de jQuery în fișierul tău, va trebui să o actualizezi manual de fiecare dată când jQuery este actualizat în pachetul WordPress.

Dacă chiar insiști să faci asta, cea mai simplă și mai puțin elegantă soluție la care mă pot gândi este să deregistrezi mai întâi jQuery-ul original, apoi să înregistrezi fișierul tău (minified.js) ca jQuery. Cu siguranță vei întâmpina probleme de incompatibilitate cu plugin-uri mai devreme sau mai târziu.

8 mai 2012 18:08:21
Comentarii

Cred că OP intenționează de fapt să folosească versiunea de jQuery inclusă în nucleu, prin wp_enqueue_script( 'jquery' ); el doar vrea să o încarce într-un mod personalizat care să permită Temă să minimizeze scripturile sale.

Chip Bennett Chip Bennett
8 mai 2012 18:15:56

@ChipBennett Nu chiar, citește al treilea paragraf al întrebării sale. :)

Mateusz Hajdziony Mateusz Hajdziony
8 mai 2012 18:19:30

Scuze, permite-mi să reformulez. :) Cred că OP intenționa să folosească versiunea de jQuery inclusă în nucleu, dar vrea să o încarce într-un mod personalizat. În orice caz, cred că premisa este greșită.

Chip Bennett Chip Bennett
8 mai 2012 18:31:14

@Chip Bennett: Da, așa este. Folosesc versiunea inclusă în nucleu, dar în loc să o includ ca fișier separat, o combin cu celelalte scripturi de care depinde tema mea (slider.js, webfonts.js etc.) într-un singur fișier .js minificat.

Scott B Scott B
8 mai 2012 18:38:29
0

Plugin-ul Dependency Minification îmi face treaba foarte bine, astfel evit să mă ocup manual de minificare și concatenare.

27 oct. 2015 14:27:02