YUIConf 2011 Early Bird Reģistrācija tagad ir atvērta

Septembris 30, 2011 at 9:31 pm by Jenny Donnelly | In attīstību , kas Yui Notikumi Pārsūtīt | 4 Komentāri

Agrīnās putns reģistrācija 2011.gada YUIConf tagad atvērta Eventbrite! Šogad pasākums notiks 02-04 novembris par Yahoo! 's Great America pilsētiņas. Mēs esam satraukti, lai sniegtu jums pilnīgu dienu praktiskas apmācības semināru (Mon), kam seko divu pilnu dienu tech runā par Yui (Thu / piektdiena). Reģistrācija konferencei maksā 75 $ šogad, ar agrīnās putnu likmi 50 $. Reģistrācija attiecībā uz semināriem, būs atsevišķi no konferences un informācija ir Drīzumā.

Mēs esam aizņemti odere veido lielu tēmām, tai skaitā:

  • Yui sastāvdaļas dziļi niršanas, tostarp Dial un kalendārs
  • Yui mobilo vidē
  • Testēšana ar Yui
  • Reālās pasaules migrācijas stāsti
  • un daudz, daudz vairāk!

Kā vienmēr, konferenču sesijas būs video lentu un pieejams Yui Theater un mūsu YouTube kanāls visiem baudīt.

Ceru redzēt jūs tur!

(IMPORTANT! Iekšējās Yahoos lūdzu reģistrēties Yahoo! Darbinieku biļetes un norādiet savu darba e-pasta adresi.)

Dalīties un paplašināt: Grāmatzīme ar RSS barotne | Digg tā! | reddit!

3.4.1 Yui tagad dzīvot

Septembris 27, 2011 at 2:37 pm by Allen Rabinoviča | In Attīstības Pārsūtīt | 8 Komentāri YUI 3.4.1

Yui 3.4.1 īsā cikla presei tagad ir pieejams CDN un lejupielādei , vairāk nekā nedēļu sākumā! Šeit ir daži uzsver šai atbrīvot:

Jūs varat arī pārbaudīt kopsavilkumu par visām izmaiņām, kas konstatēti to sastāvā vēstures failiem 3.4.1 Yui , kā arī pilnu kandidātu sarakstu; biļešu apspriesta 3.4.1 Yui izstrādes . Kā vienmēr, mēs būtu pateicīgi, ka jūs iesniegt jebkādus ierosinājumus Jūs varētu būt vai defektus jūs varētu atklāt mūsu biļešu datu bāzē. Atsauksmes par 3.4.1 Yui var ierakstīt 3 Yui biļešu datu bāzē .

Mēs arī gribētu paziņot, ka nākamajā atbrīvot Yui un DataType.Date un DataType.Number un DataType.XML tiks novecojis labu Y.Date un Y.Number un Y.XML, attiecīgi. Atgriezenisko savietojamību būs jāsaglabā vienu atbrīvošanu, lai dotu ikvienam iespēju pārslēgties.

Oh, un vēl viena lieta: mēs esam uz sava ceļa un pasākumus pārejai uz Yui Teātra saturu YouTube . Par starteri, izbraukšana Douglas Crockford s lekciju sērijas "Crockford uz JavaScript" - pilns ar subtitriem!

Dalīties un paplašināt: Grāmatzīme ar RSS barotne | Digg tā! | reddit!

Balso par Yui īpaši Open Source balvas finālā

26 Sep 2011 pie 9:21 pm by Jenny Donnelly | In almanahs | 1 Komentārs

Paldies visiem, kas izvirza Yui par Packt Publishing Open Source balvām. Balso tagad Yui kā jūsu mīļākie JavaScript bibliotēkā!

Dalīties un paplašināt: Grāmatzīme ar RSS barotne | Digg tā! | reddit!

Yui 3.4.1 PR1 Tagad Pieejams CDN

22 Sep 2011 pie 1:35 pm by Jenny Donnelly | In Development Pārsūtīt | 1 Komentārs

3.4.1 Yui PR1 tagad ir pieejams Kopienas pārbaudes un atsauksmes. Tā ir pieejama Yahoo! CDN pie http://yui.yahooapis.com/3.4.1pr1/build/yui/yui-min.js~~pobj , un jūs varat redzēt izmaiņas dodas uz 3.4.1 no saraksta pārbaudīto biļešu kas par atbrīvošanu .

3.4.1 presei būs mazāks bug-fix presei ar saīsinātu attīstības ciklu, kas notiks go-live pa 5 oktobrim. Lūdzu failu bugs un regresiju biļetes datubāzē YUILibrary.com ko rītā Pirmdiena, Septembris 26. lai mēs varētu pārliecināties visi kritiskie jautājumi tiek risināti pirms vispārējai izplatīšanai. Ja nekādi steidzami jautājumi tiek ziņots, mēs atbrīvot 3.4.1 jau septembrī 27.

Dalīties un paplašināt: Grāmatzīme ar RSS barotne | Digg tā! | reddit!

