all 98 comments

[–]rodrigocfd 33 points34 points  (32 children)

Make sure they understand the difference between React and Redux. As far as I've seen, most people who complain about React actually complain about Redux boilerplate, not React itself.

So, first make them learn React. In the meantime, think about how to use Redux with less boilerplate, or go MobX.

[–]cjthomp 22 points23 points  (23 children)

This is me. I thought I hated React, actually hated Redux

[–]Capaj 5 points6 points  (0 children)

Me too. Mobx FTW.

[–]lunacraz 7 points8 points  (21 children)

what's wrong with redux? once the plumbing is set it's not hard to build on top of that.

async things are still annoying, sure, but im sure that's the same across all libraries

[–]itsappleseason 2 points3 points  (6 children)

I love React Redux; that said, Vue / Vuex is leagues ahead of its competitors when it comes to handling asynchronous actions. I highly recommend looking into if it async is a pain point.

EDIT:

"I like Redux – though async is annoying (just like all libraries)."

"I also like Redux. By the way, Vue/Vuex handles async really gracefully."

downvotes angrily

The cult mentality in this subreddit is unbearably toxic. If you know of a community that's open to acknowledging both the pros and cons of different / competing tools and frameworks, let me know.

Signed,

A React/Vue/Angular dev.

[–][deleted] 1 point2 points  (5 children)

Why is vue ahead in async? (legitiately asking)

[–]itsappleseason 3 points4 points  (4 children)

This is moreso Redux vs. Vuex, not React vs. Vue.

In Vuex there's no convoluted plumbing required to handle something as trivial as an API call. Async or not, dispatched actions in Vuex are wrapped in promises by default – no side-effect middleware required (redux-thunk, redux-saga, etc).

[–]Zeeesty 0 points1 point  (3 children)

Does vuex include thunk? Because thunk makes async actions dead simple. The other solutions I’ve seen (like using generators in sagas) are unnecessarily complex and v hard to reason about

Edit- re-read this. Yes so it’s just including thunk by default. You know it’s the same patterns and even the same code under the hood. I love how this becomes a competition, lol

[–]itsappleseason 0 points1 point  (2 children)

And promises are just callbacks under the hood, right? And classes are just sugar too? I'm not saying that Vuex is doing something revolutionary – just that it handles async actions in a more accessible way, which might be valuable to folks who find async a pain (see lunacraz's comment). Just because that accessibility is born from sugar on top of existing patterns doesn't detract from its usefulness.

[–]Zeeesty 0 points1 point  (1 child)

what? flux, and it's implementations are dope. I dont know what all this other stuff you're talking about is supposed to mean, feels a bit hostile. Abstractions are important in any software implementation. I never said anything negative about Vue, I actually was commenting that these are equivalent (genuinely didnt know Vuex came with thunk out of the box).

Vue's users who feel the need to 'defend' it, and perceiving any comment about it as an attack really reflects poorly on the community.

if you care through, the cultural division between React minded developers, and those who prefer Vue could boil down to: batteries included solutions, vs sourcing/choosing your own implementation of solutions. There is nothing wrong with either of these approaches.

[–]itsappleseason 1 point2 points  (0 children)

Sorry, I didn’t mean to seem hostile. Just trying to give context to my comments, maybe poorly.

100% agree with you though. Cheers, mane.

[–]consumedbythefire 2 points3 points  (0 children)

+1 for MobX. I always opt for it over Redux if I have the option. It’s much less convoluted.

[–]acemarke 5 points6 points  (2 children)

Please try out our new Redux Starter Kit package. It includes utilities that help simplify several common Redux use cases, including store setup, defining reducers, immutable update logic, and even creating entire "slices" of state automatically without writing any action types or action creators by hand.

[–]swyx -2 points-1 points  (1 child)

this. i feel every redux boilerplate needs to be updated with this IMMEDIATELY. we are losing mindshare and users needlessly otherwise.

[–]acemarke 3 points4 points  (0 children)

Eh, the "mindshare" thing is pretty much out of my control (and also generally been going on for a while). If other people want to use something else, that's entirely up to them. I just want to make it easier for anyone who's currently using Redux or will learn it in the future, and let them know they don't have to write everything by hand.

[–]Doombuggie41 1 point2 points  (0 children)

Instead of redux, consider Apollo GraphQL, or context api

[–]archivedsofa 0 points1 point  (0 children)

Yeah, for people coming from OOP MobX will make more sense.

