Jump to content
php.lv forumi
  • 0

Kā veidojat javascript aplikācijas


nemec

Question

4 answers to this question

Recommended Posts

  • 0

Es izmantoju pamatā jquery, jqueryui.

Widgetus taisu ar jquery widget factory.

Modeļus un kolekcijas taisu ar Backbone. Interesants ir arī Backbone rountings, bet vēl praktiski neesmu izmantojis kādā projektā.

Izmantoju arī underscore bibliotēku.

Daudz konstantus datus lādēju kā js failus, lai kešotos.

Pamatā parasti izmantoju vienu globālo aplikācijas objektu, kurā definēju visas aplikācijas funkcijas un citu objektus.

Izmantojot Backbone eventus, realizēju signals/slots paternu, lai varētu taisīt many to many loose coupled komponenšu saiknes.

Tas ir tā, piemēram, kaut kur tiek nodetektēts, ka lietotājam ir atnākusi jauna vēstule, šeit izcau globālu signālu:

 

App.trigger('user:newmessages',[n]);

 

uz šo reāģē attiecīgie sloti, kuri var būt un var nebūt. Piemēram header widgets var ielikt slotu un izmainīt jauno vēstuļu skaita skaitli pie ikoniņas. Bet tik pat labi var arī nebūt un viss strādās bez kļūdām. Tāpat var būt arī citi objekti, kas var reaģēt uz šo signālu pilnīgi neatkarīgi.

 

App.on('user:newmessages',function(n){
 $messages.html(n);
});

 

Arī widgetus būvējot parasti netais nekādas callback funkcijas, vai citu ciešas saiknes, bet visur izmantoju eventu modeļus.

 

Testēšana: PHPUnit + Selenium.

Edited by codez
Link to comment
Share on other sites

  • 0

Es izmantoju pamatā jquery, jqueryui.

Widgetus taisu ar jquery widget factory.

Modeļus un kolekcijas taisu ar Backbone. Interesants ir arī Backbone rountings, bet vēl praktiski neesmu izmantojis kādā projektā.

Izmantoju arī underscore bibliotēku.

Daudz konstantus datus lādēju kā js failus, lai kešotos.

Pamatā parasti izmantoju vienu globālo aplikācijas objektu, kurā definēju visas aplikācijas funkcijas un citu objektus.

Izmantojot Backbone eventus, realizēju signals/slots paternu, lai varētu taisīt many to many loose coupled komponenšu saiknes.

Tas ir tā, piemēram, kaut kur tiek nodetektēts, ka lietotājam ir atnākusi jauna vēstule, šeit izcau globālu signālu:

 

App.trigger('user:newmessages',[n]);

 

uz šo reāģē attiecīgie sloti, kuri var būt un var nebūt. Piemēram header widgets var ielikt slotu un izmainīt jauno vēstuļu skaita skaitli pie ikoniņas. Bet tik pat labi var arī nebūt un viss strādās bez kļūdām. Tāpat var būt arī citi objekti, kas var reaģēt uz šo signālu pilnīgi neatkarīgi.

 

App.on('user:newmessages',function(n){
 $messages.html(n);
});

 

Arī widgetus būvējot parasti netais nekādas callback funkcijas, vai citu ciešas saiknes, bet visur izmantoju eventu modeļus.

 

Pa lielam tā pat kapāju. Migrēju nesen atpakaļ no mootools uz jquery. Jo, ja lieto backbone, tad baigais ķīselis sanāk - backbone, mootools, jquery, underscore, tāpēc vismaz no viena monstra vajadzēja atteikties. Žēl, ka mootools nepalika populārs (kā Džastins Bībers) un tam nav labas alternatīvas backbone, bet rakstīt savu MVC protams, ka negribēju. Nepatīk taisīt velosipēdus.

 

Backbone ir tāds bonuss, ka tas ir baigi maziņš, tātad viegls/ātrs koda izpētei/iebraukšanai.

 

Vēl lietoju coffee.

 

 

Testēšana: PHPUnit + Selenium.

 

 

Selenium mani mazliet kretinē, jo ir lēni tā testēt. Varbūt arī nākotnē rakstīšu kaut kādas daļas, bet pagaidām to nedaru.

 

Nu un ja lieto rest, tad arī jēga testēt ar selenium daļēji pazūd.

 

Lietoju qunit, sinonjs un protams TDD :)

 

Te, atkal, nāk jau citas problēmas - nav saintegrēts IDE, tātad jāskatās pārlūkā rezultāts, nav reportu utt. Te laikam vainojama mana atpalicība, jo ir visādi rhino un gan jau var saslēgt ar IDE. Ar sinonjs problēmas sagādā ajaxu testēšana. Pat neesmu atkodis kā uz viena url uzlikt vairākus POST pieprasījums, atkarībā no sūtītiem datiem.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...