Yui: Darba laiks Ce 15 Sep

Septembris 12, 2011 plkst 9:58 pm by Luke Smith | In attīstību , kas Darba laiks Pārsūtīt | 2 Komentāri

Satyam s MakeNode pagarināšana

Ja jūs nezināt Satyam , Jums ir jābūt jaunam, lai Yui. Viņš ir bijis balsts Yui kopienas, jo pirmajās dienās 2 Yui. Viņa raksti par YUIBlog ir daži no visbiežāk lasīt, un atsaucās uz avotiem "kā īsti izmantot bibliotēkas" stila saturu. Ja redzat, ka Satyam uzrakstīju to, vai ir vērts lasīt, un, visticamāk, atkārtoti lasīt un grāmatzīme.

Jūlijā, viņš ievietojis liels raksts par MakeNode logrīku paplašināšanu, kuras mērķis ir vienkāršot dažas kopējas modeļus izmanto, būvējot Widgets, un padarīt to vieglāk izvairīties no kopējās missteps. Modulis kopš tā laika ir pievienota galerijā un tikai agrāk šodien, viņš ievietojis atjauninājumu savai sākotnējo rakstu.

Tas, ko mēs spēsim runāt par. Pazīmes, vēsture, un argumentācija. Ja jūs esat, izmantojot detaļas infrastruktūru, un jo īpaši Y.Widget , jūs esat iespējams radušās vismaz dažus šķēršļus Satyam izklāstīti, lai risinātu ar MakeNode . Šī būs labākā prakse svētki, tā lai jūsu notepad, un jūsu pašu pieredze, lai dalītos.

Laiks un detaļas

Mēs būsim tiešsaistē ceturtdien no 10 no rīta līdz 11am PDT.

Pievienoties sapulces

Ierakstīšana

Ieraksts ir pieejams YUILibrary YouTube kanālā .

Dalīties un paplašināt: Grāmatzīme ar RSS barotne | Digg tā! | reddit!

Iesniegt Talk 2011 YUIConf

Septembris 12, 2011 at 3:48 pm by Jenny Donnelly | In attīstību , kas Yui Notikumi Pārsūtīt | Nav komentāru

Dižoties kodu jūs esat strādājis uz vai akciju kaut ko esat iemācījušies, strādājot ar Yui! Iesniegt savu priekšlikumu Yui notikumi at) yahoo-inc.com līdz piektdienai, September 23, 2011. Noteikti norādiet:

  • Virsraksts
  • Apraksts
  • Paredzētā auditorija
  • Tavs vārds
  • Īss bio

YUIConf 2011 notiks 3 novembris un 4 par Yahoo! 's Santa Clara, CA Campus. Prezentācija jāilgst apmēram 45 minūtes. Mums būs līdz pat 15 minūtēm pēc prezentācijas par Q & A Post jebkādu jautājumus komentāros, vai rakstiet mums tieši Yui notikumi (pie) lauķis-inc.com.

Dalīties un paplašināt: Grāmatzīme ar RSS barotne | Digg tā! | reddit!

Atjaunināts: "MakeNode" logrīku pagarināšana

Septembris 12, 2011 at 3:18 pm by Satyam | In attīstību , kas Yui 3 Galerija Pārsūtīt | 8 Komentāri

Redaktora piezīme: Šis raksts tika sākotnēji publicēts šogad . Kopš tā laika, MakeNode modulis ir publicēts ar Yui galerijā un saņēma dažus uzlabojumus. Šodienas raksts atspoguļo visas jaunākās izmaiņas MakeNode.

Manā iepriekšējā rakstā par 3 Yui Pieteikuma Recipe , es parādīja veidu, kā izmantot Y.substitute kā ļoti pamata veidni procesoru. Ideja bija dzīvi no turienes, ar ieteikumiem no attiecīgās # Yui IRC kanālā ļaudīm, un es to logrīku paplašinājums, kas ir pieejama Yui galerijā, ko sauc MakeNode . MakeNode nav vispārējs veidni procesors, un tas nav domāts kā viens. No otras puses, tā ir cieši integrēta ar Yui logrīku dibināšanas klasē, tostarp klases nosaukums un notikumu palīgiem un internacionalizācijas. Šajā rakstā es būs veikt Spinner piemēru un mainīt to ievērot pamatnostādnes no manu iepriekšējo rakstu un izmantot MakeNode. MakeNode ir pieejama kā galerijā sastāvdaļu, kā arī modificētu Spinner detaļas un piemēru , kas tiks izmantoti šo rakstu .

Paplašinot savu sastāvdaļu

Lai ielādētu MakeNode Jums nepieciešams iekļaut moduli savā YUI().use() paziņojums ar vārda 'gallery-makenode' vai, ja definējot moduli caur YUI.add() , uzskaitīt to kā requires masīvs. Tad, lai paplašinātu savu widget, varat uzskaitīt to trešo argumentu, lai Y.Base.create() , šādi:

  Y.Spinner = Y.Base.create (
      "Spinner",
      Y.Widget,
      [Y.MakeNode],
      {
         / / Piemērs locekļi ...
      },
      {
          / / Statiskie locekļi
      }
 ); 