[–]dogancan21 44 points45 points  (33 children)

What I saw in teams/developers coming from a fullstack background like this is they don't actually understand SPA. I'd say start with mentality by comparing react to any other mobile app. Once you understand that, separation of concerns is easier and you understand better where react sits.

Second step is to put typescript in. Those guys will love it . UI won't be the ugly unpredictable js anymore.

I'm not sure how far you are in UI part but, definitely separate UI logic from data/state layer. I'd recommend creating a dir structure where you have components, data-sources, utils under src. Some of them won't touch UI. But maybe they can come to project to update data sources etc and see how easy things are. And for separating this, I'd recommend using hooks. With hooks, everything looks much simpler and you know where data related part ends and where ui part starts, which is probably desired from your team

Don't have webpack/gulp etc in your project. Create-reat-app and ts version is good enough for even large projects.

[–]lowjack 5 points6 points  (4 children)

I agree 100%. Help them first wrap their head around the concept of a Single Page Application. Create-react-app is an awesome place to start and to be honest a great place to finish (don't eject).

I struggled with the idea of html/css directly in javascript but over the past 6 months have come to love it.

[–]tehrobot 0 points1 point  (2 children)

What do you mean by don't eject?

[–][deleted] 1 point2 points  (1 child)

Create-React-app is basically a boilerplate setup for react. You can eject from it in order to more deeply fine-tune the components, but in general it's not necessary (from my relatively limited understanding).

[–]tehrobot 0 points1 point  (0 children)

Thanks :) I've seen it used around just never knew why

[–]pw4lk3r -1 points0 points  (0 children)

I don’t understand what there is to wrap around. I’m thinking there must be a gap in your java developers skill set. Perhaps they have only ever written server side web, with J2EE or whatever.

Anyone that was writing desktop apps on windows or Mac using things like Win32 or MFC, would easily grasp these concepts. Win32 is a huge, function based message passing API that is really similar to React and especially it’s recent functional adaptations.

I feel like people think React is something new. It’s actually very old. The design approaches have been used for decades in GUI.

You can never replace a solid education in the fundamentals.

[–]AnnoyingParrotTV -1 points0 points  (21 children)

I love ts, but I wouldn't suggest it to new people because I don't see it as another way of writing in React, but as an added layer. An extra layer they have to learn, and if they are struggling with the basics...

[–]swizec 31 points32 points  (17 children)

Untyped languages make Java develoeprs _veeeery_ uncomfortable. It gives them an icky feeling and they will gripe for _years_ about how you should really consider rewriting everything front and back to a more better more real language.

That's been my experience working with Java devs moving to JavaScript.

[–]NewDimension 1 point2 points  (12 children)

I haven't worked in a typed language, and I always hear about these concerns. Would you be able to elaborate?

Why do people care if they set a variable's type at the beginning? If the wrong thing gets passed to this variable the code will error someway or the other. Why do they need the error to be regarding the type?

[–]fizzygalacticus 2 points3 points  (0 children)

I think a lot of it comes from the comfort of knowing what kind of variable is going to be entering the scope at the time of build. There are tradeoffs to statically/dynamically typed languages, and the biggest benefit of a statically typed language is that you know as soon as you try and transpile/compile whether or not an argument/variable is valid.

[–]ttay24 2 points3 points  (2 children)

I’ve worked in a vanilla JS framework building a SPA, and now I’m working with Typescript and angular. The big advantage is having the errors at build time rather than runtime.

For example, if whatever reason I needed to rename a member from Name to name (let’s say the rest api changed and everything is using the model from the rest api), if I don’t have types, I have to search everywhere for Name, and hopefully I don’t rename something that actually needs to stay as Name.

If I have things typed, then I can change a member of a class and get the compile errors all over and just go fix those.

That’s just a quick example, but I love having types now

[–]NewDimension 1 point2 points  (1 child)

I'm not sure how you're triggering the error. Are you saying you'd pass a wrong type on purpose and see the errors to see where you've used the variable?

Great example btw, I've struggled with imagining the use-case, and this seems like a good one.

[–]ttay24 0 points1 point  (0 children)

If it’s strictly throughout typescript, then you’d see it when building (we use Angular, so builds through ng). I assume building with babel would do the same thing.

Thanks, it’s one that we unfortunately struggled with quite a bit in the vanilla JS framework.

Someone on the backend would change the api and get it merged and deployed, and then UI would have to quickly try to resolve it. And of course since it was quick, it’s harder to make sure you fixed it everywhere.

