HiFaraz / node-playbook

Get started fast with Node.js
http://nodeplaybook.com
1.39k stars 51 forks source link

Recommend React for both the front-end and mobile #1

Closed aem closed 7 years ago

aem commented 8 years ago

I believe it makes sense to recommend React as the front-end JavaScript recommendation, as well as mobile.

First, with React, you get both standard React and React Native, which means you learn once, write anywhere. Once you know the JSX syntax and get comfortable with React your skills apply anywhere. This simplifies development and allows you to focus on features and functionality rather than language differences.

Second, with the recent advent of create-react-app and the stabilization of react-native-cli, creating React apps on both the web and mobile platforms is as simple as running through a quick wizard, fitting right into this playbook's paradigm of write as little code as possible and make as few technology decisions as possible.

I'm happy to put together a PR for this, but I wanted to get feedback before I submitted something.

HiFaraz commented 8 years ago

@aem Awesome! React has been on my learning list for a while now. And thank you for contributing your PR!

How is the experience of creating a React project without create-react-app? I ask because its not stable yet (currently at v0.3.0-alpha), and the recommendation criteria requires stability.

aem commented 8 years ago

@HiFaraz I would definitely recommend learning React. I think it provides a better separation of concerns than any other MV* framework. I wrote a thing about it here.

I must've missed the stability requirement for recommendations. Setting up a React app is unfortunately semi-painful without react-create-app. The issue is for any reasonable development process you'd need to set up webpack or a similar build tool and I'd argue that's asking a lot of the kind of developer this playbook is aimed at. Though I'd definitely prefer to suggest create-react-app (it's Facebook's own CLI which means that, unlike most other boilerplate projects, it is guaranteed to follow best practices), this boilerplate project is a very popular one that provides a really robust framework for the app. We could recommend that instead of the CLI.

HiFaraz commented 8 years ago

Ok, and how about for mobile app development? Is react-native-cli enough, or does it need to be paired with react-slingshot?

wli commented 8 years ago

@HiFaraz Not sure how "pure" you're looking for, but ExponentJS provides an amazing mobile app development experience with React Native and really speeds up the process. The simplest analogy I can think is that Ionic runs on Angular, and ExponentJS runs on React Native.

aem commented 8 years ago

@wli ExponentJS looks nice, but it seems as though it doesn't add a ton of benefit other than a pretty skin on top of react-native-cli.

@HiFaraz it should be paired with react-slingshot, the react-native-cli is a Facebook tool which means they won't endorse any third party testing or state management frameworks

HiFaraz commented 8 years ago

@aem did you mean to say that react-native-cli should not be paired with slingshot?

I need to summarize this, please check this summary:

aem commented 8 years ago

@HiFaraz no, sorry, let me clarify. react-native-cli should be paired with slingshot. react-native-cli just generates an iOS and Android app shell with a package.json that gives you a basic react app. What react-native-cli doesn't include is a state management system or anything like that because Facebook doesn't want to make architecture decisions for you. As a result you need a combination of react-native-cli and react-slingshot, the CLI to generate the iOS/Android projects, and slingshot to get the JavaScript skeleton in place.

HiFaraz commented 8 years ago

So therefore the bulleted list is correct?

aem commented 8 years ago

The first 3 are correct. The last bullet, not as much. All slingshot is is a skeleton that you can copy into your app directory to get an easy React config up and running, so the process would be to run the react-native-cli and then copy the react-slingshot config into the root directory of the generated project.

Having said that, I was recently pointed to ignite, which I'm going to look into now. Give me a day, I may recommend ignite instead of react-native-cli since it looks like ignite combines the best of react-native-cli and react-slingshot

HiFaraz commented 8 years ago

Alright, please let me know and let's evaluate. It sounds like we are OK to go ahead with react+react-slingshot for front-end / browser development. I'm going to close your old PR. Can you submit a new one for front end only please?

aem commented 8 years ago

Yeah, sure!

HiFaraz commented 7 years ago

Hi @aem, do you still recommend ignite? Just following up on our old thread.

HiFaraz commented 7 years ago

Closing because of lack of interest. We can revisit this if there is interest. Thanks all for your help!