Jūs varat pievienot MakeNode pa jebkuru skaitu piemērotu paplašinājumus widget, piemēram WidgetParent un WidgetChild un WidgetStdMode utt MakeNode pievienoti divi aizsargājamās metodes, ko izmanto attīstītājs un _makeNode un _locateNodes, un tas būs redzams no vairākiem statiskiem objektiem, ja atrasts .

Visas šī pagarinājuma locekļi ir vai nu aizsargātas vai privāta, jo tie ir domāti, kas jāizmanto par detaļas attīstītājs, un nevis ar īstenotāju, izmantojot šīs sastāvdaļas, un kas nedrīkst būt bothered ar tiem. Neaizmirstiet pārbaudīt "Rādīt aizsargāts" opciju, skatot API docs .

Definējot veidni

Pirmā lieta, jūs parasti darīt, ir noteikt veidni jūsu sastāvdaļu. Uz Spinner, mūsu veidne būs:

  _TEMPLATE: [
     "<input Type="text" title="{s input}" class="{c input}">",
     "<button Type="button" title="{s up}" class="{c up}"> </ poga> ',
     "<button Type="button" title="{s down}" class="{c down}"> </ poga> '
 ]. Pievienoties ("\ n"), 

Noklusējuma veidne parasti tiks nosaukts _TEMPLATE un paziņoja gar citiem statiskiem īpašību klases, piemēram, ATTRS . MakeNode izmantos šo veidni, ja neviens cits nav skaidri noteikts. Veidne ir izgatavota no tīra HTML plus vietturiem ieliktām cirtaini iekavās sērija, katra izgatavota no viena rakstura panta apstrādes kodu), un kam seko viena vai vairākas argumentiem. Vietturi un ko tie ražo, ir:

  • {@ attributeName} konfigurācija atribūta vērtība

  • {p propertyName} gadījums īpašuma vērtība

  • {m methodName arg1 arg2 ….} atgriešanās vērtību konkrētā metode. Apstrādes kodu seko metodes vārds un jebkuru argumentu atdalīti ar tukšumiem skaitu.

  • {c classNameKey} CSS klases nosaukums, kas iegūti no _CLASS_NAMES statiskā īpašumu (sk. The _CLASS_NAMES īpašumu tālāk)

  • {s key} virknes no strings atribūtu, izmantojot key , kā sub-atribūtu.

  • {? condition valueIfTrue valueIfFalse } līdzīgi ?: operators JavaScript, novērtē uz valueIfTrue ja nosacījums ir truish, valueIfFalse citādi.

  • {1 condition valueIfOne valueIfMore } lieto, lai ražotu vienskaitļa / daudzskaitļa vārdus, balstoties uz vērtību stāvoklī.

  • {} jebkura cita vērtība tiks apstrādāti tāpat kā Y.substitute dara.

Piemēram, {@ value} tulkos uz this.get('value') , bet {p value} pārveido uz this['value'] .

Ja vietturi ir argumenti, piemēram {m} , {?} un {1} , stīgas ir ielikts pēdiņās. Cipari, booleans un null (viss nekotētas) tiks parsēt to pareizu datu tipu. Vietturi var ligzdot. {?} un {1} vietturi parasti ietver ligzdotu vietturi stāvokli un ļoti iespējams, to vērtībām, piemēram:

  {P Daudzums} {1 {p Daudzums} "vienību" "vienības"} 

Ja īpašums qty ir 1, tā novērtēs to "1 unit" , 2 vai vairāk tā atgriezīsies "2 units" un tā tālāk. Komplicētāks versija nodarbojas ar nulli būtu:

  {?  {P Daudzums} "{p Daudzums} {1 {p Daudzums}" Ražotne "" Vienības "}" "nav"} 

Ievērojiet, ka apstrādes iekšējās vietturus, ja virkne rezultāts, jāpievieno tās pašas kopas pēdiņām.

Lai iekļautu dubultu quote iekšpusē kotēto string, izmantojiet \\" , dubultā reversā slīpsvītra tiek prasīts, jo aktivizētam interpretēs viens un izmet tos, pirms tā kļūst MakeNode Tikai pēdiņas ir atļauti;. MakeNode neizmanto eval() tā Sadalīšana ir ierobežota, bet droša Jebkas, bet numuri,. null , booleans un dubultā kotētās virknes tiks ignorētas.

{?} vietturis ir arī ērts lietošanā ar rūtiņas un radio pogas. To var izmantot, lai ražotu virkni "checked" atkarībā no patiesības vērtības apstrādes instrukciju kods, kas seko. Tādējādi <input type="checkbox" {? {m getLength} "checked" ""}/> <input type="checkbox" {? {m getLength} "checked" ""}/> ražos ievērojamu lauciņu, ja getLength metode atgriež neko, bet nulle.

