Jump to content
php.lv forumi
  • 0

JS html templeiti


hjkl

Question

Kāda ir jūsu pieredze ar lapām kur prasās ar JS palīdzību ģenerēt lielus HTML gabalus? Nevis pieprasīt visu laiku ar ajax no servera, bet nemitīgi atjaunināt balstoties uz kaut kādiem mainīgajiem? Esmu lasījis par vairākiem JS template dziņiem, bet izmēģinājis nevienu neesmu.

Link to comment
Share on other sites

  • Answers 82
  • Created
  • Last Reply

Top Posters For This Question

Recommended Posts

  • 0

Vienkāršs piemērs - dinamisks lists - tas ir lists, kura elementu saturs var mainīties kā arī var tikt pielikti vai noņemti elementi.

Iepriekš bija 2 varianti:

1)Uztaisīt funkciju, kura no stāvokļa uzģenerē dom-u un pie jebkurām izmaiņām stāvoklī, pārģenerē dom-u. Šis variants ir vienkāršs bet paliek praktiski neizmantojams pie lielākiem doma izmēriem, jo ir lēns. Tāpat šis nestrādā, ja, piemēram, lists satur ifreimus vai citus objektus, kurus ietekmē dom-a pārlāde.

2)Uzrakstīt funkciju, kas no stāvokļa uzģenerē dom-u un tad uzrakstīt kaudzi funkcijas, kuras katra maina dom-u atbilstoši noteiktām stāvokļa izmaiņām, piemēram, pievienot lista elementu, izdzēst lista elementu, izmainīt noteiktu lista elementu vērtības, utt. Šis variants ātrāk strādā, bet sarežģītākās aplikācijās jāraksta daudz lieka koda un kodu ir grūti uzturēt, jo pie izmaiņās stāvokļa -> dom-a transformācijā ir jāmaina arī citas funkcijas.

 

Ar reactjs ir apvienots labākais no abiem. Raksti vienu funkciju, bet pateicoties virtuālajām domam, viss lido. Saprotams, ka reactjs dara daudz vairāk nekā to, piemēram, efektīvu eventu menidžēšanu, 2 virzienu bindošanu, utt.

Link to comment
Share on other sites

  • 0

Par to lista piemēru iekš ReactJS.

 

Basically tu definē ka tev ir “templeits“ kurā tu vienkārši iterē cauri kkādam listam un izvadi elementus.

 

~~~

<ul>

_.map items, <li>item</li>

</ul>

~~~

 

Tad, tiklīdz pamaini datus iekš items (pieliec jaunu, noņem esošu vai pat izmaini) — tiek pārrenderēts tikai difference (un arī only if needed).

Link to comment
Share on other sites

  • 0

Visvienkāršāk ir Backbone + React, kur React aizstāj Backbone views. Bet idejiski var “līmēt kopā“ kā pašam ērtāk da jebkā!

 

Un kā ar routingu?

Skatos googlē, ka ir varianti samiksēt ar Backbone routeri vai arī no EmberJS portētais https://github.com/rackt/react-router

Edited by hjkl
Link to comment
Share on other sites

  • 0

Oh, you got me. Kāpēc jūs domājāt, ka es mācījos Python un tagad mācos Clojure? :D

 

Es īsti nesaprotu, kāds labums uzņēmumam no šī. Vai arī tu to dari tikai ārpus darba laika? Kamēr mācīes, attiecīgi, izstrādes temps diezgan palēlināts + sarežģītāk atrast aizstājēju. No firmas viedokļa liktos, ka mērķis ir izmantot pārbaudītus rīkus, ar kuru palīdzību var maksimāli ātri piegādāt strādājošu produktu. Vai arī jums tur ir tā, ka vienkārši nav ko darīt, nav termiņu, un tad var eksperimentēt ar visādām eksotiskām tehnoloģijām?

Link to comment
Share on other sites

  • 0

Kruta būtu, ja darbā būtu nēģeri, kas rukā un dara melno darbu, un baltie cilvēki, kas pēta jaunākās tehnoloģijas, domā/izstrādā labākos risinājumus, lai nēģeri varētu izmantot šo risinājumus un ātri ļepīt projektus un iekļauties termiņos

Principā tā jau arī ir Facebookā, jo kā gan savādāk rastos ReactJS

Link to comment
Share on other sites

  • 0

Es arī to nevaru saprast - no daGrevis puses visu laiku izskan "es izmantoju x", kur x ir kaut kas diezgan jauns, nereti pat softs, kam nav vēl v1.0 iznācis. IMHO darbam tādas lietas nedrīkst izmantot, jo nevar zināt, vai pēc gada tas softs nebūs pamests un aizmirsts, un tad jau retais gribēs braukt iekšā loģikā un pārtaisīt uz nākamo jauno softu.

Hobija līmenī, protams, idejas uzsūkt var.

Edited by jurchiks
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...