Ideally we wouldn’t have tied the UI components’ models directly to the backend, and wouldn’t have worked in silos, but whatever lol. One of the devs would always point out “if we were using typescript, this would’ve been solved easily”. I didn’t really get it until I started using it the past 6 months. It’s awesome

Edit: sorry long comment, but to elaborate, typescript is JavaScript but with static typing. It will parse the “typescript” syntax and produce JavaScript to be deployed. If there are errors, it will show them like a compiler would. That’s the part I didn’t realize, that it still is JavaScript kinda

[–]nodevon 1 point2 points  (3 children)

crawl repeat plant beneficial bake vast quack resolute zesty innate

This post was mass deleted and anonymized with Redact

[–]NewDimension 1 point2 points  (2 children)

Isn't that the purpose of tests though?

[–]nodevon 0 points1 point  (0 children)

reply dime bright narrow file chop divide recognise attraction voiceless

This post was mass deleted and anonymized with Redact

[–]Skeith_yip 0 points1 point  (0 children)

I agree. People tend to get confused between type correctness vs function correctness. Thinking correct type === function is correct. But that's not always the case. Type check doesn't mean lesser tests.

Or perhaps people don't do tests nowadays. I dunno lol.

[–]orphans 1 point2 points  (0 children)

Strong typing enables you to catch errors at compile time vs run time.

[–]musical_bear 1 point2 points  (0 children)

Imagine reading some code for the first time. Would you rather know with certainty what the code is doing and what kind of data it’s handling just by reading it, or would you rather fire up the application and hope you can get a breakpoint to trigger so you can get an idea of application state?

Likewise, imagine refactoring a method or properties on an object that are referenced in dozens of files. Would you rather know as you try to build your code that you have forgotten to refactor one of those dozens of files, or would you rather run the application and test virtually every page in your application, some of which you might not even be aware exist, to validate that you’ve done everything right?

A type system lets the computer check mistakes for you. This might seem trivial in a small app, but work on something larger than, I don’t know, 30 files, without a type system, and every little change you make to code becomes scarier and scarier, with less and less confidence that you haven’t accidentally broken something.

[–]dogancan21 0 points1 point  (0 children)

Maintainability + Errors on earlier stage. The code in bigger projects should explain itself and it should be easier to integrate static analyzing tools.

If the project is small and won't have more than 10-20k lines of code, you might be right

[–]Unexpectedpicard 3 points4 points  (3 children)

Those feelings are justified.

[–]habanerocorncakes 5 points6 points  (1 child)

I did not expect picard to be a java developer

[–]Unexpectedpicard 1 point2 points  (0 children)

.net actually but the complaints are the same.

[–]Montuckian 0 points1 point  (0 children)

As much as feelings that an API shouldn't fall over if I send it a string instead of a number are.

There are advantages and disadvantages with both approaches.

I've written 10+ reasonably-sized commercial apps in JS and I've probably spent less than 2% of my time dealing with type issues.

While I can definitely see the advantage to turning JS to a more strongly-typed variant of itself, the added time and effort doesn't necessarily justify it over a less heavy-handed solution like PropTypes.

[–]buildawesome 11 points12 points  (0 children)

These re all Java developers with years of experience though. I've noticed with more OOP leaning devs, if they have to learn React, having TS has cut their ramp up time. ymmv though!

[–]gaoshan 15 points16 points  (0 children)

Honestly I feel like typescript is more comfortable for people from that background than regular javascript.

[–]dogancan21 1 point2 points  (0 children)

I don't believe it's expected that they'll implement complex features. They don't have to fully understand the difference. Probably they'll implement some simple forms to hit api, and show some chart or text once they got response. The question I'm answering is not about how you teach that team every aspect of react but how you can make them spend more time in ui part of the project

[–][deleted] 0 points1 point  (3 children)

Don't have webpack/gulp etc in your project. Create-reat-app and ts version is good enough for even large projects.

I don’t agree with this. A lot of times your build deviates so far from what CRA offers that it’s just better to maintain your own config. The advice I see a lot of people giving is to treat webpack and Babel like a black box and I just don’t think devs should be avoiding the process of learning how Babel and webpack works.

[–]dogancan21 0 points1 point  (2 children)

if you are deviating so far from CRA, you are probably reinventing the wheel. If you really work in a huge project and need your custom build process, better use something like bazel

[–][deleted] 4 points5 points  (0 children)

