HiFaraz / node-playbook

Get started fast with Node.js

Home Page:http://nodeplaybook.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Recommend React for both the front-end and mobile

aem opened this issue · comments

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.

commented

@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.

@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.

commented

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

@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.

@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

commented

@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:

  • React is great for making a front end, but needs a lot of configuration
  • react-slingshot helps you configure your app quickly and has a learning and decision making curve
  • therefore we recommend react through react-slingshot for the front end (web)
  • react-native-cli takes your project that you set up with slingshot and turns it into a mobile app?

@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.

commented

So therefore the bulleted list is correct?

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

commented

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?

Yeah, sure!

commented

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

commented

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