(Traducere liberă a "plugins / Authoring")
Pentru convenabil de lucru cu jQuery, probabil că doriți să scrie propria extensie (plug-in). Acest lucru este foarte bun :) jQuery extensie folosind plugin-uri și tehnici - un instrument puternic pentru rezolvarea multor probleme și mod convenabil de a economisi timp de dezvoltare de abstractizare cele mai comune funcții. Acest articol este destinat să traseze o cale, în mișcare evitați greșelile comune și nu ratați șansa de a scrie propriul plugin.
Noțiuni de bază.
Pentru a scrie o extensie pentru jQuery. aveți nevoie pentru a începe cu o metodă specială jQuery.fn care obiectul este atribuit o proprietate cu numele de funcția realizată noi (myPlugin).
$ Concluzionând în domeniul funcției, ne permitem să utilizeze în mod liber numele scurt obișnuit al obiectului jQuery. fără teama că există un conflict cu alte biblioteci.
Acum. atunci când avem o carapace, putem începe să scrie codul de plugin-ul în sine. Dar, înainte de asta, câteva cuvinte despre context. Domeniul de aplicare plugin funcții (aici conceptul de funcție și plugin-ul este foarte cruce. Nota mea). acest cuvânt cheie se referă la obiectul plugin jQuery. Acest tratament face posibil să se aplice nu numai la obiect (în acest caz jQuery), dar, de asemenea, pentru proprietățile sale, metode. Cu acest cuvânt putem adăuga noi caracteristici.
Acum, când a devenit clar modul de accesare a contextului jQuery-plugin. să scrie cod, care este de fapt ceva de făcut.
Acesta este un simplu plug-in care returnează înălțimea cea mai mare a containerului pe pagină.
Constructing lanturi
În exemplul anterior returnează lungimea cea mai mare container pe pagină. Dar, destul de des, trebuie să continuăm schimbarea obiectului în sine după ce ați urmat pașii de mai sus ea. Acest lucru se face prin intermediul unor lanțuri. Aceasta este frumusetea design-ul bibliotecii jQuery. Așa că lanțul de sprijin a fost disponibil, ar trebui să vă asigurați că plugin returnează acest cuvânt cheie
Deoarece plugin-ul returnează acest cuvânt cheie în vizibilitatea imediată, susține lanțul și jQuery-colectare poate continua să manipuleze metodele jQuery, de exemplu, cum ar fi .css. Deci, dacă pluginul nu returnează o valoare simplă, ar trebui să se întoarcă această funcție înaintea ta. De asemenea, după cum ați ghicit, argumentele transmise pluginul - funcția plug-in transmis domeniul de aplicare. Astfel, în exemplul anterior, șirul „lățime“ devine un argument pentru o funcție de conectare.
Parametrii și setările implicite
Pentru plug-in-uri mai complexe și personalizate, care oferă o varietate de cazuri de utilizare, se recomandă să aibă setările implicite (folosind $ .extend). Astfel, în loc de asteptare plug cu un număr mare de argumente poate provoca un singur argument, care este necesar pentru schimbările obiect. Acest lucru puteți face acest lucru.
În acest exemplu, după apelarea sfaturi plug-in cu opțiunile corespunzătoare suprascrie implicit în „stânga“, iar culoarea rămâne aceeași (a se vedea. Același lucru pentru setările umolchaniiyu)
Aceasta este o modalitate foarte bună de a oferi un plug-in universal, fără a necesita dezvoltator pentru a identifica toate opțiunile posibile.
namespace
diviziune corectă a spațiului numelui dvs. plugin-ul este o parte importantă a dezvoltării. Spațiu de nume se asigură că dvs. plug-in-ul va avea o șansă foarte mică de conflict cu alte plugin-uri sau cod aflat pe aceeași pagină. Namespace face viața mai ușoară ca un plugin dezvoltator, deoarece ajută pentru a putea urmări mai bine metodele, evenimente și date.
metode de plugin
În orice situație, nu este posibil să se aplice plug-in mai mult de un spațiu de nume în interiorul obiectului jQuery.fn obiect.
Se recomandă să nu polueze .fn spațiul de nume $ Pentru a rezolva această situație, trebuie să colecteze toate plug-in metode de obiect literal și apel afară (adică, metodele vor fi apelate din același obiect)
Acest tip de arhitectură plug-in vă permite să îngloba toate metodele din mamă și apel pentru prima linie de transport numele metodei, și apoi introduceți paprametry suplimentare care ar putea cere pentru această metodă. Acest tip de încapsulare și arhitectură este standardul în comunitatea de dezvoltare pe jQuery plug-in-uri, și este folosit numărul nenumărate de plug-in-uri, inclusiv widget-uri jQueryUI.
Mai puțin cunoscută caracteristica bind () metoda. care vă permite să înregistrați ascultătorii eveniment în spațiul de nume nostru. Astfel, putem anula înregistrarea folosind un ascultător UNBIND ().
În acest exemplu, atunci când plugin-ul este inițializat, acesta înregistrează evenimentul de schimbare fereastra ascultătorul sub spațiul de nume „tooltype“. Mai târziu, în cazul în care dezvoltatorul trebuie să distrugă indiciu care avem nevoie pentru a elimina ascultător.
De multe ori dezvoltarea de plug-in-uri poate fi necesar să verificați dacă plug-in este inițializat la un element dat. Folosind datele (metoda), putem ține evidența în mod convenabil de variabile pentru fiecare element. Cu toate acestea, în loc de monitorizare a heap apel de date separate, cu nume diferite, se folosește obiect literal. Este prin spațiul de nume său este de lucru cu variabile.
Utilizarea datelor vă ajută să monitorizați variabile și starea între apelurile la metodele de plug-in. Separarea spațiu de nume într-un aspect, permite accesul ușor la toate proprietățile pluginul de la un obiect.
Rezumat și sfaturi practice
Scrierea -plagina jQuery vă permite să pună în aplicare în cod este caracteristicile cele mai utile. cod reutilizabil puteți economisi timp și de a face de dezvoltare să fie mai eficiente. Ceea ce trebuie să vă amintiți de fiecare dată când scrie un plug-in:
- înfășurați întotdeauna plugin (funcția ($)* тут ваш плагин */>) (JQuery);
- Nu înfășurați acest lucru în paranteze suplimentare
- returnează un obiect acest lucru. pentru a menține capacitatea de a lucra cu lanțuri
- în loc de a trimite un set mare de parametri, este mai bine să treacă ca un argument pentru un obiect literal, care modifică funcționarea plagina.- dvs. nu aglomerează obiect jQuery.fn mai mult de un spațiu în plug-in nume