Nice work, I prefer React over Angular it is so much cleaner in design. I will certainly take a look at what you have produced, since me too I am trying to find solutions for a post GWT Widget/UiBinder world.
For one component that we have, which generates a form driven by XSchema's I already moved to using JsInterop and Elemental as the basis and I was suprised that it was actually easy to move away from Widgets. The combination with Lambda's makes the code actually much cleaner and now I can do proper unittesting since all the JsInterop stuff can be easily mocked. On Thursday, March 24, 2016 at 8:49:10 PM UTC+1, Paul Stockley wrote: > > We currently have a large GWT application that we have been working on for > the last 4 years. We use Uibinder and Widgets very > > heavily, although we have our own Widget set and RPC mechanism. The > application is being constantly expanded and realistically > > won’t be fully rewritten for 8-10 years. Given the news about J2CL not > supporting widgets, I have been thinking about how we could > > migrate to a world without widgets on an incremental basis. > > > > In parallel, I have also being exploring writing native mobile apps. We > tried the mobile web but it wasn’t great and we really needed > > hardware integration for NFC and total offline capabilities. Which brings > us React. I found React Native and started researching > > and playing around. I have to say I am very impressed. In my mind it is a > game changer. They are getting close to allowing one code > > base to support iOS, Android and the Web with only about 10-20% custom > code for each platform. > > > > The more I played with React Native, the more I liked the React > declarative model for defining UI’s. I started thinking that React > > would be ideal for incrementally embedding within an existing GWT > application. Facebook designed it so they could incrementally > > role it out into their existing Web application. When GWT 2.8 beta came > out, I wanted something to try the new JsInterop out on. > > React seemed like a good candidate. After a couple of weeks of > experimenting, I have a working proof of concept for React. I > > have to say it was a real challenge and really pushed the capabilities of > JsInterop. I had to do some javascript hacking to get it > > to work. My goal was to create an interface that was as close to > JavaScript as possible. That way you could use the many React > > tutorials and apply them to writing GWT React code without some huge > mental translation. > > > > I decided to try and port http://todomvc.com/examples/react/#/ to Java. > The reason for this was so I could have a direct comparison > > between the Java and Javascript code. I have implemented enough of the > React API to get this working. In addition, I also integrated > > a 3rd party React component called React Router ( > https://github.com/reactjs/react-router). This is pretty much the de > facto standard > > for routing in the React world. This proved that I could consume React > components written by other people. Overall I am pleased with > > how it turned out. I find the java version easier to follow, especially > since the Prop types are explicit. It would be nice to support JSX > > instead of the legacy createElement interface. However, it isn’t > terrible. The Java version was 465 lines in total vs 419 for the original > > JavaScript code. If you take out the import statements which I don’t > really count because the IDE creates them for you, the Java version > > was actually only 414 lines. You can take a look at the code here : > > > > > https://drive.google.com/folderview?id=0Bxp8vLBG2ol3NjAtRmdjMDhlc0k&usp=sharing > > > > At this point I am about 80% sure what I have created could become a > viable production solution. The next steps I want to do are: > > > > 1. Finish the API > 2. Test embedding Gwt React within an existing GWT Widget based > application. > 3. Build an API for Redux (https://github.com/reactjs/redux) and React > Redux (https://github.com/reactjs/react-redux) which is becoming the > de facto standard for the MC in MVC. I will probably re-implement todomvc > using this. > > > > If I don’t hit any roadblocks, I will either publish to Github or make the > source publicly available. I haven’t made my mind up on which approach I > will take. > -- You received this message because you are subscribed to the Google Groups "GWT Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/google-web-toolkit. For more options, visit https://groups.google.com/d/optout.
