I wanted to get familiar with React while also continuing to use browserify. Also, ES6 seems cool. So, I took the official React tutorial and wrote it as CommonJS modules and added some ES6 sugar where appropriate.
Clone this repository and run:
npm install
npm start
This will install all the necessary dependencies, start the server and watch your code for changes so it'll get transpiled (Babel) and bundled (browserify) on the fly.
npm run build will build a minified "production" version.
Here and there I opted to use different libraries than in the original tutorial. Notably
markedinstead ofshowdownbecause the latter isn't compatible with browserify.whatwg-fetch(the proposed replacement for XHR) instead of jquery.
As of Babel 6.0 we need to explicitly install all the presets we want to use. For this tutorial that's
going to be babel-preset-react for the React related transforms and babel-preset-es2015 for the ES6/ES2015
syntax.
The presets are enabled in .babelrc.
I particularly like how fetch and ES6 arrow functions transformed this:
$.ajax({
url: this.props.url,
dataType: 'json',
success: function(data) {
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});...into this:
fetch(this.props.url)
.then(response => response.json())
.then(data => this.setState({ data: data }))
.catch(err => console.error(this.props.url, err.toString()))After the update to react 0.14 I decided to use the class syntax as well as stateless components
and switch to ES6 style exports/imports.
Just open an issue or pull request or whateveer :)