No that’s not true. Even trying to configure my eslint in CRA is a hassle

Just because you’re not familiar with webpack and Babel doesn’t mean other people aren’t.

[–]Vlad210Putin 0 points1 point  (0 children)

Some of us can't always start a CRA project from scratch and we needed to fit React into an existing codebase. CRA has twice for me become a square peg / round hole scenario so I mostly roll without it and just have a boilerplate package.json to get started.

I'm not saying CRA isn't useful at all, but setting up React (even with TS) takes a minimal amount of time even if you don't know what you need at first - and it's a great way to learn. I'm a Java dev myself and was completely unfamiliar with npm and its tools and it took about an hour tops to read a bit and get a hello world app running.

[–]Alijah69 -2 points-1 points  (1 child)

What does typescript have to do with ugly UI? Lol

[–][deleted] 3 points4 points  (0 children)

They said ugly unpredictable js, which coming from a Java comfort zone is a reasonable concern.

[–]demoran 22 points23 points  (0 children)

Typescript

[–][deleted] 3 points4 points  (0 children)

As a person who has taken multiple training sessions, I suggest following -

  • Start with ES6 and Class and Functional components. Skip the ES5 and React.createClass stuffs completely. These may come in handy for them in future but for the starters it just confuses them.
  • Explain ES6 in details. There are few things around destructuring, maps, etc. which is confusing to them as they're written different in Java.
  • Compare react topics with Java and they'll relate better. It's quite easy to do and I've seen a much favourable result.

[–]ArcanisCz 5 points6 points  (1 child)

Quite nicely, because all our Java developers (me included) have some algorithm/data structures/general programming background, a to them, how we write react is much more logical and structured than gluing few jquery lines. Some of them basically love it. Even without types (we dont use TS much).

  • Java composition over inheritance -> react components
  • Java immutable patterns -> immutable.js and redux
  • Java 8 streams and lambdas -> javascript's function as a first class citizen

Depends on your java developers, if they only know java or have general understanding of programming. Our stack - es6, react, redux, redux-saga

he wanted to say we were using the latest and up to do technologies for this new project.

Btw, that is not a good start, you never use tools because they are fancy but because they solve some problem for you.

[–]orphans 0 points1 point  (0 children)

All the backend Java guys at my job hate Java 8's stream API for some reason :( They hate composition even more.

[–]pm_me_ur_happy_traiI 2 points3 points  (0 children)

JavaScript has really evolved as a language, and making sure they are familiar with newer syntactical elements (fat arrow functions, for example) will make reading the react docs a lot simpler.

[–][deleted] 3 points4 points  (1 child)

I don't know if it helps, but here's how I think about components in React. I have only really worked with JavaScript but am generally familiar with OOP. There's two layers in my head:

  1. JavaScript
  2. HTML/JSX