Par {c} vietturī, mums ir _CLASS_NAMES īpašums definēts.

Turpmāki vietturi var pievienot MakeNode pievienojot tos _templateHandlers hash.

_CLASS_NAMES Īpašums

Kopā ar ATTRS un _TEMPLATE statisko īpašību, mēs varam definēt _CLASS_NAMES statisko īpašumu, kas norāda uz masīva stīgas. Katra no šīm virknēm tiks izmantoti, lai radītu klases nosaukums. Tādējādi _CLASS_NAMES: ['input'] būs producēt klases nosaukums "yui3-spinner-input" . Šie classNames tiek uzglabāti gadījumam īpašuma this._classNames . {c input} vietturis Veidnē norādītais iepriekš, tiks aizstāts ar "yui3-spinner-input" . Es aicinu šos striķīšus uzskaitītās _CLASS_NAMES , piemēram, 'input' , programmas "klases nosaukums atslēgas", jo tās var izmantot kā atslēgu atsaukties uz faktisko klases nosaukums vai elementi, kuros ir šīs classNames, kā mēs redzēsim vēlāk.

Jūs varat izmantot _CLASS_NAMES īpašumu, lai radītu neierobežotu skaitu classNames, vai jūs tos izmantot veidnes vai ne. Jūs varat sasniegt šos papildu classNames no iekšienes this._classNames . Klases nosaukums tiek veidots, izmantojot yui3 prefiksu seko vērtības NAME statisko īpašuma pagriezās mazie, un tad string dota _CLASS_NAMES (šis pēdējais nebūs jāapgriež mazie burti), visi ar defisi atdalīti. _classNames hash būs arī jāietver classNames par boundingBox un contentBox un pirmā zem "boundingBox" taustiņu, un 2. zem "content" taustiņu. Widget Priekšlikums uzliek boundingBox ar classNames iegūti no vērtībām NAME īpašuma katras attiecīgās mantojuma ķēdē klasēs, sākot ar yui3-widget . MakeNode veikali stāšanās this._classNames tikai top visvairāk klases nosaukums uz boundingBox .

Ja WidgetStdMod modulis ir ievietots, MakeNode arī radīs ieraksti savu HEADER un BODY un FOOTER sekcijas ar tām pašām atslēgām, kas ir arī konstantes definētas šajā pašā modulī.

Ja komponents ir vairāki līmeņi attālumā no widget, piemēram SuperSpecialSpinner pārmantot no SuperSpinner kas manto no Spinner kura manto no Widget, un ja kāds no tiem vai visi ir _CLASS_NAMES īpašības definētas, MakeNode ražos classNames viņiem visiem un saglabāt this._classNames . Jums nav nepieciešams iekļaut katrā līmenī nosaukumi jau deklarēts iepriekšējos līmeņos. Patiesībā, tas ir labāk, ka jums nav, jo classNames ražoti katrā līmenī izmantos vērtību NAME mantas šajā līmenī. Tādējādi, jo SuperSpecialSpinner , {c input} joprojām izraisīs "yui3-spinner-input" , nevis "yui3-superspecialspinner-input" un tā tas būs saglabāt savu CSS failu vēl ir derīga.

{S} vietturis

Widget ir strings konfigurācijas noteikts atribūts, taču tā netiek inicializēts ar jebkuru vērtību. Šis raksturlielums ir domāts turēt virknes, kas ir redzams līdz vai, izmantojot ekrāna lasītājus, lasīt) lietotājam. Ir svarīgi, ka jūs nekad arī redzamus stīgas tieši veidnē. Tas nav prasība MakeNode - tā nekad nav bijusi laba ideja vispār. Visi virknes, kas varētu apskatīt vai izlasīt lietotājam vienmēr novietot strings atribūtu. strings raksturlielums satur hash, kur katrs indivīds teksts atrodas tās atslēgas. Spinner elements ir šādas virknes, kuru jūs varat redzēt, ko izmanto veidni iepriekš.

  stīgas: {
     vērtība: {
         ievade: "Nospiediet bultiņas augšup / lejup taustiņus nelielas soli, page up / down par lielāko pieaugumu."
         līdz: "Pieaugums",
         nosaka: "samazināšanās"
     }
 }, 

Labākā daļa no darot tas, ka jūsu komponents var būt lokalizēti, lai citās valodās ir ļoti viegli izstrādātājiem, izmantojot savu sastāvdaļu. Veidojot gadījums Spinner, jūs varētu darīt:

  var mySpinner = jauns Spinner ({virknes: Y.Intl.get ("zirneklis")}); 

