Vue first though, as it's easier to get started with it and it will get a sense of what minimal setup you should expect. Then try to match that with react.
If you start by following most react tutorials, they will make you begin with something way more complicated that it needs to be and you will get discouragedd.
Both have a "cli" tool. Everybody tell you to start with it. I strongly advise against it, as it's the best way to not understand a thing about what you are doing and make bad decisions.
Find a tutorial that starts with the bare lib (no webpack, no transpilation, nothing but a script tag), for both vue and react. Then when you know how this work, find a minimal webpack based tutorial.
Then when you know those basics, use the cli tool, but immediatly use the eject feature. Read the result to understand the whole shebang.
Once you have done that, you can start any project using the cli without eject, and be confident you know what's going on. It will make you not only very productive, but also will let you take decision based on what you know, and not what other people wants you to know.
Now, I personnaly prefer Vue as I find the lib easier to work with, the community saner and the documentation is one of the best I've read, even including non JS projects. But again, make an educated choice.
Can't agree more with this. There are quite a few reasons I think those starter-kits and tutorials are very harmful especially to new developers. Figuring out how your tsconfig/webpack/babelrcs/state-handlers/etc all fit together should be something that should certainly be done and learned incrementally.
Perhaps the issue is the amount of boilerplate you need to start a simple app. There should be a flask[1] like starter for react/vue apps. Parcel seems like the closest thing but its still not obvious to me why they demo 4 files to get started [2] -- we already dynamically transforming and compiling everything why not just have a single `index.js` with a Index/Main entrypoint?
Is there anything out there to do something as simple as:
import * as React from "react"
import {Html, Body, Title} from "parcel"
const Index = () => {
return (
<Html>
<Title>MySite</Title>
<Body>
<h1>Hello world!</h1>
</Body>
</Html>
)
}
with a `cmd {run,build} index.{jsx,tsx}`The steps are pretty much
npx create-react-app && yarn start and finally yarn build for a production ready build.
[0]: https://facebook.github.io/create-react-app/ [1]: https://reactjs.org/tutorial/tutorial.html
edit: Saw your points above and while I do not agree I can understand your point of view.
There are many other tutorials on the web but the official one has had a lot of work put in to making it seamless and letting you get a feel for what it's like to work with React without throwing too many tangential ideas at you.
I teach React regularly, I tried all methods. The only one that make people click is to make them use a flat html page and React.createElement() manually in it first. On their laptop. Offline. With no other tools than a text editor.
This way, you remove the magic, and when you bring it back, people make good use of it.
Magic is good for power users. It's a bad things as a beginer's tool though.
For work/income I'd choose React as there seem to be more jobs for that. Also in the long term it feels like a pretty solid choice. React has a very big and active community, an outstanding development team, and so many codebases in the world are build on it. React will linger on for quite a while I dare to guess.
IMHO it is not really a React vs Vue thing, you could also go for Ember or Angular. Just pick the one that feels and works good for you and fulfils your personal needs we cannot assess.
I've pushed production Vue and React projects and my personal preference is React. I haven't worked with React Hooks yet but it looks like a game-changer and would make my codebases a lot cleaner. I prefer JSX although Vue also has JSX support, but I've yet to work on a project with complete opt-in for it. React also sets you up for React-Native in some way, in case you're considering targeting native platforms as well.
At the end of the day, don't pick React or Vue for a frontend that doesn't need it. For example, your personal site probably doesn't need a UI library. Then ask what your coworkers feel more comfortable with, if you have any. Finally, check how easy it'll be to integrate with (or migrate to) the existing codebase, if any.
Both libraries and ecosystems are incredible at the moment. You can get a clean and reasonable codebase, performant frontend, and great pace of work with either.
If you do go for the Vue route for professional work, consider donating to Evan's [patreon](https://www.patreon.com/evanyou/overview) or [Open Collective](https://opencollective.com/vuejs). And similarly for [Nuxt](https://opencollective.com/nuxtjs). React et al have venture funding or Facebook behind them for the most part.
Both are good options that nothing serious will come against your way when working on most CRUD apps. If it involves serious computations then you should really evaluate both and select what best fits your usecase.
This is very important. Resources can often be more important than tech.