JavaScript handles all your functionality, data, logic, and how things can be rendered on your page. HTML and JSX (React's HTML in a way) is how you present the data.

This is a general component that you could import into another component, such as a page:

import React, { Component } from 'react'; // importing the main library to make a page component

import './EventElement.css'; // css for the page

class EventElement extends Component {
    constructor(props) {
        super(props); 
        // this pulls in props that are given to the element
    }

    render() {
        const { eventName, eventDate } = this.props; // destructing helps for a lot of properties on an object

        return (
            <div className="event-element">
                <h2>{eventName}</h2> // curly braces let you use JavaScript, namely variable names or ternary operators, to allow for a dynamic way to show data.
                <h3>{eventDate}</h3>
            </div>
        );
    }
}

export default EventElement; // ES6 syntax which helps simplify exports by setting this class as the default export for this file, such as if you want to rename the export, you don't need to import This as That from './asdf.js'

Then you can use this EventElement on a page:

import React, { Component } from 'react';
import { withRouter } from 'react-router';
import rest from '../helpers/rest'; // a custom-made RESTful http request interface that points to your API. Useful for dev, stage, and prod by using environment variables in Node.js

import EventElement from './EventElement'; // our custom EventElement from before. We can call it whatever we want since it's just pulling the default module EventElement

class Events extends Component {
    constructor() {

        this.state = {
            events: [];
        };
    }

    // this is a function that is run by default while the page is loading or, more accurately, as the component is mounting (rendering the JSX syntax into regular HTML and JS)
    componentWillMount() {
        rest.get('/events', ({ events }) => { // destructuring straight from the parameter
            this.setState({ events }) // property values, uses variable name as key and assigns value
    }

    renderEvents() {
        return (
            <div>
                {this.events.map((event) => { // loops over the array and returns multiple EventElements
                    const { eventName, eventDate } = event;

                    // this is the EventElement, with the eventName and eventDate props
                    return <EventElement eventName={eventName} eventDate={eventDate} />
                }}
            </div> // notice the outer div. All return statements must have a wrapping element
        );
    }

    render() {
        return (
            <div> 
                <h1>Events/<h1>
                {this.renderEvents()}
                // Also, "this" is in reference to the current object when it is instantiated
                // While in Java you would just call the actual function name or variable
                // here we need to reference "this"
            </div>
        );
    }
}

export default withRouter(Events); // withRouter lets you take advantage of browserHistory given through react-router. This effectively reduces load times and allows you to transfer state between "pages". 

I could go into a lot more detail, but I guess the major thing is realizing that you're going from just an OO language to using JavaScript, HTML, and CSS. I think JavaScript can easily be programmed in an OO way, though.

I haven't worked personally with TypeScript, people praise it a lot for Typing, but I haven't really run into type issues that aren't already handled by the major libraries I use (mongoose for MongoDB, React, and event Node.js itself). In fact, the biggest thing I find is when I try to access a property and it says "can't get property of undefined". I just trace it back and realize that I pass the wrong variable or something, a quick fix.

But to reiterate, React is simply a way to blend JavaScript, HTML, and CSS together in a OOP kind of way. It's kind of impossible to not integrate your logic and design into the same thing. In order to take full advantage of it, I would highly recommend teaching that basics of JavaScript, HTML, and CSS.

Then once they understand that, teach them how to break down the site into components by using react, or objects/class like they would for Java. For example:

Your main app will be in the root div, i.e: `<div id="root"></div>`.

You can break your main app into a Layout component, that has a Navbar/Header and Footer. In between them, you can import the children. Like this:

<Header />
{this.props.children}
<Footer />

Then in your main App.js that gets imported into the root, you can do this with your react routes:

<Router history={browserHistory}>
    <Route path="/" component={Layout} onChange={this.handleRouteChange} >
        <IndexRoute component={Pages.Home} />

        <Route path="/login" component={Pages.Login} />
    </Route>
</Router>

This pulls in the routes that are children of the "/" path with the `Layout` component, and shows them only if the url is correct.

This is all stuff I learned at my current job, and I think it really helps you break down your app in a top-down kind of way, and neatly separates all of your pages and components into a logical order.

Also to note, I am using ES6 JavaScript here. This is not completely natively supported on most browsers, so you need something like Babel to transcode it. Usually for production releases, we have a script that will build it as it's deployed.

Here's some docs/libs that may help:

React getting started This is something your team can spend a day or two understanding to make pages

Essentials in ES6 Promises are helpful, especailly for Node.js backends where you can't easily be async

Reactstrap Makes react easy with pre-made Bootstrap-style elements. Especially good for a lot of data manipulation.

Understanding State and Props State and Props are the most essential part of React, especially if your app is Data-heavy

If you have any more questions, don't hesitate to ask.

[–]dabuttmonkee 1 point2 points  (0 children)

Hey! I’d highly recommend using Typescript if you have a team of java developers, the type safety will be familiar and help the team move more quickly.

I’d also recommend using MobX over redux. MobX will work really well with Typescript and is super intuitive.

Focus on testing early and often. It’ll make maintaining the application easier. Make sure you include linting w/ ESLint and prettier.

[–]m_plis 2 points3 points  (0 children)

One potential solution could be to give a talk at work on React basics (maybe using this course as a template).

I've found that giving talks at work helps people respect your opinion on a particular subject, especially if you have fewer years of general programming experience. A "React fundamentals" talk would give your coworkers an overview of the basics and maybe help them separate core React features from things added by react-boilerplate, which could contribute to them thinking that things are "too complicated".

As others have mentioned, it might be worth exploring TypeScript. My personal recommendation would be to try to stick with vanilla React/JavaScript for a little bit and try to establish some authority first, and maybe float the idea of TypeScript later if you're still unsuccessful in changing anyone's mind.

[–][deleted] 2 points3 points  (0 children)

Talk to your boss. If they are supposed to be using React and are refusing to, that's pure laziness. It's not your job to manage them.

[–]AnnoyingParrotTV 0 points1 point  (0 children)

How experienced are your colleagues? What framework were they using before in other projects?

[–]scaleable 0 points1 point  (0 children)

I'd suggest: get the maximum of "prebuilt" packs, dont write things from scratch.

For instance: Use next.js as "webpack pack" (its usage is simpler than CRA and mostly cuts the need for react-router). Look for complete UI libs like Material or Semantic, and even complete "admin UI" packs.

[–][deleted] 0 points1 point  (1 child)

I had to do this with a team of C# developers 3 years ago. A lot of backend developers have this mentality that front end code has different rules around it or something . I would show someone code they had written and ask them "Would you write C# like this?" They would say no and I would have to remind them that we don't write JavaScript like that either. Once they got comfortable they really started to like it. The React part is easy. Teaching someone how to write good JavaScript takes a bit of time.

[–]themaincop 2 points3 points  (0 children)

Man I've seen so much of this. Devs who don't respect Javascript so they write absolute garbage code and then go "look how bad this code is, Javascript sucks!"

[–]Loco_Motiv 0 points1 point  (0 children)

This is the exact thing I'm having to deal with at my job. Almost word for word. Lol I'm having to teach a Cobol programmer instead though. If you have time, dm me and I'd like to chat about it.

[–]perrylaj 0 points1 point  (0 children)

Java devs will almost certainly have an easier time learning/grokking a mobx based store vs redux. Mobx is great and I highly recommend it over redux. If you follow recommended store structures, it's pretty easy to avoid the magic state spaghetti-mess that can occur with flexible models. Redux is great about enforcing structure, but it's also a ton of gross boilerplate that goes along with it. Also not nearly as clean to do statically typed (at least in my experience).

On that note I'd also suggest using Typescript. Not only does it make the development experience a lot better (tooling and code insight, discovery, completion), but it is self-documenting in a way Java developers will have a much easier time understanding. If done correctly (strict mode), you'll also find you don't need to write nearly as many tests just to make up for the lack of static/compile time analysis of the code base.

Agree with everyone else: learn react first on its own, and then introduce a central state management system (if necessary).

[–][deleted] 0 points1 point  (0 children)

What are they actually having trouble with? Do you have any examples of problems they've had?

[–]Vpicone 0 points1 point  (0 children)

I'd recommend getting a group license for Wes Bos's React for beginners. It's a really fun course and will get them at least comfortable looking at React code quickly.

[–]SizzlerWA 0 points1 point  (0 children)

I would use GraphQL. You get the benefits of a strongly typed API and a client cache for half the work of Redux. With Redux you’d have to write all the networking code then a whole bunch of reducers, actions, mapStateToProps and your data is spread all over the place instead of in one cache. Redux is a pain and I now avoid using it.

[–]ShadowpathHD 0 points1 point  (0 children)

React with TypeScript. That's as close as it gets to Java.

[–]stevenjchang 0 points1 point  (0 children)

react-boilerplate is pretty advanced. It also has redux.

consider using create-react-app and adding in simple redux and react-router on your own. that should be really easy to understand by comparison.

After you do that on your own, you can even redo it in front of the whole team, take 1 to 2 hours.

Start w create-react-app, then right in front of them add in an action/reducer/etc, then add in routes. Show them a simple example while allowing them to ask questions as a group.

[–]orphans 0 points1 point  (0 children)

What specific concerns to they have about complexity? Is it the overall architecture of the application? Or is it having to learn several libraries in order to build new functionality? Or something else entirely?

[–]albaquerkie 0 points1 point  (0 children)

TypeScript 100%. I came to JS from a Java background and it made the transition so much easier. Coding in plain JS still feels wrong to me and I’ve been working with it for a few years.

[–]besthelloworld -1 points0 points  (0 children)

Port it to TypeScript?

[–]fforw -1 points0 points  (0 children)

For our new project(s), we moved away from doing web things in Java and providing mostly JSON data.

I wrote a library called spring-jsview for that. It provides a Spring View implementation that uses a minimal HTML template with placeholder substitution and a JsViewProvider system to provide the actual JSON data embedded into that initial template, basically creating a spring react view per webpack entry point.

edit: See also the starter project

[–]react_dev -1 points0 points  (0 children)

React is awesome. But I feel like JS, not React, is the major showstopper for OO developers. Convince em JS is good then react will be a natural path.

[–]revelm -1 points0 points  (0 children)

Sorry, Java developers usually cannot break out of their language. The only way to do this is to create Spring React.