Nosakot konfigurācijas atribūtu strings šādā veidā aizstāj noklusējuma strings vērtības, ar tiem no valodu resursu failu, izmantojot valodu iepriekš definēto. {s} vietturis piekļūst virknes glabājas strings atribūtu, nu noklusējuma tie vai tās tulkotās tiem, ja kas. {s xxxx} vietturis ir gandrīz kā lietojot {@ strings.xxxx} Izņēmums ir lokalizētas rezerves stīgas var būt vietturus, kas tiks tālāk pārstrādātas. Tas ir svarīgi, lai tulkojumu jo sintakses lai atšķiras no valodas uz valodu, un tas ļauj rephrasing tekstu, tostarp tā vietturi, lai atbilstu jebkuru valodu. Virknes var piekļūt, izmantojot {@ strings.xxxx.yyyy.zzzz} , kas ļaus piekļūt stīgas ligzdotas dziļāk leju un novērsīs turpmāku substitūcijas. Cirtaini bikšturi var iekļaut tekstu, izmantojot {LBRACE} un {RBRACE} kā vietturi.

Izmantojot _makeNode jo renderUI

Mēs izmantot veidni, lai izveidotu atzīmes par mūsu sastāvdaļu. Lai to izdarītu, mēs varam zvanīt MakeNode s _makeNode metodi, šādi:

  renderUI: funkcija () {
     . this.get ("contentBox") pievienošana (this._makeNode ());
 }, 

Tas būs aizpildiet contentBox mūsu widget ar atzīmes no apstrādes veidni. _makeNode metode atgriež gadījums Y.Node ko var pievieno vai ievieto nekur vai vienkārši tur turpmākai lietošanai. Tas neatgriežas virkni, tas rada Node instancē. (Ja jums ir nepieciešama virkne, nevis mezgla, jūs varat izmantot _substitute metodi, kas paredz, ka jums iet ar veidni.)

_makeNode metode ņem divas izvēles argumenti: atsauce uz veidnes un objektu aizpildīt vietturi, kā Y.substitute dara. Mūsu vienkāršu Spinner piemērs ir viena veidne visai widget, bet citas preces varētu prasīt bitiem un gabali kas izgatavoti no vairākiem veidnes. Tādā gadījumā jums būtu parasti sauc _makeNode bez lielākajai daļai argumentiem un sauc to vēlreiz ar dažādām veidnēm, lai aizpildītu papildu daļām. Piemērs ir šī renderUI metodi:

  renderUI: funkcija () {
     var fieldset = this._makeNode ();
     this.each (funkcija (vienība) {
         fieldset.appendChild (this._makeNode (MultipleTemplates.RADIO_TEMPLATE, postenis));
     }, Norāda);
     this.get ("contentBox") pievienošana (fieldset).;
 } 

Pirmais zvans lai _makeNode atgriež Node gadījumu noglabāts mainīgajā fieldset . Paraugu sastāvdaļa ir arī paplašināta ar Y.ArrayList tik RADIO_TEMPLATE tiks piepildīta ar vērtībām ņemti no posteņiem, kas glabājas masīvs sarakstā un no tām izrietošajās mezgliem pievienotajā fieldset pirms tā beidzot pievienota contentBox . Īpašos vietturi, piemēram, {@} vai {p} joprojām attiecas uz atribūtu vai īpašības galvenajā objektā. Ligzdotie vienumi tiks apstrādāti tāpat kā Y.substitute būtu.

_locateNodes Metode

MakeNode sniedz arī _locateNodes metodi, kas mēģinās atrast visus elementus ar classNames deklarētas _CLASS_NAMES . Lai atrastu konkrētus elementus var padot neierobežotu skaitu klases nosaukums atslēgu, citādi, _locateNodes mēģina tos visus. Katram elementam atrasts katras klases nosaukums, _locateNodes ražos privātu instancē lietas, izmantojot pasvītrojuma prefiksu seko atslēgas vārda un "Node" piedēkļa. Tādējādi, mūsu Spinner Piemēram, _locateNodes radīs īpašības _inputNode , kas _upNode un _downNode . Ja vairāki elementi ir vienāda klases nosaukums, _locateNodes atgriezīsies atsauci uz 1. no tiem. Ja elements nav atrasts neviens mainīgais tiks izveidots.

Uz Spinner komponenta mēs izmantojam _locateNodes pēc veidojot atzīmes:

  renderUI: funkcija () {
     this.get (CBX) pievienot (this._makeNode ()).;
     this._locateNodes ();
 }, 

_EVENTS Statiskā īpašums

Vēl vienu īpašumu var definēt gar līniju _TEMPLATE un _CLASS_NAMES un kas ir _EVENTS . _EVENTS saturēs hash, kas sastāv no klases nosaukumu taustiņiem, katra satur hash notikumu veidiem un metodēm, kā rīkoties tiem. Tas ir labāk izskaidrot ar piemēru:

  _EVENTS: {
     ieeja: "pārmaiņas", / / ​​zvani this._afterInputChange
     ietverošo robežu taisnstūri: [
         {
             tips: "atslēga",
             fn: "Darbības _onDirectionKey ', / / ​​zvani this._onDirectionKey
             args: ((Y.UA.opera) "nosaka:"!? "prese:") + "38, 40, 33, 34"
         },
         "Mousedown '/ / zvani this._afterBoundingBoxMousedown
     ],
     dokuments: "mouseup ', / / ​​zvani this._afterDocumentMouseup,
     Y: "broadcastingObject: someEvent" / / zvani tas ["_afterYBroadcastingObject: someEvent"]
 }, 

