Jump to content
php.lv forumi

Angularjs vai Backbonejs vai ko citu?


Recommended Posts

Posted

Ja tu uzdod šādu jautājumu, tad tu esi nepareizi sapratis react.

 

Tev nav jādomā par citas komponentes setState. Ja parent komponentē izmainās dati (setState), tad uzreiz tiek izsaukta render metode, kura visām child komponentēm iedod jaunus props.

  • Replies 51
  • Created
  • Last Reply

Top Posters In This Topic

Posted

Ko domājat par React testēšanu?

Kas attiecas uz unittestiem, man patīk jest ideja automātiski mockot visu, kas nāk no require() funkcijas, bet tajā pašā laikā jest ir ļoooti lēns.

Turklāt ņemot vērā, ka tādā viduvējā projektā varētu būt ap 100 komponentiem, tad nemaz tā negribas tos unittestus visiem komponentiem rakstīt..

 

Iespējams vieglāk pāriet visam pāri augstākā līmenī ar selenium. Nav tik plašs coverage, bet domāju ka izķer 80% bugu.

Posted (edited)

Nē, nesapratu. Konceptuāli saprotu visu, viss tikai vienā virzienā. bet...

 

Man ir sākuma arrays (Ajax), ar kuru es veidoju saturu. Būti, pieeja viņam ir tikai pirmajai klasei. Ajax saturs saglabājas state. Bet divas klases zemāk, es ar pogu gribu izmainīt arrayā mainīgo un atjaunot nerenderēt visu pa jaunu. Kā man to izdarīt? Atkal atgriežoties pie jautājamu, kā man no vienas klases izmainīt state citai klasei?

Edited by Wuu
Posted

React ideja tieši ir visu pārrenderēt. Tāpēc jau arī ir izveidots virtuālais DOM, kurš tiek pārrenderēts un reālajā DOM tiek ieliktas tikai reālās izmaiņas.

 

Reālais DOM tiks izmainīts, tikai tad, kad tiešām ir bijušas izmaiņas. Tāpēc nevajag baidīties no pārrenderēšanas.

Posted

Kasspars, zinu to vissu. Esmu izstudējis pāris video, tutoriāļus.

 

Bet konceptuāli nespēju uzbūvēt galvā ideju.

Main class
/         \
menu      saturs

Pēc manām domām loģiska uzbūve, vienā pusē klase ar izvēlni. Otrā saturs.

 

Kā man piespiežot pogu menu, izmainīt state saturā?

 

Šobrīd mans risinājums bija pārvietot menu uz Main class. Bet tad zūd normāla struktūra. Tik pat labi, var uzbliezt vienu lielu klasi un aizmirst.

Posted (edited)

Main klasē padod "menu click callback" uz Menu komponentei (caur props)

 

tad, kad Menu komponentē notiek kliks, tu izsauksi padoto "menu click callback". Līdzi padod menu identifikatoru

 

Tālāk Main klase savā state uzstādīts activeMenuId (uzstādot state notiks rerender)

 

activeMenuId tiek caur props padots Satura komponentei

 

Tad, kad notiks rerender Satura komponente ielādēs saturu vadoties pēc padotā activeMenuId



var Main = React.createClass({

	getInitialState: function() {
		return {
			activMenuId: 1
		}
	},

	handleMenuClick: function(menuId) {
		this.setState({activMenuId: menuId})
	},

	render: function() {
		return (
			<Menu onMenuClick={this.handleMenuClick} />
			<Saturs menuId={this.state.activMenuId}
		);
	}

});

Edited by Kasspars
Posted

> Do you have a moment to talk about our lord and savior, testing?

 

_Neviens neatbild, visi ignorē._

 

:D

Posted

Tāpēc, ka realitātē developerim tie testi ir vairāk čakars kā ieguvums

 

Ja testē to, kas nav jātestē, un raksta testus rakstīšanas pēc - tad jā, protams.

Posted (edited)

Es pieturos pie principa, ka uzreiz ir jāraksta kvalitatīvs kods, nevis uzrakstīt pāris vai vēl trakāk ļoti, ļoti daudz testus un tad mainīt kodu, līdz viņš iziet visus testus.

Tā kā nerakstu React komponenšu bibliotēkas un manas komponentes lielākoties ir specifiskas attiecībā pret projektu, tad vairāk visu testēšanu balstu uz funkcionāliem testiem - Scalatest ar Selenium.

Taču, ja ir vajadzība pēc tīras React komponenšu testēšanas, tad izmantoju Mocha un React testa addonu, aptuveni šādi:

http://jsfiddle.net/d9crpzqy/9/

 

Saprotams, ka manā gadījumā (Scala, sbt) es priekš testu laišanas izmantoju sbt un attiecīgos pluginus.

Edited by codez
Posted

Nu, te kaut kad atpakaļ F3llony rakstīja, ka principā testēt var arī pašus testus. Diezgan trāpīgi.

Ikdienā tā arī izskatās, ka, ja Selenium testi ir uzrakstīti, tad tas jau ir daudz. :D

Posted

Kaut kā nepielec, baigā atšķīrība no prasta JQuery. Projektu pabeidzu, bet īsti skaidrības nav. Laikam, būs vēl kaut kādus divus jāuztaisa.

Join the conversation

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

Guest
Reply to this topic...

×   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...