GithubHelp home page GithubHelp logo

react-es6-browserify's Introduction

Boilerplate for react with ES6 and browserify

This is a boilerplate repo for using react with ES6 and browserify, and running it with gulp.

Installation

npm install

After the installation, run gulp and browse to http://localhost:8888

The compiled code can be found in dist/bundle/app.js.

What do you get

  • A gulpfile with livereload
  • Compilation of the jsx [1]
  • Compilation of ES6 to ES5 [2], [3]

Compilation step

This shows only the relevant steps. All the steps can be found in gulpfile.js. The main compilation step is shown below. Most of the inspiration comes from [7]. You should check this post, there is a great gulpfile included!

Because we also include react in the browserify steps, we use watchify to make the incremental builds fast.

function compileScripts(watch) {
    gutil.log('Starting browserify');

    // The main script
    var entryFile = './app/jsx/app.jsx';

    // Set exeperimental to true to use features like let, const,...
    es6ify.traceurOverrides = {experimental: true};

    var bundler;
    // Use watchify for fast updates, otherwise use browserify
    if (watch) {
        bundler = watchify(entryFile);
    } else {
        bundler = browserify(entryFile);
    }

    // Include react
    bundler.require(requireFiles);

    // Compile the jsx files
    bundler.transform(reactify);

    // Compile ES6 features. Make sure to set configure is you use .jsx files
    bundler.transform(es6ify.configure(/.jsx/));

    var rebundle = function () {
        // Debug: true: creates sourcemaps
        var stream = bundler.bundle({ debug: true});

        stream.on('error', function (err) { console.error(err) });
        // Source uses vinyl-source-stream. This lets us use the browserify api directly instead of using the gulp-browserify plugin [4].
        stream = stream.pipe(source(entryFile));

        // rename the resulting file to app.js and save it to dist/bundle
        stream.pipe(rename('app.js'));
        stream.pipe(gulp.dest('dist/bundle'));
    }
    
    // When watchify see an update, run rebundle.
    bundler.on('update', rebundle);
    return rebundle();
}

React with ES6

ES6 classes

module React from 'react'; // import react


class _MainSection {
    render() {
        return (
            <div>
                <h1>Example of React with es6 and browserify</h1>
                <Body />
            </div>
        );
    }
}
export const MainSection = React.createClass(_MainSection.prototype);

We can create ES6 classes, but have to export it with React.createClass [5]. Importing the created files can be done like this:

import {MainSection} from './components/MainSection.react.jsx';

String templating for classes

class _Body {
    getClassName() {
        return 'foo';
    }


    render() {
        const x = 'x';

        return (
            <div className={`${x} ${this.getClassName()} bar`}>
                Hello there!
            </div>
        );
    }
}

As you can see, you can use template literals [6] to create your classnames.

Sources

react-es6-browserify's People

Contributors

tcoopman avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.