_EVENTS ir objekts (hash) ar jebkuru skaitu ierakstiem. To īpašības vārdi, ka ir, tad hash atslēgas, noteikt mezglus, kuru notikumi mēs klausīties. Tie ir tie paši klases nosaukums atslēgas definēti _CLASS_NAMES . Ir vairāki papildu īpašas taustiņi:

  • "boundingBox" , attiecas uz izgriezums pati.

  • "document" attiecas uz dokumentu, kurā šo widget.

  • "THIS" attiecas uz widget pati

  • "Y" norāda uz Y instancē.

Ja logrīku ir pagarināta ar WidgetStdMod kā arī, atslēgas HEADER , BODY un FOOTER attieksies uz šīm iedaļām, jo tie būs pieejami _classNames hash. JavaScript nav nepieciešams atslēgas, kas kotētas ja tie ir derīgi identifikatori tik neviens no iepriekš nepieciešams noteikts.

_EVENTS īpašums tiek apstrādāti pēc renderUI , bindUI un syncUI metodes ir sauc tā widget ir plānots jau ievietota ietvaros dokumenta ķermenī, pretējā gadījumā "document" identifikators nebūs.

Katram no šiem elementiem ir notikums identifikators vai par notikumu identifikatoru masīvs. Notikums var noteikt pēc notikuma veida ieklausīties vai ar sīkāku informāciju priekšmetu. Pēc noklusējuma, MakeNode izmantos kā klausītājs metode nosaukta, izmantojot "_after" prefiksu seko elementa identifikatoru ar savu pirmo rakstzīmi kapitalizēti seko notikumu tipa tā 1. raksturs kapitalizēti. Kods bloks Iepriekšminētie dati parāda metodes, ko sauc par katru notikumu.

Notikums identifikators var būt arī objekts ar īpašību type un fn un args . type ir obligāts un norāda notikuma veidu tiek uzklausīti. fn īpašums dod nosaukumu metodi, kas klausās, ja tādējādi novēršot automātiska vārda piešķiršanu. _EVENTS ir statisks īpašums, tai nevar piekļūt this tādēļ nevar veikt faktisko atsauci uz metodi, tikai tās nosaukumu. args argumentu var izmantot, lai iet citus argumentus zvanītājam, piemēram, ar key notikumu, kas prasa atslēgas specifikāciju.

MakeNode izmantos Node.delegate lai klausītos notikumu elementiem ietvaros boundingBox , bet tas izmantos Node.after lai klausītos notikumiem no boundingBox un dokumenta struktūra. Tā izmantos this.after lai klausītos notikumiem saskaņā ar THIS atslēgā un Y.after klausītājiem uzskaitīti zem Y taustiņu. Visi notikumi tiek uzklausīti, izmantojot pēc notikumu klausītāju, jo tie ir domāti, lai widget reaģēt uz notikumiem, nevis filtrēt uzvedību objektam ugunsgrēki tos tik nekādā gadījumā šie notikumi var novērst vai pārtraukt. (Piezīme: klausoties key notikumu visiem Nested elementu strādā tikai ar versiju 3.4.0pr1 un vairāk, jo delegācija no key notikuma nebija pieejama pirms Visas citas funkcijas strādā ar iepriekšējām versijām, kā arī.).

Šā _EVENTS deklarācijas ir kumulatīvi, kad sastāvdaļas mantot viena no otras. Katrs mantojuma ķēdē klasei būs savs _EVENTS deklarāciju apstrādā atsevišķi.

_ATTRS_2_UI Statiskā īpašums

Notikumi iet abos virzienos, no UI komponentam un no elementa uz UI. 1. tiek apstrādāti ar _EVENTS īpašums. Tad ir notikumi, katliem ar atribūtu vērtības izmaiņām, ko nepieciešams atspoguļot lietotāja interfeisu. Kā es minēts iepriekšējā pantā, ja pastāv jebkādas sekundārās sekas izdarīt izmaiņas konfigurācijas atribūts, tie ir jāapstrādā izmaiņu notikumu klausītāju, nevis izvēles setter metodi ar atribūtu, kas būtu tikai nodarboties ar normalizētu vērtību noteikšanas. UI ir jāatspoguļo valsts no konfigurācijas atribūtiem, vispirms syncUI , kad tiek inicializēts un pēc tam par katru atribūtu izmaiņu gadījumā. Attiecībā uz pēdējo, mums ir nepieciešams pievienot notikumu klausītāju, ko mēs parasti darīt bindUI . Widget jau nodrošina mehānismu, lai tik vienkārši, ko es aprakstīto novērojumu sniegšanai iepriekšējā rakstā.

