google / uniflow-polymer

UniFlow for Polymer
https://google.github.io/uniflow-polymer/
Apache License 2.0
165 stars 21 forks source link

Difference between UniFlow and PolymerRedux #9

Closed Mika83AC closed 6 years ago

Mika83AC commented 7 years ago

Hello militeev,

again me, surprise ....

I just stumbled over https://github.com/tur-nr/polymer-redux and just would like to know where you see the difference between your project and PolymerRedux.

As I'm not very advanced in JS, Polymer and co., so I've to ask this to classify both projects and their advantages/disadvantages for me.

Thank you!

Regards, Michael

militeev commented 7 years ago

Both libraries try to achieve similar goal - implement pattern of unidirectional data flow. polymer-redux project uses Redux, which demands state to be immutable and reducers being pure functions. UniFlow doesn't have such restrictions, which on one hand reduces overhead: you (a) don't need to recreate the state object every time the action is processed and (b) don't need to deal with middleware. On another hand you loose some advantages that come with Redux: time travel and hot reloading.

Mika83AC commented 7 years ago

Ok, thank you for this helpful explanation.

Is "hot reloading" not just a implementation of "read the localStorage on page load and set to the state what's relevant for it"? Just a save and restore of application state. Guess this can't be counted as an advantage of Redux I think ;)

TimeTravel might be a really helpful thing in debugging, but is this worth the overhead that comes with it. Hm... hard decision.

For me the important point is that PolymerRedux is Polymer 2.0 compatible. As every new app development will start on 2.0 I think it would be very important for UniFlow to be 2.0 compatible. Otherwise me/someone else just HAS to use PolymerRedux because we CANT use UniFlow, even if we'd like to.

Have your plans for 2.0 compatibility changed since the last one asked for it?

militeev commented 6 years ago

Uniflow is now Polymer 2.X compatible. Check out v0.6.0