Widget izmanto instanču īpašuma _UI_ATTRS kas satur objektu ar divām papildu īpašību, SYNC un BIND . Katrs no tiem ir masīvs uzskaitot vārdus konfigurācijas atribūtus sākotnēji synched un tad klausījās, lai saglabātu UI, kas atspoguļo pašreizējās vērtības. Widget sagaida katru no šiem ierakstiem, ir metode, kas saistīta ar to, kas tā nosaukta pēc atribūta nosaukuma prefiksu _uiSet ar pirmo rakstzīmi no atribūta vārdu pārvērš par lielajiem burtiem, lai būtu metodi nosaukumu pareizu kamieļu gadījumā. Tādējādi, ja "value" ir iekļautas nevienā no _UI_ATTRS masīvu (jebkurā SYNC vai BIND ), logrīku varētu gaidīt, lai atrastu _uiSetValue metodi. Šī metode saņems divus argumentus, value tiek noteiktas un src izmaiņu. Tas ir kods, lai mūsu Spinner _uiSetValue metodi:

  _uiSetValue: funkcija (vērtība, src) {
     ja (SRC === UI) {
         atgriezties;
     }
     this._inputNode.set (VĒRTĪBA, this.get (Formatter) (vērtība));
 }, 

Visi lielie identifikatori redzat šo gabalu kodu atbilst stīgu konstanšu deklarēta citur, lai Yui kompresors darīt savu darbu labāk. Metode, galvenokārt, nosaka value HTML atribūts <input> lodziņā pret jauno vērtību kopumu, pēc formatēta. Ar textbox lūgums sniegt _locateNodes . src arguments sākotnēji pārbaudīts, lai redzētu, kas uz virknes vērtību 'ui' . Ja tas tā ir, nekādi pasākumi tiks veikti. Tas ir lai novērstu nemitīga atkārtošana. Ja lietotājs ievada kaut ievades lodziņā, tā vērtība varētu iedziļināties value konfigurācijas atribūts, kas tam varētu atlaist valueChange notikumu, kas varētu saņemt _uiSetValue sauc, kas, ja netiks, tad iet un mainīt vērtību ievades lodziņā, kas varētu izraisīt visu procesu no jauna. Tādējādi, jo _uiSetValue , ja mēs zinām pārmaiņas nāk no UI, mēs neko nedarām un tādējādi izjauktu cilpa. Tomēr tas prasa citu gabals koda citur. Kas klausītājam par DOM gadījumā, kad mēs noteikti konfigurācijas atribūtu, mēs izmantojam trešo neobligāto argumentu, lai noteiktu, piemēram:

  _afterValueChange: funkcija (EV) {
     this.set (VĒRTĪBA, ev.newVal, {src: UI});
 } 

Tas ir atkarīgs no mums, lai nodrošinātu, ka izmaiņas, kas nāk no UI apzīmē šādi, un tad pārbaudiet to pašu karogu, lai izvairītos no cilpas. Vai izmantojat identifikators src nosakot vērtību atribūta, ne source , kas netiks atzīta.

Ar visu to teica, es neesmu vēl runāja par statisko īpašuma _ATTRS_2_UI minēta šīs nomenklatūras pozīcijā. Kā manā iepriekšējā rakstā parāda Komentāri (caur Blunders es veiktajiem viņos), pārliecinoties, ka visi atribūti ietekmē UI ir pareizi uzskaitīti, ir nedaudz netīrs. Jums nekad nevajadzētu inicializēt _UI_ATTRS no nulles, jo logrīku jau uzskaitīti visai daudz atribūtu un tie tiktu zaudēti. Jums saķēdēt jaunu atribūtu nosaukumus pār esošajām, kas ir nedaudz grūti atcerēties, kā to izdarīt labi. Lai padarītu to vienkāršu, MakeNode lasīs no statiskās īpašuma _ATTRS_2_UI un darīt šo konkatenāciju jums. Tas saķēdēt visus šos sarakstus katru klasi mantojuma ķēdē, lai katrā līmenī katrā klasē var apstrādāt savus atribūtus. In Spinner, mums ir:

  _ATTRS_2_UI: {
     BIND: VĒRTĪBA,
     SYNC: VĒRTĪBA
 }, 

MakeNode pieņems gan uz vārdu masīvu vai vienu atribūtu nosaukums, kā tas ir šajā gadījumā.

Jautājums, protams, rodas, kāpēc divi saraksti, viens iesiešanai otru sinhronizēšana? SYNC tiek izmantota pirmo reizi apkārt, pēc renderUI un bindUI metodēm, ja tie pastāv, ir nosaukti, un pirms syncUI bet tie, kas uzskaitīti BIND būs pienākums attiecīgie atribūti vēlākām izmaiņām. Diezgan bieži SYNC masīvā ir mazāk norāžu nekā BIND sarakstā un tas ir tāpēc attiecībā uz komponentu veidne, iespējams, jau ir ļoti pašu noklusējuma vērtība kā konfigurācijas atribūts, un nav nepieciešams darīt sākotnējo Sinhronizē. Tātad, ja noklusējuma vērtība value konfigurācijas atribūts ir tukša virkne un <input> elements veidnē nav value atribūts, tad nav nepieciešams sinhronizēt tos inicializācijas.

Pazīmes, kas uzskaitītas BIND būs savas _uiSet Xxxx metodes sauc jebkādā secībā, kā atribūti var uzstādīt jebkurā secībā. Pazīmes, kas uzskaitītas SYNC sauks vienreiz tādā secībā, kādā tie ir uzskaitīti ar tiem senči pirms viņu mantiniekiem, tādēļ, ja viens ir atkarīgs no citu (ko viņi nedrīkst), lai varētu būt svarīgi.

MakeNode pārbaudīs dublikātu ierakstiem jebkurā no šiem blokiem. Ja kāds parādās, tas nozīmē, ka klase mūsu komponents manto no jau rokturi šo atribūtu un jebkuru jaunu deklarāciju visticamāk pārkāpt _uiSet Xxxx pārkraušanas to. Starp citu, MakeNode arī pārbauda dublikātu ierakstiem _CLASS_NAMES , kas arī var izraisīt konfliktu ar kādu, lai gan ne visi, apstākļi. MakeNode rakstīs ziņu žurnālā jebkuru šādu kļūdu.

_PUBLISH Īpašums

Visbeidzot, _PUBLISH statiskā īpašums tiks uzskaitīti tādi notikumi, kas ir jāpublicē. Tā satur hash izmantojot nosaukumu pasākumu kā tās atslēgas un kā objekts burtiski konfigurācijas atribūtiem kā tās vērtībām. Tā publicēs visus notikumus, kas uzskaitīti jebkāda šāda īpašuma visās mantojuma ķēdē. Pats notikums vārds var tikt publicēts kādā nozarē un kādā klasē pārmanto no tā, kas padarīs konfigurācijas atribūti vēlāk uzņēmumiem ignorēt tos, jo vecajās. Piemēram, jūs varētu vēlēties, lai esošu notikumu raidījums pasaulē. Tāpat kā ar _EVENTS īpašumu, jo _PUBLISH ir statisks īpašums bez piekļuves this , precizējot funkcijas, tas ir metodes nosaukums, kā string, ka jāpievērš uzmanība.

Secinājums

MakeNode nodrošina ļoti vienkāršu veidni procesors, ar funkcionalitāti, kas ir ļoti integrēta ar logrīku fonda klasē. Tā arī nodrošina palīgs metodes, lai radītu classNames izmantot veidnes un izmantot šos vārdus, lai atrastu un attiecas uz izveidoto mezglu. Tā arī nodrošina līdzekļus, lai āķis uz notikumiem rada gan UI un detaļu pati un katru ar metodi. Tā dara visas šīs lietas, cenšoties ievērot mantojuma ķēdē taisni līdz widget un jebkuru klasēm jūs varat definēt līmenī.

Tas neparedz absolūti visas iespējas, bet gan labu klāstu no tiem. Tomēr tas neliedz jums pievienot papildus funkcionalitāti. Jums varētu reti ir uzrakstīt bindUI vai syncUI metodi, ja jūs izmantojat līmi, ko sniedz MakeNode, bet jūs varat darīt, jo MakeNode neizmanto tos.

Kā bonuss tiem, kas bija pacietība izlasīt šo tālu, man ir arī modificēto Anthony Pipkin s Pogas kopums galerijā sastāvdaļu un ir akordeona un TimeSpinner komponentēm, viss pieejamo galerijā .

Satjam Par autors: Daniel Barreiro (ekrāna nosaukums Satyam) ir apmēram uz ilgu laiku. ENIAC bija izslēgts dienu pirms savas dzimšanas, tāpēc viņš neatbildētos ka, bet viņš nav garām daudz kopš. He's had a chance to punch cards, program 6502 chips (remember the Apple II?), own a TRS-80 and see some fantastic pieces of operating equipment in his native Argentina which might have been in museums elsewhere. When globalization opened the doors to the world, his then barely usable English (plus an Electrical Engineering degree) put him on the career path which ended in a 5-year job in the Bay Area back in the days of NCSA Mosaic. Totally intrigued by the funny squiggles a friend of his wrote in his plain text editor, full of <'s and >'s, he ended up learning quite a lot about the world of frontend engineering. It's been a long journey since COBOL and Fortran. Now he lives quite happily semi-retired in the Mediterranean coast close to Barcelona, Spain.

Dalīties un paplašināt: Grāmatzīme ar RSS barotne | Digg tā! | reddit!

Nākamā lapa »
Hosted by Yahoo!

Copyright © 2006-2012 Yahoo! Inc. All rights reserved. Privacy Policy - Terms of Service

Powered by WordPress on Yahoo! Web Hosting .