From 9fc24d36010489dc2f51cc291309cb9c197b07ed Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 12:08:32 -0800 Subject: [PATCH 01/19] Lesson 02 Final --- index.js | 13 ++++++++++++- modules/About.js | 8 ++++++++ modules/Repos.js | 8 ++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 modules/About.js create mode 100644 modules/Repos.js diff --git a/index.js b/index.js index 898eaa43..29062820 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,15 @@ import React from 'react' import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' import App from './modules/App' -render(, document.getElementById('app')) +import About from './modules/About' +import Repos from './modules/Repos' + +render(( + + + + + +), document.getElementById('app')) + diff --git a/modules/About.js b/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
About
+ } +}) + diff --git a/modules/Repos.js b/modules/Repos.js new file mode 100644 index 00000000..8dde1131 --- /dev/null +++ b/modules/Repos.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
Repos
+ } +}) + From 6ad2491a6cf72cc9bd76f0e618ef9f26f05439e0 Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 12:12:41 -0800 Subject: [PATCH 02/19] Lesson 03 Final --- modules/App.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/App.js b/modules/App.js index 009ba9ba..ccddeabc 100644 --- a/modules/App.js +++ b/modules/App.js @@ -1,8 +1,17 @@ import React from 'react' +import { Link } from 'react-router' export default React.createClass({ render() { - return
Hello, React Router!
+ return ( +
+

React Router Tutorial

+
    +
  • About
  • +
  • Repos
  • +
+
+ ) } }) From 90863bba728a17cc59c8ed50c0a6dd956c7d266a Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 12:19:43 -0800 Subject: [PATCH 03/19] Lesson 04 Final --- index.js | 7 ++++--- modules/App.js | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 29062820..ad923f1f 100644 --- a/index.js +++ b/index.js @@ -7,9 +7,10 @@ import Repos from './modules/Repos' render(( - - - + + + + ), document.getElementById('app')) diff --git a/modules/App.js b/modules/App.js index ccddeabc..d6fa5092 100644 --- a/modules/App.js +++ b/modules/App.js @@ -10,6 +10,7 @@ export default React.createClass({
  • About
  • Repos
  • + {this.props.children} ) } From 82cc8a68978056bd36a7b0aab1865fce94dfbbb9 Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 12:29:34 -0800 Subject: [PATCH 04/19] Lesson 05 Final --- index.css | 4 ++++ index.html | 1 + modules/App.js | 6 +++--- modules/NavLink.js | 10 ++++++++++ 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 index.css create mode 100644 modules/NavLink.js diff --git a/index.css b/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/index.html b/index.html index d3334c9e..ed2d8111 100644 --- a/index.html +++ b/index.html @@ -2,6 +2,7 @@ My First React Router App +
    diff --git a/modules/App.js b/modules/App.js index d6fa5092..6ec47cc9 100644 --- a/modules/App.js +++ b/modules/App.js @@ -1,5 +1,5 @@ import React from 'react' -import { Link } from 'react-router' +import NavLink from './NavLink' export default React.createClass({ render() { @@ -7,8 +7,8 @@ export default React.createClass({

    React Router Tutorial

      -
    • About
    • -
    • Repos
    • +
    • About
    • +
    • Repos
    {this.props.children}
    diff --git a/modules/NavLink.js b/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + From 04fc5fa4db520d4314671db5967e8e3665c67e2f Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 12:58:29 -0800 Subject: [PATCH 05/19] Lesson 06 Final --- index.js | 2 ++ modules/Repo.js | 12 ++++++++++++ modules/Repos.js | 11 ++++++++++- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 modules/Repo.js diff --git a/index.js b/index.js index ad923f1f..35ce61ee 100644 --- a/index.js +++ b/index.js @@ -4,11 +4,13 @@ import { Router, Route, hashHistory } from 'react-router' import App from './modules/App' import About from './modules/About' import Repos from './modules/Repos' +import Repo from './modules/Repo' render(( + diff --git a/modules/Repo.js b/modules/Repo.js new file mode 100644 index 00000000..8cf9b7e6 --- /dev/null +++ b/modules/Repo.js @@ -0,0 +1,12 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) + diff --git a/modules/Repos.js b/modules/Repos.js index 8dde1131..9ae0d221 100644 --- a/modules/Repos.js +++ b/modules/Repos.js @@ -1,8 +1,17 @@ import React from 'react' +import { Link } from 'react-router' export default React.createClass({ render() { - return
    Repos
    + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    +
    + ) } }) From ee1ee5305d97267738bb5de54e96937973e9efe4 Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 12:58:48 -0800 Subject: [PATCH 06/19] Lesson 07 Final --- index.js | 5 +++-- modules/Repos.js | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 35ce61ee..8f123f03 100644 --- a/index.js +++ b/index.js @@ -9,8 +9,9 @@ import Repo from './modules/Repo' render(( - - + + + diff --git a/modules/Repos.js b/modules/Repos.js index 9ae0d221..aefda123 100644 --- a/modules/Repos.js +++ b/modules/Repos.js @@ -1,5 +1,5 @@ import React from 'react' -import { Link } from 'react-router' +import NavLink from './NavLink' export default React.createClass({ render() { @@ -7,9 +7,10 @@ export default React.createClass({

    Repos

      -
    • React Router
    • -
    • React
    • +
    • React Router
    • +
    • React
    + {this.props.children}
    ) } From a085177f52bab2cfcb1c4c56f3dfd2d7d2c0d9a9 Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 13:11:24 -0800 Subject: [PATCH 07/19] Lesson 08 Final --- index.js | 4 +++- modules/Home.js | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 modules/Home.js diff --git a/index.js b/index.js index 8f123f03..91294180 100644 --- a/index.js +++ b/index.js @@ -1,14 +1,16 @@ import React from 'react' import { render } from 'react-dom' -import { Router, Route, hashHistory } from 'react-router' +import { Router, Route, hashHistory, IndexRoute } from 'react-router' import App from './modules/App' import About from './modules/About' import Repos from './modules/Repos' import Repo from './modules/Repo' +import Home from './modules/Home' render(( + diff --git a/modules/Home.js b/modules/Home.js new file mode 100644 index 00000000..1ae39730 --- /dev/null +++ b/modules/Home.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) + From 49e3ef9d32e625b3b0c1b1894b1461b8fa9fd08e Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 13:20:30 -0800 Subject: [PATCH 08/19] Lesson 09 Final --- modules/App.js | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/App.js b/modules/App.js index 6ec47cc9..346b6549 100644 --- a/modules/App.js +++ b/modules/App.js @@ -7,6 +7,7 @@ export default React.createClass({

    React Router Tutorial

      +
    • Home
    • About
    • Repos
    From 7810c003313f4f1eed563b63ecdf2a855eb54854 Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 15:01:01 -0800 Subject: [PATCH 09/19] Lesson 10 Final --- index.html | 4 ++-- index.js | 4 ++-- package.json | 2 +- webpack.config.js | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index ed2d8111..70033e42 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ My First React Router App - +
    - + diff --git a/index.js b/index.js index 91294180..6f15d1e5 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ import React from 'react' import { render } from 'react-dom' -import { Router, Route, hashHistory, IndexRoute } from 'react-router' +import { Router, Route, browserHistory, IndexRoute } from 'react-router' import App from './modules/App' import About from './modules/About' import Repos from './modules/Repos' @@ -8,7 +8,7 @@ import Repo from './modules/Repo' import Home from './modules/Home' render(( - + diff --git a/package.json b/package.json index 51792f8f..9bb35e8f 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "start": "webpack-dev-server --inline --content-base ." + "start": "webpack-dev-server --inline --content-base . --history-api-fallback" }, "author": "", "license": "ISC", diff --git a/webpack.config.js b/webpack.config.js index 8d895847..4e4291f1 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,7 +3,7 @@ module.exports = { output: { filename: 'bundle.js', - publicPath: '' + publicPath: '/' }, module: { From 7f336847ce43679803a6debac627b33ba975ce54 Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 16:07:41 -0800 Subject: [PATCH 10/19] Lesson 11 Final --- package.json | 6 +++++- index.css => public/index.css | 0 index.html => public/index.html | 0 server.js | 21 +++++++++++++++++++++ webpack.config.js | 9 +++++++++ 5 files changed, 35 insertions(+), 1 deletion(-) rename index.css => public/index.css (100%) rename index.html => public/index.html (100%) create mode 100644 server.js diff --git a/package.json b/package.json index 9bb35e8f..2cb49262 100644 --- a/package.json +++ b/package.json @@ -4,11 +4,15 @@ "description": "", "main": "index.js", "scripts": { - "start": "webpack-dev-server --inline --content-base . --history-api-fallback" + "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", + "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", + "start:prod": "webpack && node server.js" }, "author": "", "license": "ISC", "dependencies": { + "compression": "^1.6.1", + "if-env": "^1.0.0", "react": "^0.14.7", "react-dom": "^0.14.7", "react-router": "^2.0.0" diff --git a/index.css b/public/index.css similarity index 100% rename from index.css rename to public/index.css diff --git a/index.html b/public/index.html similarity index 100% rename from index.html rename to public/index.html diff --git a/server.js b/server.js new file mode 100644 index 00000000..be0357d1 --- /dev/null +++ b/server.js @@ -0,0 +1,21 @@ +var express = require('express') +var path = require('path') +var compression = require('compression') + +var app = express() + +app.use(compression()) + +// serve our static stuff like index.css +app.use(express.static(path.join(__dirname, 'public'))) + +// send all requests to index.html so browserHistory works +app.get('*', function (req, res) { + res.sendFile(path.join(__dirname, 'public', 'index.html')) +}) + +var PORT = process.env.PORT || 8080 +app.listen(PORT, function() { + console.log('Production Express server running at localhost:' + PORT) +}) + diff --git a/webpack.config.js b/webpack.config.js index 4e4291f1..a48b0ce8 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,11 +1,20 @@ +var webpack = require('webpack') + module.exports = { entry: './index.js', output: { + path: 'public', filename: 'bundle.js', publicPath: '/' }, + plugins: process.env.NODE_ENV === 'production' ? [ + new webpack.optimize.DedupePlugin(), + new webpack.optimize.OccurrenceOrderPlugin(), + new webpack.optimize.UglifyJsPlugin() + ] : [], + module: { loaders: [ { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } From 9bca0e5d6b286aaf6fd2f5cce4ff905d7c8f92a2 Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 16:41:56 -0800 Subject: [PATCH 11/19] Lesson 12 Final --- modules/Repo.js | 3 ++- modules/Repos.js | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/modules/Repo.js b/modules/Repo.js index 8cf9b7e6..6e14ba84 100644 --- a/modules/Repo.js +++ b/modules/Repo.js @@ -2,9 +2,10 @@ import React from 'react' export default React.createClass({ render() { + const { userName, repoName } = this.props.params return (
    -

    {this.props.params.repoName}

    +

    {userName} / {repoName}

    ) } diff --git a/modules/Repos.js b/modules/Repos.js index aefda123..96fb4334 100644 --- a/modules/Repos.js +++ b/modules/Repos.js @@ -2,6 +2,18 @@ import React from 'react' import NavLink from './NavLink' export default React.createClass({ + contextTypes: { + router: React.PropTypes.object + }, + + handleSubmit(event) { + event.preventDefault() + const userName = event.target.elements[0].value + const repo = event.target.elements[1].value + const path = `/repos/${userName}/${repo}` + this.context.router.push(path) + }, + render() { return (
    @@ -9,6 +21,13 @@ export default React.createClass({
    • React Router
    • React
    • +
    • +
      + / {' '} + {' '} + +
      +
    {this.props.children}
    From a55bcb8384bc62ad23f5be38fb15a3416ed6ae5f Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Tue, 9 Feb 2016 18:39:51 -0800 Subject: [PATCH 12/19] Lesson 13 Final --- index.js | 23 ++++++----------------- modules/routes.js | 17 +++++++++++++++++ package.json | 5 ++++- server.js | 38 +++++++++++++++++++++++++++++++++----- webpack.server.config.js | 34 ++++++++++++++++++++++++++++++++++ 5 files changed, 94 insertions(+), 23 deletions(-) create mode 100644 modules/routes.js create mode 100644 webpack.server.config.js diff --git a/index.js b/index.js index 6f15d1e5..51a72600 100644 --- a/index.js +++ b/index.js @@ -1,21 +1,10 @@ import React from 'react' import { render } from 'react-dom' -import { Router, Route, browserHistory, IndexRoute } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' -import Repo from './modules/Repo' -import Home from './modules/Home' +import { Router, browserHistory } from 'react-router' +import routes from './modules/routes' -render(( - - - - - - - - - -), document.getElementById('app')) +render( + , + document.getElementById('app') +) diff --git a/modules/routes.js b/modules/routes.js new file mode 100644 index 00000000..72e9b82e --- /dev/null +++ b/modules/routes.js @@ -0,0 +1,17 @@ +import React from 'react' +import { Router, Route, browserHistory, IndexRoute } from 'react-router' +import App from './App' +import About from './About' +import Repos from './Repos' +import Repo from './Repo' +import Home from './Home' + +module.exports = ( + + + + + + + +) diff --git a/package.json b/package.json index 2cb49262..21569ed1 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,10 @@ "scripts": { "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", - "start:prod": "webpack && node server.js" + "start:prod": "npm run build && node server.bundle.js", + "build:client": "webpack", + "build:server": "webpack --config webpack.server.config.js", + "build": "npm run build:client && npm run build:server" }, "author": "", "license": "ISC", diff --git a/server.js b/server.js index be0357d1..b9ac9773 100644 --- a/server.js +++ b/server.js @@ -1,6 +1,10 @@ -var express = require('express') -var path = require('path') -var compression = require('compression') +import express from 'express' +import path from 'path' +import compression from 'compression' +import React from 'react' +import { renderToString } from 'react-dom/server' +import { match, RouterContext } from 'react-router' +import routes from './modules/routes' var app = express() @@ -10,10 +14,34 @@ app.use(compression()) app.use(express.static(path.join(__dirname, 'public'))) // send all requests to index.html so browserHistory works -app.get('*', function (req, res) { - res.sendFile(path.join(__dirname, 'public', 'index.html')) +app.get('*', (req, res) => { + match({ routes, location: req.url }, (err, redirect, props) => { + if (err) { + res.status(500).send(err.message) + } else if (redirect) { + res.redirect(redirect.pathname + redirect.search) + } else if (props) { + // hey we made it! + const appHtml = renderToString() + res.send(renderPage(appHtml)) + } else { + res.status(404).send('Not Found') + } + }) }) +function renderPage(appHtml) { + return ` + + + + My First React Router App + +
    ${appHtml}
    + + ` +} + var PORT = process.env.PORT || 8080 app.listen(PORT, function() { console.log('Production Express server running at localhost:' + PORT) diff --git a/webpack.server.config.js b/webpack.server.config.js new file mode 100644 index 00000000..4350279f --- /dev/null +++ b/webpack.server.config.js @@ -0,0 +1,34 @@ +var fs = require('fs') +var path = require('path') + +module.exports = { + + entry: path.resolve(__dirname, 'server.js'), + + output: { + filename: 'server.bundle.js' + }, + + target: 'node', + + // keep node_module paths out of the bundle + externals: fs.readdirSync(path.resolve(__dirname, 'node_modules')).concat([ + 'react-dom/server' + ]).reduce(function (ext, mod) { + ext[mod] = 'commonjs ' + mod + return ext + }, {}), + + node: { + __filename: true, + __dirname: true + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } + +} + From fce383b3b8ab24e1c459e34bf5c1b89e4c09e506 Mon Sep 17 00:00:00 2001 From: Fernando Alex Helwanger Date: Wed, 10 Feb 2016 08:53:19 -0200 Subject: [PATCH 13/19] Add npm install step `npm install` step was missing. Also, changed http://localhost:8080 to a hyperlink. --- lessons/01-setting-up.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lessons/01-setting-up.md b/lessons/01-setting-up.md index b28a15df..2eef8b17 100644 --- a/lessons/01-setting-up.md +++ b/lessons/01-setting-up.md @@ -12,10 +12,11 @@ up our project. git clone cd react-router-tutorial git checkout start +npm install npm start ``` -Now open up http://localhost:8080 +Now open up [http://localhost:8080](http://localhost:8080) Feel free to poke around the code to see how we're using webpack and npm scripts to run the app. From d512c5ab515e4682eec99d626283a85ab93ce953 Mon Sep 17 00:00:00 2001 From: Pooya Jaferian Date: Thu, 11 Feb 2016 22:12:33 -0800 Subject: [PATCH 14/19] added node_modules and DS_Store to the gitignore file --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index b7755212..a3ef7770 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ bundle.js *.bundle.js +node_modules +.DS_Store From cb956f522da6708234e1cc2bbf8e3609a4c950f7 Mon Sep 17 00:00:00 2001 From: syon Date: Sat, 27 Feb 2016 17:12:29 +0900 Subject: [PATCH 15/19] remove IndexRoute on lesson 06-params. We learn IndexRoute at lesson 08-index-routes. --- lessons/06-params.md | 1 - 1 file changed, 1 deletion(-) diff --git a/lessons/06-params.md b/lessons/06-params.md index 1554f465..929dcc09 100644 --- a/lessons/06-params.md +++ b/lessons/06-params.md @@ -49,7 +49,6 @@ import Repo from './modules/Repo' render(( - {/* add the new route */} From 4e5eb348642788551932febd3b1d6b33f08b691a Mon Sep 17 00:00:00 2001 From: Andrew Coelho Date: Tue, 8 Mar 2016 10:08:54 -0800 Subject: [PATCH 16/19] Change tutorial structure to individual folders for each lesson --- README.md | 7 ++-- .../README.md} | 7 ++-- lessons/01-setting-up/index.html | 6 ++++ lessons/01-setting-up/index.js | 4 +++ lessons/01-setting-up/modules/App.js | 7 ++++ lessons/01-setting-up/package.json | 25 +++++++++++++ lessons/01-setting-up/webpack.config.js | 14 ++++++++ .../README.md} | 3 +- lessons/02-rendering-a-route/index.html | 6 ++++ lessons/02-rendering-a-route/index.js | 4 +++ lessons/02-rendering-a-route/modules/App.js | 7 ++++ lessons/02-rendering-a-route/package.json | 25 +++++++++++++ .../02-rendering-a-route/webpack.config.js | 14 ++++++++ .../README.md} | 3 +- lessons/03-navigating-with-link/index.html | 6 ++++ lessons/03-navigating-with-link/index.js | 14 ++++++++ .../03-navigating-with-link/modules}/About.js | 1 - .../03-navigating-with-link/modules/App.js | 7 ++++ .../03-navigating-with-link/modules/Repos.js | 7 ++++ lessons/03-navigating-with-link/package.json | 25 +++++++++++++ .../03-navigating-with-link/webpack.config.js | 14 ++++++++ .../README.md} | 2 +- lessons/04-nested-routes/index.html | 6 ++++ lessons/04-nested-routes/index.js | 14 ++++++++ lessons/04-nested-routes/modules/About.js | 7 ++++ lessons/04-nested-routes/modules/App.js | 16 +++++++++ lessons/04-nested-routes/modules/Repos.js | 7 ++++ lessons/04-nested-routes/package.json | 25 +++++++++++++ lessons/04-nested-routes/webpack.config.js | 14 ++++++++ .../README.md} | 3 +- lessons/05-active-links/index.html | 6 ++++ lessons/05-active-links/index.js | 15 ++++++++ lessons/05-active-links/modules/About.js | 7 ++++ lessons/05-active-links/modules/App.js | 17 +++++++++ lessons/05-active-links/modules/Repos.js | 7 ++++ lessons/05-active-links/package.json | 25 +++++++++++++ lessons/05-active-links/webpack.config.js | 14 ++++++++ lessons/{06-params.md => 06-params/README.md} | 3 +- {public => lessons/06-params}/index.css | 1 - lessons/06-params/index.html | 7 ++++ lessons/06-params/index.js | 15 ++++++++ lessons/06-params/modules/About.js | 7 ++++ lessons/06-params/modules/App.js | 17 +++++++++ .../06-params/modules}/NavLink.js | 1 - lessons/06-params/modules/Repos.js | 7 ++++ lessons/06-params/package.json | 25 +++++++++++++ lessons/06-params/webpack.config.js | 14 ++++++++ .../README.md} | 3 +- lessons/07-more-nesting/index.css | 3 ++ lessons/07-more-nesting/index.html | 7 ++++ lessons/07-more-nesting/index.js | 17 +++++++++ lessons/07-more-nesting/modules/About.js | 7 ++++ lessons/07-more-nesting/modules/App.js | 17 +++++++++ lessons/07-more-nesting/modules/NavLink.js | 9 +++++ lessons/07-more-nesting/modules/Repo.js | 11 ++++++ lessons/07-more-nesting/modules/Repos.js | 16 +++++++++ lessons/07-more-nesting/package.json | 25 +++++++++++++ lessons/07-more-nesting/webpack.config.js | 14 ++++++++ .../README.md} | 3 +- lessons/08-index-routes/index.css | 3 ++ lessons/08-index-routes/index.html | 7 ++++ lessons/08-index-routes/index.js | 18 ++++++++++ lessons/08-index-routes/modules/About.js | 7 ++++ lessons/08-index-routes/modules/App.js | 17 +++++++++ lessons/08-index-routes/modules/NavLink.js | 9 +++++ lessons/08-index-routes/modules/Repo.js | 11 ++++++ lessons/08-index-routes/modules/Repos.js | 17 +++++++++ lessons/08-index-routes/package.json | 25 +++++++++++++ lessons/08-index-routes/webpack.config.js | 14 ++++++++ .../README.md} | 3 +- lessons/09-index-links/index.css | 3 ++ lessons/09-index-links/index.html | 7 ++++ lessons/09-index-links/index.js | 20 +++++++++++ lessons/09-index-links/modules/About.js | 7 ++++ lessons/09-index-links/modules/App.js | 17 +++++++++ .../09-index-links/modules}/Home.js | 1 - lessons/09-index-links/modules/NavLink.js | 9 +++++ lessons/09-index-links/modules/Repo.js | 11 ++++++ lessons/09-index-links/modules/Repos.js | 17 +++++++++ lessons/09-index-links/package.json | 25 +++++++++++++ lessons/09-index-links/webpack.config.js | 14 ++++++++ .../README.md} | 5 ++- lessons/10-clean-urls/index.css | 3 ++ lessons/10-clean-urls/index.html | 7 ++++ lessons/10-clean-urls/index.js | 20 +++++++++++ lessons/10-clean-urls/modules/About.js | 7 ++++ .../10-clean-urls/modules}/App.js | 1 - lessons/10-clean-urls/modules/Home.js | 7 ++++ lessons/10-clean-urls/modules/NavLink.js | 9 +++++ lessons/10-clean-urls/modules/Repo.js | 11 ++++++ lessons/10-clean-urls/modules/Repos.js | 17 +++++++++ lessons/10-clean-urls/package.json | 25 +++++++++++++ lessons/10-clean-urls/webpack.config.js | 14 ++++++++ .../README.md} | 3 +- lessons/11-productionish-server/index.css | 3 ++ .../11-productionish-server}/index.html | 1 - lessons/11-productionish-server/index.js | 20 +++++++++++ .../11-productionish-server/modules/About.js | 7 ++++ .../11-productionish-server/modules/App.js | 18 ++++++++++ .../11-productionish-server/modules/Home.js | 7 ++++ .../modules/NavLink.js | 9 +++++ .../11-productionish-server/modules/Repo.js | 11 ++++++ .../11-productionish-server/modules/Repos.js | 17 +++++++++ lessons/11-productionish-server/package.json | 25 +++++++++++++ .../11-productionish-server/webpack.config.js | 14 ++++++++ .../README.md} | 5 ++- lessons/12-navigating/index.js | 20 +++++++++++ lessons/12-navigating/modules/About.js | 7 ++++ lessons/12-navigating/modules/App.js | 18 ++++++++++ lessons/12-navigating/modules/Home.js | 7 ++++ lessons/12-navigating/modules/NavLink.js | 9 +++++ lessons/12-navigating/modules/Repo.js | 11 ++++++ lessons/12-navigating/modules/Repos.js | 17 +++++++++ lessons/12-navigating/package.json | 29 +++++++++++++++ lessons/12-navigating/public/index.css | 3 ++ lessons/12-navigating/public/index.html | 7 ++++ lessons/12-navigating/server.js | 20 +++++++++++ .../12-navigating/webpack.config.js | 1 - .../README.md} | 3 +- lessons/13-server-rendering/index.js | 20 +++++++++++ lessons/13-server-rendering/modules/About.js | 7 ++++ lessons/13-server-rendering/modules/App.js | 18 ++++++++++ lessons/13-server-rendering/modules/Home.js | 7 ++++ .../13-server-rendering/modules/NavLink.js | 9 +++++ .../13-server-rendering/modules}/Repo.js | 1 - .../13-server-rendering/modules}/Repos.js | 1 - lessons/13-server-rendering/package.json | 29 +++++++++++++++ lessons/13-server-rendering/public/index.css | 3 ++ lessons/13-server-rendering/public/index.html | 7 ++++ lessons/13-server-rendering/server.js | 20 +++++++++++ lessons/13-server-rendering/webpack.config.js | 23 ++++++++++++ .../README.md} | 0 index.js => lessons/14-whats-next/index.js | 1 - lessons/14-whats-next/modules/About.js | 7 ++++ lessons/14-whats-next/modules/App.js | 18 ++++++++++ lessons/14-whats-next/modules/Home.js | 7 ++++ lessons/14-whats-next/modules/NavLink.js | 9 +++++ lessons/14-whats-next/modules/Repo.js | 12 +++++++ lessons/14-whats-next/modules/Repos.js | 36 +++++++++++++++++++ .../14-whats-next/modules}/routes.js | 0 .../14-whats-next/package.json | 0 lessons/14-whats-next/public/index.css | 3 ++ lessons/14-whats-next/public/index.html | 7 ++++ server.js => lessons/14-whats-next/server.js | 1 - lessons/14-whats-next/webpack.config.js | 23 ++++++++++++ .../14-whats-next/webpack.server.config.js | 1 - 146 files changed, 1525 insertions(+), 45 deletions(-) rename lessons/{01-setting-up.md => 01-setting-up/README.md} (83%) create mode 100644 lessons/01-setting-up/index.html create mode 100644 lessons/01-setting-up/index.js create mode 100644 lessons/01-setting-up/modules/App.js create mode 100644 lessons/01-setting-up/package.json create mode 100644 lessons/01-setting-up/webpack.config.js rename lessons/{02-rendering-a-router.md => 02-rendering-a-route/README.md} (96%) create mode 100644 lessons/02-rendering-a-route/index.html create mode 100644 lessons/02-rendering-a-route/index.js create mode 100644 lessons/02-rendering-a-route/modules/App.js create mode 100644 lessons/02-rendering-a-route/package.json create mode 100644 lessons/02-rendering-a-route/webpack.config.js rename lessons/{03-navigating-with-link.md => 03-navigating-with-link/README.md} (93%) create mode 100644 lessons/03-navigating-with-link/index.html create mode 100644 lessons/03-navigating-with-link/index.js rename {modules => lessons/03-navigating-with-link/modules}/About.js (99%) create mode 100644 lessons/03-navigating-with-link/modules/App.js create mode 100644 lessons/03-navigating-with-link/modules/Repos.js create mode 100644 lessons/03-navigating-with-link/package.json create mode 100644 lessons/03-navigating-with-link/webpack.config.js rename lessons/{04-nested-routes.md => 04-nested-routes/README.md} (98%) create mode 100644 lessons/04-nested-routes/index.html create mode 100644 lessons/04-nested-routes/index.js create mode 100644 lessons/04-nested-routes/modules/About.js create mode 100644 lessons/04-nested-routes/modules/App.js create mode 100644 lessons/04-nested-routes/modules/Repos.js create mode 100644 lessons/04-nested-routes/package.json create mode 100644 lessons/04-nested-routes/webpack.config.js rename lessons/{05-active-links.md => 05-active-links/README.md} (98%) create mode 100644 lessons/05-active-links/index.html create mode 100644 lessons/05-active-links/index.js create mode 100644 lessons/05-active-links/modules/About.js create mode 100644 lessons/05-active-links/modules/App.js create mode 100644 lessons/05-active-links/modules/Repos.js create mode 100644 lessons/05-active-links/package.json create mode 100644 lessons/05-active-links/webpack.config.js rename lessons/{06-params.md => 06-params/README.md} (97%) rename {public => lessons/06-params}/index.css (96%) create mode 100644 lessons/06-params/index.html create mode 100644 lessons/06-params/index.js create mode 100644 lessons/06-params/modules/About.js create mode 100644 lessons/06-params/modules/App.js rename {modules => lessons/06-params/modules}/NavLink.js (99%) create mode 100644 lessons/06-params/modules/Repos.js create mode 100644 lessons/06-params/package.json create mode 100644 lessons/06-params/webpack.config.js rename lessons/{07-more-nesting.md => 07-more-nesting/README.md} (96%) create mode 100644 lessons/07-more-nesting/index.css create mode 100644 lessons/07-more-nesting/index.html create mode 100644 lessons/07-more-nesting/index.js create mode 100644 lessons/07-more-nesting/modules/About.js create mode 100644 lessons/07-more-nesting/modules/App.js create mode 100644 lessons/07-more-nesting/modules/NavLink.js create mode 100644 lessons/07-more-nesting/modules/Repo.js create mode 100644 lessons/07-more-nesting/modules/Repos.js create mode 100644 lessons/07-more-nesting/package.json create mode 100644 lessons/07-more-nesting/webpack.config.js rename lessons/{08-index-routes.md => 08-index-routes/README.md} (98%) create mode 100644 lessons/08-index-routes/index.css create mode 100644 lessons/08-index-routes/index.html create mode 100644 lessons/08-index-routes/index.js create mode 100644 lessons/08-index-routes/modules/About.js create mode 100644 lessons/08-index-routes/modules/App.js create mode 100644 lessons/08-index-routes/modules/NavLink.js create mode 100644 lessons/08-index-routes/modules/Repo.js create mode 100644 lessons/08-index-routes/modules/Repos.js create mode 100644 lessons/08-index-routes/package.json create mode 100644 lessons/08-index-routes/webpack.config.js rename lessons/{09-index-links.md => 09-index-links/README.md} (97%) create mode 100644 lessons/09-index-links/index.css create mode 100644 lessons/09-index-links/index.html create mode 100644 lessons/09-index-links/index.js create mode 100644 lessons/09-index-links/modules/About.js create mode 100644 lessons/09-index-links/modules/App.js rename {modules => lessons/09-index-links/modules}/Home.js (99%) create mode 100644 lessons/09-index-links/modules/NavLink.js create mode 100644 lessons/09-index-links/modules/Repo.js create mode 100644 lessons/09-index-links/modules/Repos.js create mode 100644 lessons/09-index-links/package.json create mode 100644 lessons/09-index-links/webpack.config.js rename lessons/{10-clean-urls.md => 10-clean-urls/README.md} (94%) create mode 100644 lessons/10-clean-urls/index.css create mode 100644 lessons/10-clean-urls/index.html create mode 100644 lessons/10-clean-urls/index.js create mode 100644 lessons/10-clean-urls/modules/About.js rename {modules => lessons/10-clean-urls/modules}/App.js (99%) create mode 100644 lessons/10-clean-urls/modules/Home.js create mode 100644 lessons/10-clean-urls/modules/NavLink.js create mode 100644 lessons/10-clean-urls/modules/Repo.js create mode 100644 lessons/10-clean-urls/modules/Repos.js create mode 100644 lessons/10-clean-urls/package.json create mode 100644 lessons/10-clean-urls/webpack.config.js rename lessons/{11-productionish-server.md => 11-productionish-server/README.md} (99%) create mode 100644 lessons/11-productionish-server/index.css rename {public => lessons/11-productionish-server}/index.html (99%) create mode 100644 lessons/11-productionish-server/index.js create mode 100644 lessons/11-productionish-server/modules/About.js create mode 100644 lessons/11-productionish-server/modules/App.js create mode 100644 lessons/11-productionish-server/modules/Home.js create mode 100644 lessons/11-productionish-server/modules/NavLink.js create mode 100644 lessons/11-productionish-server/modules/Repo.js create mode 100644 lessons/11-productionish-server/modules/Repos.js create mode 100644 lessons/11-productionish-server/package.json create mode 100644 lessons/11-productionish-server/webpack.config.js rename lessons/{12-navigating.md => 12-navigating/README.md} (95%) create mode 100644 lessons/12-navigating/index.js create mode 100644 lessons/12-navigating/modules/About.js create mode 100644 lessons/12-navigating/modules/App.js create mode 100644 lessons/12-navigating/modules/Home.js create mode 100644 lessons/12-navigating/modules/NavLink.js create mode 100644 lessons/12-navigating/modules/Repo.js create mode 100644 lessons/12-navigating/modules/Repos.js create mode 100644 lessons/12-navigating/package.json create mode 100644 lessons/12-navigating/public/index.css create mode 100644 lessons/12-navigating/public/index.html create mode 100644 lessons/12-navigating/server.js rename webpack.config.js => lessons/12-navigating/webpack.config.js (99%) rename lessons/{13-server-rendering.md => 13-server-rendering/README.md} (99%) create mode 100644 lessons/13-server-rendering/index.js create mode 100644 lessons/13-server-rendering/modules/About.js create mode 100644 lessons/13-server-rendering/modules/App.js create mode 100644 lessons/13-server-rendering/modules/Home.js create mode 100644 lessons/13-server-rendering/modules/NavLink.js rename {modules => lessons/13-server-rendering/modules}/Repo.js (99%) rename {modules => lessons/13-server-rendering/modules}/Repos.js (99%) create mode 100644 lessons/13-server-rendering/package.json create mode 100644 lessons/13-server-rendering/public/index.css create mode 100644 lessons/13-server-rendering/public/index.html create mode 100644 lessons/13-server-rendering/server.js create mode 100644 lessons/13-server-rendering/webpack.config.js rename lessons/{14-whats-next.md => 14-whats-next/README.md} (100%) rename index.js => lessons/14-whats-next/index.js (99%) create mode 100644 lessons/14-whats-next/modules/About.js create mode 100644 lessons/14-whats-next/modules/App.js create mode 100644 lessons/14-whats-next/modules/Home.js create mode 100644 lessons/14-whats-next/modules/NavLink.js create mode 100644 lessons/14-whats-next/modules/Repo.js create mode 100644 lessons/14-whats-next/modules/Repos.js rename {modules => lessons/14-whats-next/modules}/routes.js (100%) rename package.json => lessons/14-whats-next/package.json (100%) create mode 100644 lessons/14-whats-next/public/index.css create mode 100644 lessons/14-whats-next/public/index.html rename server.js => lessons/14-whats-next/server.js (99%) create mode 100644 lessons/14-whats-next/webpack.config.js rename webpack.server.config.js => lessons/14-whats-next/webpack.server.config.js (99%) diff --git a/README.md b/README.md index 0008289b..5c863632 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ React Router Tutorial Quick lessons for getting up-to-speed with React Router. -See [01-setting-up.md](/lessons/01-setting-up.md) to get started. +See [Lesson 1 - Setting Up](/lessons/01-setting-up/) to get started. -Each lesson has a commit for the final code so you can `git checkout -` before starting a new one if you'd like. +Each lesson is a fully runnable app with all code from the previous lesson, so you can `cd lessons/`, npm install, +and then run the appropriate NPM scripts for each lesson from within the lesson folder. Missing stuff that will come eventually, hopefully ... maybe. @@ -15,4 +15,3 @@ Missing stuff that will come eventually, hopefully ... maybe. - code splitting - location state - data integration - diff --git a/lessons/01-setting-up.md b/lessons/01-setting-up/README.md similarity index 83% rename from lessons/01-setting-up.md rename to lessons/01-setting-up/README.md index 2eef8b17..2b100857 100644 --- a/lessons/01-setting-up.md +++ b/lessons/01-setting-up/README.md @@ -11,12 +11,12 @@ up our project. ``` git clone cd react-router-tutorial -git checkout start +cd lessons/01-setting-up npm install npm start ``` -Now open up [http://localhost:8080](http://localhost:8080) +Now open up http://localhost:8080 Feel free to poke around the code to see how we're using webpack and npm scripts to run the app. @@ -30,5 +30,4 @@ Open up `modules/App.js` and change the text to something like "Hello --- -[Next: Rendering a Router](02-rendering-a-router.md) - +[Next: Rendering a Router](../02-rendering-a-route/) diff --git a/lessons/01-setting-up/index.html b/lessons/01-setting-up/index.html new file mode 100644 index 00000000..0a661421 --- /dev/null +++ b/lessons/01-setting-up/index.html @@ -0,0 +1,6 @@ + + + +My First React Router App +
    + diff --git a/lessons/01-setting-up/index.js b/lessons/01-setting-up/index.js new file mode 100644 index 00000000..898eaa43 --- /dev/null +++ b/lessons/01-setting-up/index.js @@ -0,0 +1,4 @@ +import React from 'react' +import { render } from 'react-dom' +import App from './modules/App' +render(, document.getElementById('app')) diff --git a/lessons/01-setting-up/modules/App.js b/lessons/01-setting-up/modules/App.js new file mode 100644 index 00000000..cbbc7217 --- /dev/null +++ b/lessons/01-setting-up/modules/App.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Hello, React Router!
    + } +}) diff --git a/lessons/01-setting-up/package.json b/lessons/01-setting-up/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/01-setting-up/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/01-setting-up/webpack.config.js b/lessons/01-setting-up/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/01-setting-up/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/02-rendering-a-router.md b/lessons/02-rendering-a-route/README.md similarity index 96% rename from lessons/02-rendering-a-router.md rename to lessons/02-rendering-a-route/README.md index 30d7a2f5..8523654d 100644 --- a/lessons/02-rendering-a-router.md +++ b/lessons/02-rendering-a-route/README.md @@ -84,5 +84,4 @@ http://localhost:8080/#/repos --- -[Next: Navigating With Link](03-navigating-with-link.md) - +[Next: Navigating With Link](../03-navigating-with-link/) diff --git a/lessons/02-rendering-a-route/index.html b/lessons/02-rendering-a-route/index.html new file mode 100644 index 00000000..0a661421 --- /dev/null +++ b/lessons/02-rendering-a-route/index.html @@ -0,0 +1,6 @@ + + + +My First React Router App +
    + diff --git a/lessons/02-rendering-a-route/index.js b/lessons/02-rendering-a-route/index.js new file mode 100644 index 00000000..898eaa43 --- /dev/null +++ b/lessons/02-rendering-a-route/index.js @@ -0,0 +1,4 @@ +import React from 'react' +import { render } from 'react-dom' +import App from './modules/App' +render(, document.getElementById('app')) diff --git a/lessons/02-rendering-a-route/modules/App.js b/lessons/02-rendering-a-route/modules/App.js new file mode 100644 index 00000000..cbbc7217 --- /dev/null +++ b/lessons/02-rendering-a-route/modules/App.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Hello, React Router!
    + } +}) diff --git a/lessons/02-rendering-a-route/package.json b/lessons/02-rendering-a-route/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/02-rendering-a-route/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/02-rendering-a-route/webpack.config.js b/lessons/02-rendering-a-route/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/02-rendering-a-route/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/03-navigating-with-link.md b/lessons/03-navigating-with-link/README.md similarity index 93% rename from lessons/03-navigating-with-link.md rename to lessons/03-navigating-with-link/README.md index 213efb20..d1ba62e4 100644 --- a/lessons/03-navigating-with-link.md +++ b/lessons/03-navigating-with-link/README.md @@ -30,5 +30,4 @@ forward. It works! --- -[Next: Nested Routes](04-nested-routes.md) - +[Next: Nested Routes](../04-nested-routes/) diff --git a/lessons/03-navigating-with-link/index.html b/lessons/03-navigating-with-link/index.html new file mode 100644 index 00000000..0a661421 --- /dev/null +++ b/lessons/03-navigating-with-link/index.html @@ -0,0 +1,6 @@ + + + +My First React Router App +
    + diff --git a/lessons/03-navigating-with-link/index.js b/lessons/03-navigating-with-link/index.js new file mode 100644 index 00000000..9310e682 --- /dev/null +++ b/lessons/03-navigating-with-link/index.js @@ -0,0 +1,14 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' + +render(( + + + + + +), document.getElementById('app')) diff --git a/modules/About.js b/lessons/03-navigating-with-link/modules/About.js similarity index 99% rename from modules/About.js rename to lessons/03-navigating-with-link/modules/About.js index 546c5e7c..3bb7d266 100644 --- a/modules/About.js +++ b/lessons/03-navigating-with-link/modules/About.js @@ -5,4 +5,3 @@ export default React.createClass({ return
    About
    } }) - diff --git a/lessons/03-navigating-with-link/modules/App.js b/lessons/03-navigating-with-link/modules/App.js new file mode 100644 index 00000000..cbbc7217 --- /dev/null +++ b/lessons/03-navigating-with-link/modules/App.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Hello, React Router!
    + } +}) diff --git a/lessons/03-navigating-with-link/modules/Repos.js b/lessons/03-navigating-with-link/modules/Repos.js new file mode 100644 index 00000000..528e3434 --- /dev/null +++ b/lessons/03-navigating-with-link/modules/Repos.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Repos
    + } +}) diff --git a/lessons/03-navigating-with-link/package.json b/lessons/03-navigating-with-link/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/03-navigating-with-link/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/03-navigating-with-link/webpack.config.js b/lessons/03-navigating-with-link/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/03-navigating-with-link/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/04-nested-routes.md b/lessons/04-nested-routes/README.md similarity index 98% rename from lessons/04-nested-routes.md rename to lessons/04-nested-routes/README.md index 3e3701a4..c2c98330 100644 --- a/lessons/04-nested-routes.md +++ b/lessons/04-nested-routes/README.md @@ -123,4 +123,4 @@ Okay, now put it back. --- -[Next: Active Links](05-active-links.md) +[Next: Active Links](../05-active-links/) diff --git a/lessons/04-nested-routes/index.html b/lessons/04-nested-routes/index.html new file mode 100644 index 00000000..0a661421 --- /dev/null +++ b/lessons/04-nested-routes/index.html @@ -0,0 +1,6 @@ + + + +My First React Router App +
    + diff --git a/lessons/04-nested-routes/index.js b/lessons/04-nested-routes/index.js new file mode 100644 index 00000000..9310e682 --- /dev/null +++ b/lessons/04-nested-routes/index.js @@ -0,0 +1,14 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' + +render(( + + + + + +), document.getElementById('app')) diff --git a/lessons/04-nested-routes/modules/About.js b/lessons/04-nested-routes/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/04-nested-routes/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/04-nested-routes/modules/App.js b/lessons/04-nested-routes/modules/App.js new file mode 100644 index 00000000..70d49928 --- /dev/null +++ b/lessons/04-nested-routes/modules/App.js @@ -0,0 +1,16 @@ +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    +
    + ) + } +}) diff --git a/lessons/04-nested-routes/modules/Repos.js b/lessons/04-nested-routes/modules/Repos.js new file mode 100644 index 00000000..528e3434 --- /dev/null +++ b/lessons/04-nested-routes/modules/Repos.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Repos
    + } +}) diff --git a/lessons/04-nested-routes/package.json b/lessons/04-nested-routes/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/04-nested-routes/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/04-nested-routes/webpack.config.js b/lessons/04-nested-routes/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/04-nested-routes/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/05-active-links.md b/lessons/05-active-links/README.md similarity index 98% rename from lessons/05-active-links.md rename to lessons/05-active-links/README.md index 731c8346..eea611d9 100644 --- a/lessons/05-active-links.md +++ b/lessons/05-active-links/README.md @@ -81,5 +81,4 @@ Oh, how beautiful upon the renders is the composability of components. --- -[Next: Params](06-params.md) - +[Next: Params](../06-params/) diff --git a/lessons/05-active-links/index.html b/lessons/05-active-links/index.html new file mode 100644 index 00000000..0a661421 --- /dev/null +++ b/lessons/05-active-links/index.html @@ -0,0 +1,6 @@ + + + +My First React Router App +
    + diff --git a/lessons/05-active-links/index.js b/lessons/05-active-links/index.js new file mode 100644 index 00000000..25f9e303 --- /dev/null +++ b/lessons/05-active-links/index.js @@ -0,0 +1,15 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' + +render(( + + + + + + +), document.getElementById('app')) diff --git a/lessons/05-active-links/modules/About.js b/lessons/05-active-links/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/05-active-links/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/05-active-links/modules/App.js b/lessons/05-active-links/modules/App.js new file mode 100644 index 00000000..f3867803 --- /dev/null +++ b/lessons/05-active-links/modules/App.js @@ -0,0 +1,17 @@ +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/05-active-links/modules/Repos.js b/lessons/05-active-links/modules/Repos.js new file mode 100644 index 00000000..528e3434 --- /dev/null +++ b/lessons/05-active-links/modules/Repos.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Repos
    + } +}) diff --git a/lessons/05-active-links/package.json b/lessons/05-active-links/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/05-active-links/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/05-active-links/webpack.config.js b/lessons/05-active-links/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/05-active-links/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/06-params.md b/lessons/06-params/README.md similarity index 97% rename from lessons/06-params.md rename to lessons/06-params/README.md index 1554f465..77fd4b7d 100644 --- a/lessons/06-params.md +++ b/lessons/06-params/README.md @@ -91,5 +91,4 @@ later. --- -[Next: More Nesting](07-more-nesting.md) - +[Next: More Nesting](../07-more-nesting/) diff --git a/public/index.css b/lessons/06-params/index.css similarity index 96% rename from public/index.css rename to lessons/06-params/index.css index fe9d7942..81c8ae63 100644 --- a/public/index.css +++ b/lessons/06-params/index.css @@ -1,4 +1,3 @@ .active { color: green; } - diff --git a/lessons/06-params/index.html b/lessons/06-params/index.html new file mode 100644 index 00000000..fef00c97 --- /dev/null +++ b/lessons/06-params/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App + +
    + diff --git a/lessons/06-params/index.js b/lessons/06-params/index.js new file mode 100644 index 00000000..25f9e303 --- /dev/null +++ b/lessons/06-params/index.js @@ -0,0 +1,15 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' + +render(( + + + + + + +), document.getElementById('app')) diff --git a/lessons/06-params/modules/About.js b/lessons/06-params/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/06-params/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/06-params/modules/App.js b/lessons/06-params/modules/App.js new file mode 100644 index 00000000..c644187d --- /dev/null +++ b/lessons/06-params/modules/App.js @@ -0,0 +1,17 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/modules/NavLink.js b/lessons/06-params/modules/NavLink.js similarity index 99% rename from modules/NavLink.js rename to lessons/06-params/modules/NavLink.js index a31a6c5d..dc747518 100644 --- a/modules/NavLink.js +++ b/lessons/06-params/modules/NavLink.js @@ -7,4 +7,3 @@ export default React.createClass({ return } }) - diff --git a/lessons/06-params/modules/Repos.js b/lessons/06-params/modules/Repos.js new file mode 100644 index 00000000..528e3434 --- /dev/null +++ b/lessons/06-params/modules/Repos.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Repos
    + } +}) diff --git a/lessons/06-params/package.json b/lessons/06-params/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/06-params/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/06-params/webpack.config.js b/lessons/06-params/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/06-params/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/07-more-nesting.md b/lessons/07-more-nesting/README.md similarity index 96% rename from lessons/07-more-nesting.md rename to lessons/07-more-nesting/README.md index b2c22872..20ac8c23 100644 --- a/lessons/07-more-nesting.md +++ b/lessons/07-more-nesting/README.md @@ -53,5 +53,4 @@ both active? When child routes are active, so are the parents. --- -[Next: Index Routes](08-index-routes.md) - +[Next: Index Routes](../08-index-routes/) diff --git a/lessons/07-more-nesting/index.css b/lessons/07-more-nesting/index.css new file mode 100644 index 00000000..81c8ae63 --- /dev/null +++ b/lessons/07-more-nesting/index.css @@ -0,0 +1,3 @@ +.active { + color: green; +} diff --git a/lessons/07-more-nesting/index.html b/lessons/07-more-nesting/index.html new file mode 100644 index 00000000..fef00c97 --- /dev/null +++ b/lessons/07-more-nesting/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App + +
    + diff --git a/lessons/07-more-nesting/index.js b/lessons/07-more-nesting/index.js new file mode 100644 index 00000000..95a876e5 --- /dev/null +++ b/lessons/07-more-nesting/index.js @@ -0,0 +1,17 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' + +render(( + + + + + + + +), document.getElementById('app')) diff --git a/lessons/07-more-nesting/modules/About.js b/lessons/07-more-nesting/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/07-more-nesting/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/07-more-nesting/modules/App.js b/lessons/07-more-nesting/modules/App.js new file mode 100644 index 00000000..c644187d --- /dev/null +++ b/lessons/07-more-nesting/modules/App.js @@ -0,0 +1,17 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/07-more-nesting/modules/NavLink.js b/lessons/07-more-nesting/modules/NavLink.js new file mode 100644 index 00000000..dc747518 --- /dev/null +++ b/lessons/07-more-nesting/modules/NavLink.js @@ -0,0 +1,9 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) diff --git a/lessons/07-more-nesting/modules/Repo.js b/lessons/07-more-nesting/modules/Repo.js new file mode 100644 index 00000000..20a88cef --- /dev/null +++ b/lessons/07-more-nesting/modules/Repo.js @@ -0,0 +1,11 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) diff --git a/lessons/07-more-nesting/modules/Repos.js b/lessons/07-more-nesting/modules/Repos.js new file mode 100644 index 00000000..dd6050b6 --- /dev/null +++ b/lessons/07-more-nesting/modules/Repos.js @@ -0,0 +1,16 @@ +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    +
    + ) + } +}) diff --git a/lessons/07-more-nesting/package.json b/lessons/07-more-nesting/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/07-more-nesting/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/07-more-nesting/webpack.config.js b/lessons/07-more-nesting/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/07-more-nesting/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/08-index-routes.md b/lessons/08-index-routes/README.md similarity index 98% rename from lessons/08-index-routes.md rename to lessons/08-index-routes/README.md index 5f6c0cbe..5e2434e4 100644 --- a/lessons/08-index-routes.md +++ b/lessons/08-index-routes/README.md @@ -83,5 +83,4 @@ an index route if a route's path matches exactly. --- -[Next: Index Links](09-index-links.md) - +[Next: Index Links](../09-index-links/) diff --git a/lessons/08-index-routes/index.css b/lessons/08-index-routes/index.css new file mode 100644 index 00000000..81c8ae63 --- /dev/null +++ b/lessons/08-index-routes/index.css @@ -0,0 +1,3 @@ +.active { + color: green; +} diff --git a/lessons/08-index-routes/index.html b/lessons/08-index-routes/index.html new file mode 100644 index 00000000..fef00c97 --- /dev/null +++ b/lessons/08-index-routes/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App + +
    + diff --git a/lessons/08-index-routes/index.js b/lessons/08-index-routes/index.js new file mode 100644 index 00000000..ddc3f588 --- /dev/null +++ b/lessons/08-index-routes/index.js @@ -0,0 +1,18 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' + +render(( + + + + + + + + +), document.getElementById('app')) diff --git a/lessons/08-index-routes/modules/About.js b/lessons/08-index-routes/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/08-index-routes/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/08-index-routes/modules/App.js b/lessons/08-index-routes/modules/App.js new file mode 100644 index 00000000..c644187d --- /dev/null +++ b/lessons/08-index-routes/modules/App.js @@ -0,0 +1,17 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/08-index-routes/modules/NavLink.js b/lessons/08-index-routes/modules/NavLink.js new file mode 100644 index 00000000..dc747518 --- /dev/null +++ b/lessons/08-index-routes/modules/NavLink.js @@ -0,0 +1,9 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) diff --git a/lessons/08-index-routes/modules/Repo.js b/lessons/08-index-routes/modules/Repo.js new file mode 100644 index 00000000..20a88cef --- /dev/null +++ b/lessons/08-index-routes/modules/Repo.js @@ -0,0 +1,11 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) diff --git a/lessons/08-index-routes/modules/Repos.js b/lessons/08-index-routes/modules/Repos.js new file mode 100644 index 00000000..6393673f --- /dev/null +++ b/lessons/08-index-routes/modules/Repos.js @@ -0,0 +1,17 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/08-index-routes/package.json b/lessons/08-index-routes/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/08-index-routes/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/08-index-routes/webpack.config.js b/lessons/08-index-routes/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/08-index-routes/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/09-index-links.md b/lessons/09-index-links/README.md similarity index 97% rename from lessons/09-index-links.md rename to lessons/09-index-links/README.md index aa98fd5b..15a2cff9 100644 --- a/lessons/09-index-links.md +++ b/lessons/09-index-links/README.md @@ -54,5 +54,4 @@ a `NavLink` and it will make its way down to the `Link`: --- -[Next: Clean URLs](10-clean-urls.md) - +[Next: Clean URLs](../10-clean-urls/) diff --git a/lessons/09-index-links/index.css b/lessons/09-index-links/index.css new file mode 100644 index 00000000..81c8ae63 --- /dev/null +++ b/lessons/09-index-links/index.css @@ -0,0 +1,3 @@ +.active { + color: green; +} diff --git a/lessons/09-index-links/index.html b/lessons/09-index-links/index.html new file mode 100644 index 00000000..fef00c97 --- /dev/null +++ b/lessons/09-index-links/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App + +
    + diff --git a/lessons/09-index-links/index.js b/lessons/09-index-links/index.js new file mode 100644 index 00000000..a9fed24f --- /dev/null +++ b/lessons/09-index-links/index.js @@ -0,0 +1,20 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) diff --git a/lessons/09-index-links/modules/About.js b/lessons/09-index-links/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/09-index-links/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/09-index-links/modules/App.js b/lessons/09-index-links/modules/App.js new file mode 100644 index 00000000..c644187d --- /dev/null +++ b/lessons/09-index-links/modules/App.js @@ -0,0 +1,17 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/modules/Home.js b/lessons/09-index-links/modules/Home.js similarity index 99% rename from modules/Home.js rename to lessons/09-index-links/modules/Home.js index 1ae39730..c9390259 100644 --- a/modules/Home.js +++ b/lessons/09-index-links/modules/Home.js @@ -5,4 +5,3 @@ export default React.createClass({ return
    Home
    } }) - diff --git a/lessons/09-index-links/modules/NavLink.js b/lessons/09-index-links/modules/NavLink.js new file mode 100644 index 00000000..dc747518 --- /dev/null +++ b/lessons/09-index-links/modules/NavLink.js @@ -0,0 +1,9 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) diff --git a/lessons/09-index-links/modules/Repo.js b/lessons/09-index-links/modules/Repo.js new file mode 100644 index 00000000..20a88cef --- /dev/null +++ b/lessons/09-index-links/modules/Repo.js @@ -0,0 +1,11 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) diff --git a/lessons/09-index-links/modules/Repos.js b/lessons/09-index-links/modules/Repos.js new file mode 100644 index 00000000..6393673f --- /dev/null +++ b/lessons/09-index-links/modules/Repos.js @@ -0,0 +1,17 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/09-index-links/package.json b/lessons/09-index-links/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/09-index-links/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/09-index-links/webpack.config.js b/lessons/09-index-links/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/09-index-links/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/10-clean-urls.md b/lessons/10-clean-urls/README.md similarity index 94% rename from lessons/10-clean-urls.md rename to lessons/10-clean-urls/README.md index f88ebe75..5bb13c5f 100644 --- a/lessons/10-clean-urls.md +++ b/lessons/10-clean-urls/README.md @@ -40,7 +40,7 @@ because your app, in the browser, is manipulating the url. Our current server doesn't know how to handle the URL. The Webpack Dev Server has an option to enable this. Open up -`package.json` and add `--history-fallback-api`. +`package.json` and add `--history-api-fallback`. ```json "start": "webpack-dev-server --inline --content-base . --history-api-fallback" @@ -64,5 +64,4 @@ clean urls :) --- -[Next: Production-ish Server](11-productionish-server.md) - +[Next: Production-ish Server](../11-productionish-server/) diff --git a/lessons/10-clean-urls/index.css b/lessons/10-clean-urls/index.css new file mode 100644 index 00000000..81c8ae63 --- /dev/null +++ b/lessons/10-clean-urls/index.css @@ -0,0 +1,3 @@ +.active { + color: green; +} diff --git a/lessons/10-clean-urls/index.html b/lessons/10-clean-urls/index.html new file mode 100644 index 00000000..fef00c97 --- /dev/null +++ b/lessons/10-clean-urls/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App + +
    + diff --git a/lessons/10-clean-urls/index.js b/lessons/10-clean-urls/index.js new file mode 100644 index 00000000..a9fed24f --- /dev/null +++ b/lessons/10-clean-urls/index.js @@ -0,0 +1,20 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) diff --git a/lessons/10-clean-urls/modules/About.js b/lessons/10-clean-urls/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/10-clean-urls/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/modules/App.js b/lessons/10-clean-urls/modules/App.js similarity index 99% rename from modules/App.js rename to lessons/10-clean-urls/modules/App.js index 346b6549..bbef4f0e 100644 --- a/modules/App.js +++ b/lessons/10-clean-urls/modules/App.js @@ -16,4 +16,3 @@ export default React.createClass({ ) } }) - diff --git a/lessons/10-clean-urls/modules/Home.js b/lessons/10-clean-urls/modules/Home.js new file mode 100644 index 00000000..c9390259 --- /dev/null +++ b/lessons/10-clean-urls/modules/Home.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) diff --git a/lessons/10-clean-urls/modules/NavLink.js b/lessons/10-clean-urls/modules/NavLink.js new file mode 100644 index 00000000..dc747518 --- /dev/null +++ b/lessons/10-clean-urls/modules/NavLink.js @@ -0,0 +1,9 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) diff --git a/lessons/10-clean-urls/modules/Repo.js b/lessons/10-clean-urls/modules/Repo.js new file mode 100644 index 00000000..20a88cef --- /dev/null +++ b/lessons/10-clean-urls/modules/Repo.js @@ -0,0 +1,11 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) diff --git a/lessons/10-clean-urls/modules/Repos.js b/lessons/10-clean-urls/modules/Repos.js new file mode 100644 index 00000000..6393673f --- /dev/null +++ b/lessons/10-clean-urls/modules/Repos.js @@ -0,0 +1,17 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/10-clean-urls/package.json b/lessons/10-clean-urls/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/lessons/10-clean-urls/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/10-clean-urls/webpack.config.js b/lessons/10-clean-urls/webpack.config.js new file mode 100644 index 00000000..c5866620 --- /dev/null +++ b/lessons/10-clean-urls/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/11-productionish-server.md b/lessons/11-productionish-server/README.md similarity index 99% rename from lessons/11-productionish-server.md rename to lessons/11-productionish-server/README.md index b0013dab..585a1f8a 100644 --- a/lessons/11-productionish-server.md +++ b/lessons/11-productionish-server/README.md @@ -155,5 +155,4 @@ the assets are being served with gzip compression. --- -[Next: Navigating](12-navigating.md) - +[Next: Navigating](../12-navigating/) diff --git a/lessons/11-productionish-server/index.css b/lessons/11-productionish-server/index.css new file mode 100644 index 00000000..81c8ae63 --- /dev/null +++ b/lessons/11-productionish-server/index.css @@ -0,0 +1,3 @@ +.active { + color: green; +} diff --git a/public/index.html b/lessons/11-productionish-server/index.html similarity index 99% rename from public/index.html rename to lessons/11-productionish-server/index.html index 70033e42..28762289 100644 --- a/public/index.html +++ b/lessons/11-productionish-server/index.html @@ -5,4 +5,3 @@
    - diff --git a/lessons/11-productionish-server/index.js b/lessons/11-productionish-server/index.js new file mode 100644 index 00000000..a2f8b134 --- /dev/null +++ b/lessons/11-productionish-server/index.js @@ -0,0 +1,20 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, browserHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) diff --git a/lessons/11-productionish-server/modules/About.js b/lessons/11-productionish-server/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/11-productionish-server/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/11-productionish-server/modules/App.js b/lessons/11-productionish-server/modules/App.js new file mode 100644 index 00000000..bbef4f0e --- /dev/null +++ b/lessons/11-productionish-server/modules/App.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • Home
    • +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/11-productionish-server/modules/Home.js b/lessons/11-productionish-server/modules/Home.js new file mode 100644 index 00000000..c9390259 --- /dev/null +++ b/lessons/11-productionish-server/modules/Home.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) diff --git a/lessons/11-productionish-server/modules/NavLink.js b/lessons/11-productionish-server/modules/NavLink.js new file mode 100644 index 00000000..dc747518 --- /dev/null +++ b/lessons/11-productionish-server/modules/NavLink.js @@ -0,0 +1,9 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) diff --git a/lessons/11-productionish-server/modules/Repo.js b/lessons/11-productionish-server/modules/Repo.js new file mode 100644 index 00000000..20a88cef --- /dev/null +++ b/lessons/11-productionish-server/modules/Repo.js @@ -0,0 +1,11 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) diff --git a/lessons/11-productionish-server/modules/Repos.js b/lessons/11-productionish-server/modules/Repos.js new file mode 100644 index 00000000..6393673f --- /dev/null +++ b/lessons/11-productionish-server/modules/Repos.js @@ -0,0 +1,17 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/11-productionish-server/package.json b/lessons/11-productionish-server/package.json new file mode 100644 index 00000000..9bb35e8f --- /dev/null +++ b/lessons/11-productionish-server/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base . --history-api-fallback" + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/11-productionish-server/webpack.config.js b/lessons/11-productionish-server/webpack.config.js new file mode 100644 index 00000000..7bb21eeb --- /dev/null +++ b/lessons/11-productionish-server/webpack.config.js @@ -0,0 +1,14 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '/' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/12-navigating.md b/lessons/12-navigating/README.md similarity index 95% rename from lessons/12-navigating.md rename to lessons/12-navigating/README.md index f960c907..58986bfe 100644 --- a/lessons/12-navigating.md +++ b/lessons/12-navigating/README.md @@ -4,7 +4,7 @@ While most navigation happens with `Link`, you can programatically navigate around an application in response to form submissions, button clicks, etc. -Let's make a little form in `Repos` that progromatically navigates. +Let's make a little form in `Repos` that programatically navigates. ```js // modules/Repos.js @@ -98,5 +98,4 @@ stub context than singletons. --- -[Next: Server Rendering](13-server-rendering.md) - +[Next: Server Rendering](../13-server-rendering/) diff --git a/lessons/12-navigating/index.js b/lessons/12-navigating/index.js new file mode 100644 index 00000000..a2f8b134 --- /dev/null +++ b/lessons/12-navigating/index.js @@ -0,0 +1,20 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, browserHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) diff --git a/lessons/12-navigating/modules/About.js b/lessons/12-navigating/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/12-navigating/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/12-navigating/modules/App.js b/lessons/12-navigating/modules/App.js new file mode 100644 index 00000000..bbef4f0e --- /dev/null +++ b/lessons/12-navigating/modules/App.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • Home
    • +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/12-navigating/modules/Home.js b/lessons/12-navigating/modules/Home.js new file mode 100644 index 00000000..c9390259 --- /dev/null +++ b/lessons/12-navigating/modules/Home.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) diff --git a/lessons/12-navigating/modules/NavLink.js b/lessons/12-navigating/modules/NavLink.js new file mode 100644 index 00000000..dc747518 --- /dev/null +++ b/lessons/12-navigating/modules/NavLink.js @@ -0,0 +1,9 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) diff --git a/lessons/12-navigating/modules/Repo.js b/lessons/12-navigating/modules/Repo.js new file mode 100644 index 00000000..20a88cef --- /dev/null +++ b/lessons/12-navigating/modules/Repo.js @@ -0,0 +1,11 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) diff --git a/lessons/12-navigating/modules/Repos.js b/lessons/12-navigating/modules/Repos.js new file mode 100644 index 00000000..6393673f --- /dev/null +++ b/lessons/12-navigating/modules/Repos.js @@ -0,0 +1,17 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/12-navigating/package.json b/lessons/12-navigating/package.json new file mode 100644 index 00000000..2cb49262 --- /dev/null +++ b/lessons/12-navigating/package.json @@ -0,0 +1,29 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", + "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", + "start:prod": "webpack && node server.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "compression": "^1.6.1", + "if-env": "^1.0.0", + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/12-navigating/public/index.css b/lessons/12-navigating/public/index.css new file mode 100644 index 00000000..81c8ae63 --- /dev/null +++ b/lessons/12-navigating/public/index.css @@ -0,0 +1,3 @@ +.active { + color: green; +} diff --git a/lessons/12-navigating/public/index.html b/lessons/12-navigating/public/index.html new file mode 100644 index 00000000..28762289 --- /dev/null +++ b/lessons/12-navigating/public/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App + +
    + diff --git a/lessons/12-navigating/server.js b/lessons/12-navigating/server.js new file mode 100644 index 00000000..414e3595 --- /dev/null +++ b/lessons/12-navigating/server.js @@ -0,0 +1,20 @@ +var express = require('express') +var path = require('path') +var compression = require('compression') + +var app = express() + +app.use(compression()) + +// serve our static stuff like index.css +app.use(express.static(path.join(__dirname, 'public'))) + +// send all requests to index.html so browserHistory works +app.get('*', function (req, res) { + res.sendFile(path.join(__dirname, 'public', 'index.html')) +}) + +var PORT = process.env.PORT || 8080 +app.listen(PORT, function() { + console.log('Production Express server running at localhost:' + PORT) +}) diff --git a/webpack.config.js b/lessons/12-navigating/webpack.config.js similarity index 99% rename from webpack.config.js rename to lessons/12-navigating/webpack.config.js index a48b0ce8..fe766a23 100644 --- a/webpack.config.js +++ b/lessons/12-navigating/webpack.config.js @@ -21,4 +21,3 @@ module.exports = { ] } } - diff --git a/lessons/13-server-rendering.md b/lessons/13-server-rendering/README.md similarity index 99% rename from lessons/13-server-rendering.md rename to lessons/13-server-rendering/README.md index c3e44c34..d1020dc7 100644 --- a/lessons/13-server-rendering.md +++ b/lessons/13-server-rendering/README.md @@ -222,5 +222,4 @@ dropping you off at the bleeding edge. --- -[Next: What's Next?](14-whats-next.md) - +[Next: What's Next?](../14-whats-next/) diff --git a/lessons/13-server-rendering/index.js b/lessons/13-server-rendering/index.js new file mode 100644 index 00000000..a2f8b134 --- /dev/null +++ b/lessons/13-server-rendering/index.js @@ -0,0 +1,20 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, browserHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) diff --git a/lessons/13-server-rendering/modules/About.js b/lessons/13-server-rendering/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/13-server-rendering/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/13-server-rendering/modules/App.js b/lessons/13-server-rendering/modules/App.js new file mode 100644 index 00000000..bbef4f0e --- /dev/null +++ b/lessons/13-server-rendering/modules/App.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • Home
    • +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/13-server-rendering/modules/Home.js b/lessons/13-server-rendering/modules/Home.js new file mode 100644 index 00000000..c9390259 --- /dev/null +++ b/lessons/13-server-rendering/modules/Home.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) diff --git a/lessons/13-server-rendering/modules/NavLink.js b/lessons/13-server-rendering/modules/NavLink.js new file mode 100644 index 00000000..dc747518 --- /dev/null +++ b/lessons/13-server-rendering/modules/NavLink.js @@ -0,0 +1,9 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) diff --git a/modules/Repo.js b/lessons/13-server-rendering/modules/Repo.js similarity index 99% rename from modules/Repo.js rename to lessons/13-server-rendering/modules/Repo.js index 6e14ba84..f6246dc4 100644 --- a/modules/Repo.js +++ b/lessons/13-server-rendering/modules/Repo.js @@ -10,4 +10,3 @@ export default React.createClass({ ) } }) - diff --git a/modules/Repos.js b/lessons/13-server-rendering/modules/Repos.js similarity index 99% rename from modules/Repos.js rename to lessons/13-server-rendering/modules/Repos.js index 96fb4334..a097fb7d 100644 --- a/modules/Repos.js +++ b/lessons/13-server-rendering/modules/Repos.js @@ -34,4 +34,3 @@ export default React.createClass({ ) } }) - diff --git a/lessons/13-server-rendering/package.json b/lessons/13-server-rendering/package.json new file mode 100644 index 00000000..2cb49262 --- /dev/null +++ b/lessons/13-server-rendering/package.json @@ -0,0 +1,29 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", + "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", + "start:prod": "webpack && node server.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "compression": "^1.6.1", + "if-env": "^1.0.0", + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/lessons/13-server-rendering/public/index.css b/lessons/13-server-rendering/public/index.css new file mode 100644 index 00000000..81c8ae63 --- /dev/null +++ b/lessons/13-server-rendering/public/index.css @@ -0,0 +1,3 @@ +.active { + color: green; +} diff --git a/lessons/13-server-rendering/public/index.html b/lessons/13-server-rendering/public/index.html new file mode 100644 index 00000000..28762289 --- /dev/null +++ b/lessons/13-server-rendering/public/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App + +
    + diff --git a/lessons/13-server-rendering/server.js b/lessons/13-server-rendering/server.js new file mode 100644 index 00000000..414e3595 --- /dev/null +++ b/lessons/13-server-rendering/server.js @@ -0,0 +1,20 @@ +var express = require('express') +var path = require('path') +var compression = require('compression') + +var app = express() + +app.use(compression()) + +// serve our static stuff like index.css +app.use(express.static(path.join(__dirname, 'public'))) + +// send all requests to index.html so browserHistory works +app.get('*', function (req, res) { + res.sendFile(path.join(__dirname, 'public', 'index.html')) +}) + +var PORT = process.env.PORT || 8080 +app.listen(PORT, function() { + console.log('Production Express server running at localhost:' + PORT) +}) diff --git a/lessons/13-server-rendering/webpack.config.js b/lessons/13-server-rendering/webpack.config.js new file mode 100644 index 00000000..fe766a23 --- /dev/null +++ b/lessons/13-server-rendering/webpack.config.js @@ -0,0 +1,23 @@ +var webpack = require('webpack') + +module.exports = { + entry: './index.js', + + output: { + path: 'public', + filename: 'bundle.js', + publicPath: '/' + }, + + plugins: process.env.NODE_ENV === 'production' ? [ + new webpack.optimize.DedupePlugin(), + new webpack.optimize.OccurrenceOrderPlugin(), + new webpack.optimize.UglifyJsPlugin() + ] : [], + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/lessons/14-whats-next.md b/lessons/14-whats-next/README.md similarity index 100% rename from lessons/14-whats-next.md rename to lessons/14-whats-next/README.md diff --git a/index.js b/lessons/14-whats-next/index.js similarity index 99% rename from index.js rename to lessons/14-whats-next/index.js index 51a72600..c58ede33 100644 --- a/index.js +++ b/lessons/14-whats-next/index.js @@ -7,4 +7,3 @@ render( , document.getElementById('app') ) - diff --git a/lessons/14-whats-next/modules/About.js b/lessons/14-whats-next/modules/About.js new file mode 100644 index 00000000..3bb7d266 --- /dev/null +++ b/lessons/14-whats-next/modules/About.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) diff --git a/lessons/14-whats-next/modules/App.js b/lessons/14-whats-next/modules/App.js new file mode 100644 index 00000000..bbef4f0e --- /dev/null +++ b/lessons/14-whats-next/modules/App.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • Home
    • +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/lessons/14-whats-next/modules/Home.js b/lessons/14-whats-next/modules/Home.js new file mode 100644 index 00000000..c9390259 --- /dev/null +++ b/lessons/14-whats-next/modules/Home.js @@ -0,0 +1,7 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) diff --git a/lessons/14-whats-next/modules/NavLink.js b/lessons/14-whats-next/modules/NavLink.js new file mode 100644 index 00000000..dc747518 --- /dev/null +++ b/lessons/14-whats-next/modules/NavLink.js @@ -0,0 +1,9 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) diff --git a/lessons/14-whats-next/modules/Repo.js b/lessons/14-whats-next/modules/Repo.js new file mode 100644 index 00000000..f6246dc4 --- /dev/null +++ b/lessons/14-whats-next/modules/Repo.js @@ -0,0 +1,12 @@ +import React from 'react' + +export default React.createClass({ + render() { + const { userName, repoName } = this.props.params + return ( +
    +

    {userName} / {repoName}

    +
    + ) + } +}) diff --git a/lessons/14-whats-next/modules/Repos.js b/lessons/14-whats-next/modules/Repos.js new file mode 100644 index 00000000..a097fb7d --- /dev/null +++ b/lessons/14-whats-next/modules/Repos.js @@ -0,0 +1,36 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + contextTypes: { + router: React.PropTypes.object + }, + + handleSubmit(event) { + event.preventDefault() + const userName = event.target.elements[0].value + const repo = event.target.elements[1].value + const path = `/repos/${userName}/${repo}` + this.context.router.push(path) + }, + + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    • +
      + / {' '} + {' '} + +
      +
    • +
    + {this.props.children} +
    + ) + } +}) diff --git a/modules/routes.js b/lessons/14-whats-next/modules/routes.js similarity index 100% rename from modules/routes.js rename to lessons/14-whats-next/modules/routes.js diff --git a/package.json b/lessons/14-whats-next/package.json similarity index 100% rename from package.json rename to lessons/14-whats-next/package.json diff --git a/lessons/14-whats-next/public/index.css b/lessons/14-whats-next/public/index.css new file mode 100644 index 00000000..81c8ae63 --- /dev/null +++ b/lessons/14-whats-next/public/index.css @@ -0,0 +1,3 @@ +.active { + color: green; +} diff --git a/lessons/14-whats-next/public/index.html b/lessons/14-whats-next/public/index.html new file mode 100644 index 00000000..28762289 --- /dev/null +++ b/lessons/14-whats-next/public/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App + +
    + diff --git a/server.js b/lessons/14-whats-next/server.js similarity index 99% rename from server.js rename to lessons/14-whats-next/server.js index b9ac9773..34096ceb 100644 --- a/server.js +++ b/lessons/14-whats-next/server.js @@ -46,4 +46,3 @@ var PORT = process.env.PORT || 8080 app.listen(PORT, function() { console.log('Production Express server running at localhost:' + PORT) }) - diff --git a/lessons/14-whats-next/webpack.config.js b/lessons/14-whats-next/webpack.config.js new file mode 100644 index 00000000..fe766a23 --- /dev/null +++ b/lessons/14-whats-next/webpack.config.js @@ -0,0 +1,23 @@ +var webpack = require('webpack') + +module.exports = { + entry: './index.js', + + output: { + path: 'public', + filename: 'bundle.js', + publicPath: '/' + }, + + plugins: process.env.NODE_ENV === 'production' ? [ + new webpack.optimize.DedupePlugin(), + new webpack.optimize.OccurrenceOrderPlugin(), + new webpack.optimize.UglifyJsPlugin() + ] : [], + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} diff --git a/webpack.server.config.js b/lessons/14-whats-next/webpack.server.config.js similarity index 99% rename from webpack.server.config.js rename to lessons/14-whats-next/webpack.server.config.js index 4350279f..b81b4383 100644 --- a/webpack.server.config.js +++ b/lessons/14-whats-next/webpack.server.config.js @@ -31,4 +31,3 @@ module.exports = { } } - From 07a3113bfe4763ceabde1b044c2ac4c90e5f3a21 Mon Sep 17 00:00:00 2001 From: florida Date: Tue, 8 Mar 2016 11:24:57 -0800 Subject: [PATCH 17/19] add code folder to contain all the code/exercises for each lessons --- code/01-setting-up/index.html | 7 +++ code/01-setting-up/index.js | 4 ++ code/01-setting-up/modules/App.js | 8 +++ code/01-setting-up/package.json | 25 ++++++++++ code/01-setting-up/webpack.config.js | 15 ++++++ code/02-rendering-a-router/index.html | 7 +++ code/02-rendering-a-router/index.js | 4 ++ code/02-rendering-a-router/modules/App.js | 8 +++ code/02-rendering-a-router/package.json | 25 ++++++++++ code/02-rendering-a-router/webpack.config.js | 15 ++++++ code/03-navigating-with-link/index.html | 7 +++ code/03-navigating-with-link/index.js | 15 ++++++ code/03-navigating-with-link/modules/About.js | 8 +++ code/03-navigating-with-link/modules/App.js | 8 +++ code/03-navigating-with-link/modules/Repos.js | 8 +++ code/03-navigating-with-link/package.json | 25 ++++++++++ .../03-navigating-with-link/webpack.config.js | 15 ++++++ code/04-nested-routes/index.html | 7 +++ code/04-nested-routes/index.js | 15 ++++++ code/04-nested-routes/modules/About.js | 8 +++ code/04-nested-routes/modules/App.js | 17 +++++++ code/04-nested-routes/modules/Repos.js | 8 +++ code/04-nested-routes/package.json | 25 ++++++++++ code/04-nested-routes/webpack.config.js | 15 ++++++ code/05-active-links/index.html | 7 +++ code/05-active-links/index.js | 16 ++++++ code/05-active-links/modules/About.js | 8 +++ code/05-active-links/modules/App.js | 18 +++++++ code/05-active-links/modules/Repos.js | 8 +++ code/05-active-links/package.json | 25 ++++++++++ code/05-active-links/webpack.config.js | 15 ++++++ code/06-params/index.css | 4 ++ code/06-params/index.html | 8 +++ code/06-params/index.js | 16 ++++++ code/06-params/modules/About.js | 8 +++ code/06-params/modules/App.js | 18 +++++++ code/06-params/modules/NavLink.js | 10 ++++ code/06-params/modules/Repos.js | 8 +++ code/06-params/package.json | 25 ++++++++++ code/06-params/webpack.config.js | 15 ++++++ code/07-more-nesting/index.css | 4 ++ code/07-more-nesting/index.html | 8 +++ code/07-more-nesting/index.js | 18 +++++++ code/07-more-nesting/modules/About.js | 8 +++ code/07-more-nesting/modules/App.js | 18 +++++++ code/07-more-nesting/modules/NavLink.js | 10 ++++ code/07-more-nesting/modules/Repo.js | 12 +++++ code/07-more-nesting/modules/Repos.js | 17 +++++++ code/07-more-nesting/package.json | 25 ++++++++++ code/07-more-nesting/webpack.config.js | 15 ++++++ code/08-index-routes/index.css | 4 ++ code/08-index-routes/index.html | 8 +++ code/08-index-routes/index.js | 19 +++++++ code/08-index-routes/modules/About.js | 8 +++ code/08-index-routes/modules/App.js | 18 +++++++ code/08-index-routes/modules/NavLink.js | 10 ++++ code/08-index-routes/modules/Repo.js | 12 +++++ code/08-index-routes/modules/Repos.js | 18 +++++++ code/08-index-routes/package.json | 25 ++++++++++ code/08-index-routes/webpack.config.js | 15 ++++++ code/09-index-links/index.css | 4 ++ code/09-index-links/index.html | 8 +++ code/09-index-links/index.js | 21 ++++++++ code/09-index-links/modules/About.js | 8 +++ code/09-index-links/modules/App.js | 18 +++++++ code/09-index-links/modules/Home.js | 8 +++ code/09-index-links/modules/NavLink.js | 10 ++++ code/09-index-links/modules/Repo.js | 12 +++++ code/09-index-links/modules/Repos.js | 18 +++++++ code/09-index-links/package.json | 25 ++++++++++ code/09-index-links/webpack.config.js | 15 ++++++ code/10-clean-urls/index.css | 4 ++ code/10-clean-urls/index.html | 8 +++ code/10-clean-urls/index.js | 21 ++++++++ code/10-clean-urls/modules/About.js | 8 +++ code/10-clean-urls/modules/App.js | 19 +++++++ code/10-clean-urls/modules/Home.js | 8 +++ code/10-clean-urls/modules/NavLink.js | 10 ++++ code/10-clean-urls/modules/Repo.js | 12 +++++ code/10-clean-urls/modules/Repos.js | 18 +++++++ code/10-clean-urls/package.json | 25 ++++++++++ code/10-clean-urls/webpack.config.js | 15 ++++++ code/11-productionish-server/index.css | 4 ++ code/11-productionish-server/index.html | 8 +++ code/11-productionish-server/index.js | 21 ++++++++ code/11-productionish-server/modules/About.js | 8 +++ code/11-productionish-server/modules/App.js | 19 +++++++ code/11-productionish-server/modules/Home.js | 8 +++ .../modules/NavLink.js | 10 ++++ code/11-productionish-server/modules/Repo.js | 12 +++++ code/11-productionish-server/modules/Repos.js | 18 +++++++ code/11-productionish-server/package.json | 25 ++++++++++ .../11-productionish-server/webpack.config.js | 15 ++++++ code/12-navigating/index.js | 21 ++++++++ code/12-navigating/modules/About.js | 8 +++ code/12-navigating/modules/App.js | 19 +++++++ code/12-navigating/modules/Home.js | 8 +++ code/12-navigating/modules/NavLink.js | 10 ++++ code/12-navigating/modules/Repo.js | 12 +++++ code/12-navigating/modules/Repos.js | 18 +++++++ code/12-navigating/package.json | 29 +++++++++++ code/12-navigating/public/index.css | 4 ++ code/12-navigating/public/index.html | 8 +++ code/12-navigating/server.js | 21 ++++++++ code/12-navigating/webpack.config.js | 24 +++++++++ code/13-server-rendering/index.js | 21 ++++++++ code/13-server-rendering/modules/About.js | 8 +++ code/13-server-rendering/modules/App.js | 19 +++++++ code/13-server-rendering/modules/Home.js | 8 +++ code/13-server-rendering/modules/NavLink.js | 10 ++++ code/13-server-rendering/modules/Repo.js | 13 +++++ code/13-server-rendering/modules/Repos.js | 37 ++++++++++++++ code/13-server-rendering/package.json | 29 +++++++++++ code/13-server-rendering/public/index.css | 4 ++ code/13-server-rendering/public/index.html | 8 +++ code/13-server-rendering/server.js | 21 ++++++++ code/13-server-rendering/webpack.config.js | 24 +++++++++ code/14-whats-next/index.js | 10 ++++ code/14-whats-next/modules/About.js | 8 +++ code/14-whats-next/modules/App.js | 19 +++++++ code/14-whats-next/modules/Home.js | 8 +++ code/14-whats-next/modules/NavLink.js | 10 ++++ code/14-whats-next/modules/Repo.js | 13 +++++ code/14-whats-next/modules/Repos.js | 37 ++++++++++++++ code/14-whats-next/modules/routes.js | 17 +++++++ code/14-whats-next/package.json | 32 ++++++++++++ code/14-whats-next/public/index.css | 4 ++ code/14-whats-next/public/index.html | 8 +++ code/14-whats-next/server.js | 49 +++++++++++++++++++ code/14-whats-next/webpack.config.js | 24 +++++++++ code/14-whats-next/webpack.server.config.js | 34 +++++++++++++ 131 files changed, 1880 insertions(+) create mode 100644 code/01-setting-up/index.html create mode 100644 code/01-setting-up/index.js create mode 100644 code/01-setting-up/modules/App.js create mode 100644 code/01-setting-up/package.json create mode 100644 code/01-setting-up/webpack.config.js create mode 100644 code/02-rendering-a-router/index.html create mode 100644 code/02-rendering-a-router/index.js create mode 100644 code/02-rendering-a-router/modules/App.js create mode 100644 code/02-rendering-a-router/package.json create mode 100644 code/02-rendering-a-router/webpack.config.js create mode 100644 code/03-navigating-with-link/index.html create mode 100644 code/03-navigating-with-link/index.js create mode 100644 code/03-navigating-with-link/modules/About.js create mode 100644 code/03-navigating-with-link/modules/App.js create mode 100644 code/03-navigating-with-link/modules/Repos.js create mode 100644 code/03-navigating-with-link/package.json create mode 100644 code/03-navigating-with-link/webpack.config.js create mode 100644 code/04-nested-routes/index.html create mode 100644 code/04-nested-routes/index.js create mode 100644 code/04-nested-routes/modules/About.js create mode 100644 code/04-nested-routes/modules/App.js create mode 100644 code/04-nested-routes/modules/Repos.js create mode 100644 code/04-nested-routes/package.json create mode 100644 code/04-nested-routes/webpack.config.js create mode 100644 code/05-active-links/index.html create mode 100644 code/05-active-links/index.js create mode 100644 code/05-active-links/modules/About.js create mode 100644 code/05-active-links/modules/App.js create mode 100644 code/05-active-links/modules/Repos.js create mode 100644 code/05-active-links/package.json create mode 100644 code/05-active-links/webpack.config.js create mode 100644 code/06-params/index.css create mode 100644 code/06-params/index.html create mode 100644 code/06-params/index.js create mode 100644 code/06-params/modules/About.js create mode 100644 code/06-params/modules/App.js create mode 100644 code/06-params/modules/NavLink.js create mode 100644 code/06-params/modules/Repos.js create mode 100644 code/06-params/package.json create mode 100644 code/06-params/webpack.config.js create mode 100644 code/07-more-nesting/index.css create mode 100644 code/07-more-nesting/index.html create mode 100644 code/07-more-nesting/index.js create mode 100644 code/07-more-nesting/modules/About.js create mode 100644 code/07-more-nesting/modules/App.js create mode 100644 code/07-more-nesting/modules/NavLink.js create mode 100644 code/07-more-nesting/modules/Repo.js create mode 100644 code/07-more-nesting/modules/Repos.js create mode 100644 code/07-more-nesting/package.json create mode 100644 code/07-more-nesting/webpack.config.js create mode 100644 code/08-index-routes/index.css create mode 100644 code/08-index-routes/index.html create mode 100644 code/08-index-routes/index.js create mode 100644 code/08-index-routes/modules/About.js create mode 100644 code/08-index-routes/modules/App.js create mode 100644 code/08-index-routes/modules/NavLink.js create mode 100644 code/08-index-routes/modules/Repo.js create mode 100644 code/08-index-routes/modules/Repos.js create mode 100644 code/08-index-routes/package.json create mode 100644 code/08-index-routes/webpack.config.js create mode 100644 code/09-index-links/index.css create mode 100644 code/09-index-links/index.html create mode 100644 code/09-index-links/index.js create mode 100644 code/09-index-links/modules/About.js create mode 100644 code/09-index-links/modules/App.js create mode 100644 code/09-index-links/modules/Home.js create mode 100644 code/09-index-links/modules/NavLink.js create mode 100644 code/09-index-links/modules/Repo.js create mode 100644 code/09-index-links/modules/Repos.js create mode 100644 code/09-index-links/package.json create mode 100644 code/09-index-links/webpack.config.js create mode 100644 code/10-clean-urls/index.css create mode 100644 code/10-clean-urls/index.html create mode 100644 code/10-clean-urls/index.js create mode 100644 code/10-clean-urls/modules/About.js create mode 100644 code/10-clean-urls/modules/App.js create mode 100644 code/10-clean-urls/modules/Home.js create mode 100644 code/10-clean-urls/modules/NavLink.js create mode 100644 code/10-clean-urls/modules/Repo.js create mode 100644 code/10-clean-urls/modules/Repos.js create mode 100644 code/10-clean-urls/package.json create mode 100644 code/10-clean-urls/webpack.config.js create mode 100644 code/11-productionish-server/index.css create mode 100644 code/11-productionish-server/index.html create mode 100644 code/11-productionish-server/index.js create mode 100644 code/11-productionish-server/modules/About.js create mode 100644 code/11-productionish-server/modules/App.js create mode 100644 code/11-productionish-server/modules/Home.js create mode 100644 code/11-productionish-server/modules/NavLink.js create mode 100644 code/11-productionish-server/modules/Repo.js create mode 100644 code/11-productionish-server/modules/Repos.js create mode 100644 code/11-productionish-server/package.json create mode 100644 code/11-productionish-server/webpack.config.js create mode 100644 code/12-navigating/index.js create mode 100644 code/12-navigating/modules/About.js create mode 100644 code/12-navigating/modules/App.js create mode 100644 code/12-navigating/modules/Home.js create mode 100644 code/12-navigating/modules/NavLink.js create mode 100644 code/12-navigating/modules/Repo.js create mode 100644 code/12-navigating/modules/Repos.js create mode 100644 code/12-navigating/package.json create mode 100644 code/12-navigating/public/index.css create mode 100644 code/12-navigating/public/index.html create mode 100644 code/12-navigating/server.js create mode 100644 code/12-navigating/webpack.config.js create mode 100644 code/13-server-rendering/index.js create mode 100644 code/13-server-rendering/modules/About.js create mode 100644 code/13-server-rendering/modules/App.js create mode 100644 code/13-server-rendering/modules/Home.js create mode 100644 code/13-server-rendering/modules/NavLink.js create mode 100644 code/13-server-rendering/modules/Repo.js create mode 100644 code/13-server-rendering/modules/Repos.js create mode 100644 code/13-server-rendering/package.json create mode 100644 code/13-server-rendering/public/index.css create mode 100644 code/13-server-rendering/public/index.html create mode 100644 code/13-server-rendering/server.js create mode 100644 code/13-server-rendering/webpack.config.js create mode 100644 code/14-whats-next/index.js create mode 100644 code/14-whats-next/modules/About.js create mode 100644 code/14-whats-next/modules/App.js create mode 100644 code/14-whats-next/modules/Home.js create mode 100644 code/14-whats-next/modules/NavLink.js create mode 100644 code/14-whats-next/modules/Repo.js create mode 100644 code/14-whats-next/modules/Repos.js create mode 100644 code/14-whats-next/modules/routes.js create mode 100644 code/14-whats-next/package.json create mode 100644 code/14-whats-next/public/index.css create mode 100644 code/14-whats-next/public/index.html create mode 100644 code/14-whats-next/server.js create mode 100644 code/14-whats-next/webpack.config.js create mode 100644 code/14-whats-next/webpack.server.config.js diff --git a/code/01-setting-up/index.html b/code/01-setting-up/index.html new file mode 100644 index 00000000..47ed767b --- /dev/null +++ b/code/01-setting-up/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App +
    + + diff --git a/code/01-setting-up/index.js b/code/01-setting-up/index.js new file mode 100644 index 00000000..898eaa43 --- /dev/null +++ b/code/01-setting-up/index.js @@ -0,0 +1,4 @@ +import React from 'react' +import { render } from 'react-dom' +import App from './modules/App' +render(, document.getElementById('app')) diff --git a/code/01-setting-up/modules/App.js b/code/01-setting-up/modules/App.js new file mode 100644 index 00000000..009ba9ba --- /dev/null +++ b/code/01-setting-up/modules/App.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Hello, React Router!
    + } +}) + diff --git a/code/01-setting-up/package.json b/code/01-setting-up/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/code/01-setting-up/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/01-setting-up/webpack.config.js b/code/01-setting-up/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/01-setting-up/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/02-rendering-a-router/index.html b/code/02-rendering-a-router/index.html new file mode 100644 index 00000000..d3334c9e --- /dev/null +++ b/code/02-rendering-a-router/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App +
    + + diff --git a/code/02-rendering-a-router/index.js b/code/02-rendering-a-router/index.js new file mode 100644 index 00000000..898eaa43 --- /dev/null +++ b/code/02-rendering-a-router/index.js @@ -0,0 +1,4 @@ +import React from 'react' +import { render } from 'react-dom' +import App from './modules/App' +render(, document.getElementById('app')) diff --git a/code/02-rendering-a-router/modules/App.js b/code/02-rendering-a-router/modules/App.js new file mode 100644 index 00000000..009ba9ba --- /dev/null +++ b/code/02-rendering-a-router/modules/App.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Hello, React Router!
    + } +}) + diff --git a/code/02-rendering-a-router/package.json b/code/02-rendering-a-router/package.json new file mode 100644 index 00000000..7bf02386 --- /dev/null +++ b/code/02-rendering-a-router/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0-rc6" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/02-rendering-a-router/webpack.config.js b/code/02-rendering-a-router/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/02-rendering-a-router/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/03-navigating-with-link/index.html b/code/03-navigating-with-link/index.html new file mode 100644 index 00000000..d3334c9e --- /dev/null +++ b/code/03-navigating-with-link/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App +
    + + diff --git a/code/03-navigating-with-link/index.js b/code/03-navigating-with-link/index.js new file mode 100644 index 00000000..29062820 --- /dev/null +++ b/code/03-navigating-with-link/index.js @@ -0,0 +1,15 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' + +render(( + + + + + +), document.getElementById('app')) + diff --git a/code/03-navigating-with-link/modules/About.js b/code/03-navigating-with-link/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/03-navigating-with-link/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/03-navigating-with-link/modules/App.js b/code/03-navigating-with-link/modules/App.js new file mode 100644 index 00000000..009ba9ba --- /dev/null +++ b/code/03-navigating-with-link/modules/App.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Hello, React Router!
    + } +}) + diff --git a/code/03-navigating-with-link/modules/Repos.js b/code/03-navigating-with-link/modules/Repos.js new file mode 100644 index 00000000..8dde1131 --- /dev/null +++ b/code/03-navigating-with-link/modules/Repos.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Repos
    + } +}) + diff --git a/code/03-navigating-with-link/package.json b/code/03-navigating-with-link/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/code/03-navigating-with-link/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/03-navigating-with-link/webpack.config.js b/code/03-navigating-with-link/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/03-navigating-with-link/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/04-nested-routes/index.html b/code/04-nested-routes/index.html new file mode 100644 index 00000000..d3334c9e --- /dev/null +++ b/code/04-nested-routes/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App +
    + + diff --git a/code/04-nested-routes/index.js b/code/04-nested-routes/index.js new file mode 100644 index 00000000..29062820 --- /dev/null +++ b/code/04-nested-routes/index.js @@ -0,0 +1,15 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' + +render(( + + + + + +), document.getElementById('app')) + diff --git a/code/04-nested-routes/modules/About.js b/code/04-nested-routes/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/04-nested-routes/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/04-nested-routes/modules/App.js b/code/04-nested-routes/modules/App.js new file mode 100644 index 00000000..ccddeabc --- /dev/null +++ b/code/04-nested-routes/modules/App.js @@ -0,0 +1,17 @@ +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    +
    + ) + } +}) + diff --git a/code/04-nested-routes/modules/Repos.js b/code/04-nested-routes/modules/Repos.js new file mode 100644 index 00000000..8dde1131 --- /dev/null +++ b/code/04-nested-routes/modules/Repos.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Repos
    + } +}) + diff --git a/code/04-nested-routes/package.json b/code/04-nested-routes/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/code/04-nested-routes/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/04-nested-routes/webpack.config.js b/code/04-nested-routes/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/04-nested-routes/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/05-active-links/index.html b/code/05-active-links/index.html new file mode 100644 index 00000000..d3334c9e --- /dev/null +++ b/code/05-active-links/index.html @@ -0,0 +1,7 @@ + + + +My First React Router App +
    + + diff --git a/code/05-active-links/index.js b/code/05-active-links/index.js new file mode 100644 index 00000000..ad923f1f --- /dev/null +++ b/code/05-active-links/index.js @@ -0,0 +1,16 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' + +render(( + + + + + + +), document.getElementById('app')) + diff --git a/code/05-active-links/modules/About.js b/code/05-active-links/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/05-active-links/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/05-active-links/modules/App.js b/code/05-active-links/modules/App.js new file mode 100644 index 00000000..d6fa5092 --- /dev/null +++ b/code/05-active-links/modules/App.js @@ -0,0 +1,18 @@ +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/05-active-links/modules/Repos.js b/code/05-active-links/modules/Repos.js new file mode 100644 index 00000000..8dde1131 --- /dev/null +++ b/code/05-active-links/modules/Repos.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Repos
    + } +}) + diff --git a/code/05-active-links/package.json b/code/05-active-links/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/code/05-active-links/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/05-active-links/webpack.config.js b/code/05-active-links/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/05-active-links/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/06-params/index.css b/code/06-params/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/code/06-params/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/code/06-params/index.html b/code/06-params/index.html new file mode 100644 index 00000000..ed2d8111 --- /dev/null +++ b/code/06-params/index.html @@ -0,0 +1,8 @@ + + + +My First React Router App + +
    + + diff --git a/code/06-params/index.js b/code/06-params/index.js new file mode 100644 index 00000000..ad923f1f --- /dev/null +++ b/code/06-params/index.js @@ -0,0 +1,16 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' + +render(( + + + + + + +), document.getElementById('app')) + diff --git a/code/06-params/modules/About.js b/code/06-params/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/06-params/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/06-params/modules/App.js b/code/06-params/modules/App.js new file mode 100644 index 00000000..6ec47cc9 --- /dev/null +++ b/code/06-params/modules/App.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/06-params/modules/NavLink.js b/code/06-params/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/code/06-params/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + diff --git a/code/06-params/modules/Repos.js b/code/06-params/modules/Repos.js new file mode 100644 index 00000000..8dde1131 --- /dev/null +++ b/code/06-params/modules/Repos.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Repos
    + } +}) + diff --git a/code/06-params/package.json b/code/06-params/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/code/06-params/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/06-params/webpack.config.js b/code/06-params/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/06-params/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/07-more-nesting/index.css b/code/07-more-nesting/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/code/07-more-nesting/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/code/07-more-nesting/index.html b/code/07-more-nesting/index.html new file mode 100644 index 00000000..ed2d8111 --- /dev/null +++ b/code/07-more-nesting/index.html @@ -0,0 +1,8 @@ + + + +My First React Router App + +
    + + diff --git a/code/07-more-nesting/index.js b/code/07-more-nesting/index.js new file mode 100644 index 00000000..35ce61ee --- /dev/null +++ b/code/07-more-nesting/index.js @@ -0,0 +1,18 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' + +render(( + + + + + + + +), document.getElementById('app')) + diff --git a/code/07-more-nesting/modules/About.js b/code/07-more-nesting/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/07-more-nesting/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/07-more-nesting/modules/App.js b/code/07-more-nesting/modules/App.js new file mode 100644 index 00000000..6ec47cc9 --- /dev/null +++ b/code/07-more-nesting/modules/App.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/07-more-nesting/modules/NavLink.js b/code/07-more-nesting/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/code/07-more-nesting/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + diff --git a/code/07-more-nesting/modules/Repo.js b/code/07-more-nesting/modules/Repo.js new file mode 100644 index 00000000..8cf9b7e6 --- /dev/null +++ b/code/07-more-nesting/modules/Repo.js @@ -0,0 +1,12 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) + diff --git a/code/07-more-nesting/modules/Repos.js b/code/07-more-nesting/modules/Repos.js new file mode 100644 index 00000000..9ae0d221 --- /dev/null +++ b/code/07-more-nesting/modules/Repos.js @@ -0,0 +1,17 @@ +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    +
    + ) + } +}) + diff --git a/code/07-more-nesting/package.json b/code/07-more-nesting/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/code/07-more-nesting/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/07-more-nesting/webpack.config.js b/code/07-more-nesting/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/07-more-nesting/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/08-index-routes/index.css b/code/08-index-routes/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/code/08-index-routes/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/code/08-index-routes/index.html b/code/08-index-routes/index.html new file mode 100644 index 00000000..ed2d8111 --- /dev/null +++ b/code/08-index-routes/index.html @@ -0,0 +1,8 @@ + + + +My First React Router App + +
    + + diff --git a/code/08-index-routes/index.js b/code/08-index-routes/index.js new file mode 100644 index 00000000..8f123f03 --- /dev/null +++ b/code/08-index-routes/index.js @@ -0,0 +1,19 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' + +render(( + + + + + + + + +), document.getElementById('app')) + diff --git a/code/08-index-routes/modules/About.js b/code/08-index-routes/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/08-index-routes/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/08-index-routes/modules/App.js b/code/08-index-routes/modules/App.js new file mode 100644 index 00000000..6ec47cc9 --- /dev/null +++ b/code/08-index-routes/modules/App.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/08-index-routes/modules/NavLink.js b/code/08-index-routes/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/code/08-index-routes/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + diff --git a/code/08-index-routes/modules/Repo.js b/code/08-index-routes/modules/Repo.js new file mode 100644 index 00000000..8cf9b7e6 --- /dev/null +++ b/code/08-index-routes/modules/Repo.js @@ -0,0 +1,12 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) + diff --git a/code/08-index-routes/modules/Repos.js b/code/08-index-routes/modules/Repos.js new file mode 100644 index 00000000..aefda123 --- /dev/null +++ b/code/08-index-routes/modules/Repos.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/08-index-routes/package.json b/code/08-index-routes/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/code/08-index-routes/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/08-index-routes/webpack.config.js b/code/08-index-routes/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/08-index-routes/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/09-index-links/index.css b/code/09-index-links/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/code/09-index-links/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/code/09-index-links/index.html b/code/09-index-links/index.html new file mode 100644 index 00000000..ed2d8111 --- /dev/null +++ b/code/09-index-links/index.html @@ -0,0 +1,8 @@ + + + +My First React Router App + +
    + + diff --git a/code/09-index-links/index.js b/code/09-index-links/index.js new file mode 100644 index 00000000..91294180 --- /dev/null +++ b/code/09-index-links/index.js @@ -0,0 +1,21 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) + diff --git a/code/09-index-links/modules/About.js b/code/09-index-links/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/09-index-links/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/09-index-links/modules/App.js b/code/09-index-links/modules/App.js new file mode 100644 index 00000000..6ec47cc9 --- /dev/null +++ b/code/09-index-links/modules/App.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/09-index-links/modules/Home.js b/code/09-index-links/modules/Home.js new file mode 100644 index 00000000..1ae39730 --- /dev/null +++ b/code/09-index-links/modules/Home.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) + diff --git a/code/09-index-links/modules/NavLink.js b/code/09-index-links/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/code/09-index-links/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + diff --git a/code/09-index-links/modules/Repo.js b/code/09-index-links/modules/Repo.js new file mode 100644 index 00000000..8cf9b7e6 --- /dev/null +++ b/code/09-index-links/modules/Repo.js @@ -0,0 +1,12 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) + diff --git a/code/09-index-links/modules/Repos.js b/code/09-index-links/modules/Repos.js new file mode 100644 index 00000000..aefda123 --- /dev/null +++ b/code/09-index-links/modules/Repos.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/09-index-links/package.json b/code/09-index-links/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/code/09-index-links/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/09-index-links/webpack.config.js b/code/09-index-links/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/09-index-links/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/10-clean-urls/index.css b/code/10-clean-urls/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/code/10-clean-urls/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/code/10-clean-urls/index.html b/code/10-clean-urls/index.html new file mode 100644 index 00000000..ed2d8111 --- /dev/null +++ b/code/10-clean-urls/index.html @@ -0,0 +1,8 @@ + + + +My First React Router App + +
    + + diff --git a/code/10-clean-urls/index.js b/code/10-clean-urls/index.js new file mode 100644 index 00000000..91294180 --- /dev/null +++ b/code/10-clean-urls/index.js @@ -0,0 +1,21 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, hashHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) + diff --git a/code/10-clean-urls/modules/About.js b/code/10-clean-urls/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/10-clean-urls/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/10-clean-urls/modules/App.js b/code/10-clean-urls/modules/App.js new file mode 100644 index 00000000..346b6549 --- /dev/null +++ b/code/10-clean-urls/modules/App.js @@ -0,0 +1,19 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • Home
    • +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/10-clean-urls/modules/Home.js b/code/10-clean-urls/modules/Home.js new file mode 100644 index 00000000..1ae39730 --- /dev/null +++ b/code/10-clean-urls/modules/Home.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) + diff --git a/code/10-clean-urls/modules/NavLink.js b/code/10-clean-urls/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/code/10-clean-urls/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + diff --git a/code/10-clean-urls/modules/Repo.js b/code/10-clean-urls/modules/Repo.js new file mode 100644 index 00000000..8cf9b7e6 --- /dev/null +++ b/code/10-clean-urls/modules/Repo.js @@ -0,0 +1,12 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) + diff --git a/code/10-clean-urls/modules/Repos.js b/code/10-clean-urls/modules/Repos.js new file mode 100644 index 00000000..aefda123 --- /dev/null +++ b/code/10-clean-urls/modules/Repos.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/10-clean-urls/package.json b/code/10-clean-urls/package.json new file mode 100644 index 00000000..51792f8f --- /dev/null +++ b/code/10-clean-urls/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base ." + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/10-clean-urls/webpack.config.js b/code/10-clean-urls/webpack.config.js new file mode 100644 index 00000000..8d895847 --- /dev/null +++ b/code/10-clean-urls/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/11-productionish-server/index.css b/code/11-productionish-server/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/code/11-productionish-server/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/code/11-productionish-server/index.html b/code/11-productionish-server/index.html new file mode 100644 index 00000000..70033e42 --- /dev/null +++ b/code/11-productionish-server/index.html @@ -0,0 +1,8 @@ + + + +My First React Router App + +
    + + diff --git a/code/11-productionish-server/index.js b/code/11-productionish-server/index.js new file mode 100644 index 00000000..6f15d1e5 --- /dev/null +++ b/code/11-productionish-server/index.js @@ -0,0 +1,21 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, browserHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) + diff --git a/code/11-productionish-server/modules/About.js b/code/11-productionish-server/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/11-productionish-server/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/11-productionish-server/modules/App.js b/code/11-productionish-server/modules/App.js new file mode 100644 index 00000000..346b6549 --- /dev/null +++ b/code/11-productionish-server/modules/App.js @@ -0,0 +1,19 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • Home
    • +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/11-productionish-server/modules/Home.js b/code/11-productionish-server/modules/Home.js new file mode 100644 index 00000000..1ae39730 --- /dev/null +++ b/code/11-productionish-server/modules/Home.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) + diff --git a/code/11-productionish-server/modules/NavLink.js b/code/11-productionish-server/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/code/11-productionish-server/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + diff --git a/code/11-productionish-server/modules/Repo.js b/code/11-productionish-server/modules/Repo.js new file mode 100644 index 00000000..8cf9b7e6 --- /dev/null +++ b/code/11-productionish-server/modules/Repo.js @@ -0,0 +1,12 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) + diff --git a/code/11-productionish-server/modules/Repos.js b/code/11-productionish-server/modules/Repos.js new file mode 100644 index 00000000..aefda123 --- /dev/null +++ b/code/11-productionish-server/modules/Repos.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/11-productionish-server/package.json b/code/11-productionish-server/package.json new file mode 100644 index 00000000..9bb35e8f --- /dev/null +++ b/code/11-productionish-server/package.json @@ -0,0 +1,25 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --inline --content-base . --history-api-fallback" + }, + "author": "", + "license": "ISC", + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/11-productionish-server/webpack.config.js b/code/11-productionish-server/webpack.config.js new file mode 100644 index 00000000..4e4291f1 --- /dev/null +++ b/code/11-productionish-server/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + entry: './index.js', + + output: { + filename: 'bundle.js', + publicPath: '/' + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/12-navigating/index.js b/code/12-navigating/index.js new file mode 100644 index 00000000..6f15d1e5 --- /dev/null +++ b/code/12-navigating/index.js @@ -0,0 +1,21 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, browserHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) + diff --git a/code/12-navigating/modules/About.js b/code/12-navigating/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/12-navigating/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/12-navigating/modules/App.js b/code/12-navigating/modules/App.js new file mode 100644 index 00000000..346b6549 --- /dev/null +++ b/code/12-navigating/modules/App.js @@ -0,0 +1,19 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • Home
    • +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/12-navigating/modules/Home.js b/code/12-navigating/modules/Home.js new file mode 100644 index 00000000..1ae39730 --- /dev/null +++ b/code/12-navigating/modules/Home.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) + diff --git a/code/12-navigating/modules/NavLink.js b/code/12-navigating/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/code/12-navigating/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + diff --git a/code/12-navigating/modules/Repo.js b/code/12-navigating/modules/Repo.js new file mode 100644 index 00000000..8cf9b7e6 --- /dev/null +++ b/code/12-navigating/modules/Repo.js @@ -0,0 +1,12 @@ +import React from 'react' + +export default React.createClass({ + render() { + return ( +
    +

    {this.props.params.repoName}

    +
    + ) + } +}) + diff --git a/code/12-navigating/modules/Repos.js b/code/12-navigating/modules/Repos.js new file mode 100644 index 00000000..aefda123 --- /dev/null +++ b/code/12-navigating/modules/Repos.js @@ -0,0 +1,18 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/12-navigating/package.json b/code/12-navigating/package.json new file mode 100644 index 00000000..2cb49262 --- /dev/null +++ b/code/12-navigating/package.json @@ -0,0 +1,29 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", + "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", + "start:prod": "webpack && node server.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "compression": "^1.6.1", + "if-env": "^1.0.0", + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/12-navigating/public/index.css b/code/12-navigating/public/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/code/12-navigating/public/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/code/12-navigating/public/index.html b/code/12-navigating/public/index.html new file mode 100644 index 00000000..70033e42 --- /dev/null +++ b/code/12-navigating/public/index.html @@ -0,0 +1,8 @@ + + + +My First React Router App + +
    + + diff --git a/code/12-navigating/server.js b/code/12-navigating/server.js new file mode 100644 index 00000000..be0357d1 --- /dev/null +++ b/code/12-navigating/server.js @@ -0,0 +1,21 @@ +var express = require('express') +var path = require('path') +var compression = require('compression') + +var app = express() + +app.use(compression()) + +// serve our static stuff like index.css +app.use(express.static(path.join(__dirname, 'public'))) + +// send all requests to index.html so browserHistory works +app.get('*', function (req, res) { + res.sendFile(path.join(__dirname, 'public', 'index.html')) +}) + +var PORT = process.env.PORT || 8080 +app.listen(PORT, function() { + console.log('Production Express server running at localhost:' + PORT) +}) + diff --git a/code/12-navigating/webpack.config.js b/code/12-navigating/webpack.config.js new file mode 100644 index 00000000..a48b0ce8 --- /dev/null +++ b/code/12-navigating/webpack.config.js @@ -0,0 +1,24 @@ +var webpack = require('webpack') + +module.exports = { + entry: './index.js', + + output: { + path: 'public', + filename: 'bundle.js', + publicPath: '/' + }, + + plugins: process.env.NODE_ENV === 'production' ? [ + new webpack.optimize.DedupePlugin(), + new webpack.optimize.OccurrenceOrderPlugin(), + new webpack.optimize.UglifyJsPlugin() + ] : [], + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/13-server-rendering/index.js b/code/13-server-rendering/index.js new file mode 100644 index 00000000..6f15d1e5 --- /dev/null +++ b/code/13-server-rendering/index.js @@ -0,0 +1,21 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, Route, browserHistory, IndexRoute } from 'react-router' +import App from './modules/App' +import About from './modules/About' +import Repos from './modules/Repos' +import Repo from './modules/Repo' +import Home from './modules/Home' + +render(( + + + + + + + + + +), document.getElementById('app')) + diff --git a/code/13-server-rendering/modules/About.js b/code/13-server-rendering/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/13-server-rendering/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/13-server-rendering/modules/App.js b/code/13-server-rendering/modules/App.js new file mode 100644 index 00000000..346b6549 --- /dev/null +++ b/code/13-server-rendering/modules/App.js @@ -0,0 +1,19 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • Home
    • +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/13-server-rendering/modules/Home.js b/code/13-server-rendering/modules/Home.js new file mode 100644 index 00000000..1ae39730 --- /dev/null +++ b/code/13-server-rendering/modules/Home.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) + diff --git a/code/13-server-rendering/modules/NavLink.js b/code/13-server-rendering/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/code/13-server-rendering/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + diff --git a/code/13-server-rendering/modules/Repo.js b/code/13-server-rendering/modules/Repo.js new file mode 100644 index 00000000..6e14ba84 --- /dev/null +++ b/code/13-server-rendering/modules/Repo.js @@ -0,0 +1,13 @@ +import React from 'react' + +export default React.createClass({ + render() { + const { userName, repoName } = this.props.params + return ( +
    +

    {userName} / {repoName}

    +
    + ) + } +}) + diff --git a/code/13-server-rendering/modules/Repos.js b/code/13-server-rendering/modules/Repos.js new file mode 100644 index 00000000..96fb4334 --- /dev/null +++ b/code/13-server-rendering/modules/Repos.js @@ -0,0 +1,37 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + contextTypes: { + router: React.PropTypes.object + }, + + handleSubmit(event) { + event.preventDefault() + const userName = event.target.elements[0].value + const repo = event.target.elements[1].value + const path = `/repos/${userName}/${repo}` + this.context.router.push(path) + }, + + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    • +
      + / {' '} + {' '} + +
      +
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/13-server-rendering/package.json b/code/13-server-rendering/package.json new file mode 100644 index 00000000..2cb49262 --- /dev/null +++ b/code/13-server-rendering/package.json @@ -0,0 +1,29 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", + "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", + "start:prod": "webpack && node server.js" + }, + "author": "", + "license": "ISC", + "dependencies": { + "compression": "^1.6.1", + "if-env": "^1.0.0", + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/13-server-rendering/public/index.css b/code/13-server-rendering/public/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/code/13-server-rendering/public/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/code/13-server-rendering/public/index.html b/code/13-server-rendering/public/index.html new file mode 100644 index 00000000..70033e42 --- /dev/null +++ b/code/13-server-rendering/public/index.html @@ -0,0 +1,8 @@ + + + +My First React Router App + +
    + + diff --git a/code/13-server-rendering/server.js b/code/13-server-rendering/server.js new file mode 100644 index 00000000..be0357d1 --- /dev/null +++ b/code/13-server-rendering/server.js @@ -0,0 +1,21 @@ +var express = require('express') +var path = require('path') +var compression = require('compression') + +var app = express() + +app.use(compression()) + +// serve our static stuff like index.css +app.use(express.static(path.join(__dirname, 'public'))) + +// send all requests to index.html so browserHistory works +app.get('*', function (req, res) { + res.sendFile(path.join(__dirname, 'public', 'index.html')) +}) + +var PORT = process.env.PORT || 8080 +app.listen(PORT, function() { + console.log('Production Express server running at localhost:' + PORT) +}) + diff --git a/code/13-server-rendering/webpack.config.js b/code/13-server-rendering/webpack.config.js new file mode 100644 index 00000000..a48b0ce8 --- /dev/null +++ b/code/13-server-rendering/webpack.config.js @@ -0,0 +1,24 @@ +var webpack = require('webpack') + +module.exports = { + entry: './index.js', + + output: { + path: 'public', + filename: 'bundle.js', + publicPath: '/' + }, + + plugins: process.env.NODE_ENV === 'production' ? [ + new webpack.optimize.DedupePlugin(), + new webpack.optimize.OccurrenceOrderPlugin(), + new webpack.optimize.UglifyJsPlugin() + ] : [], + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/14-whats-next/index.js b/code/14-whats-next/index.js new file mode 100644 index 00000000..51a72600 --- /dev/null +++ b/code/14-whats-next/index.js @@ -0,0 +1,10 @@ +import React from 'react' +import { render } from 'react-dom' +import { Router, browserHistory } from 'react-router' +import routes from './modules/routes' + +render( + , + document.getElementById('app') +) + diff --git a/code/14-whats-next/modules/About.js b/code/14-whats-next/modules/About.js new file mode 100644 index 00000000..546c5e7c --- /dev/null +++ b/code/14-whats-next/modules/About.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    About
    + } +}) + diff --git a/code/14-whats-next/modules/App.js b/code/14-whats-next/modules/App.js new file mode 100644 index 00000000..346b6549 --- /dev/null +++ b/code/14-whats-next/modules/App.js @@ -0,0 +1,19 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + render() { + return ( +
    +

    React Router Tutorial

    +
      +
    • Home
    • +
    • About
    • +
    • Repos
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/14-whats-next/modules/Home.js b/code/14-whats-next/modules/Home.js new file mode 100644 index 00000000..1ae39730 --- /dev/null +++ b/code/14-whats-next/modules/Home.js @@ -0,0 +1,8 @@ +import React from 'react' + +export default React.createClass({ + render() { + return
    Home
    + } +}) + diff --git a/code/14-whats-next/modules/NavLink.js b/code/14-whats-next/modules/NavLink.js new file mode 100644 index 00000000..a31a6c5d --- /dev/null +++ b/code/14-whats-next/modules/NavLink.js @@ -0,0 +1,10 @@ +// modules/NavLink.js +import React from 'react' +import { Link } from 'react-router' + +export default React.createClass({ + render() { + return + } +}) + diff --git a/code/14-whats-next/modules/Repo.js b/code/14-whats-next/modules/Repo.js new file mode 100644 index 00000000..6e14ba84 --- /dev/null +++ b/code/14-whats-next/modules/Repo.js @@ -0,0 +1,13 @@ +import React from 'react' + +export default React.createClass({ + render() { + const { userName, repoName } = this.props.params + return ( +
    +

    {userName} / {repoName}

    +
    + ) + } +}) + diff --git a/code/14-whats-next/modules/Repos.js b/code/14-whats-next/modules/Repos.js new file mode 100644 index 00000000..96fb4334 --- /dev/null +++ b/code/14-whats-next/modules/Repos.js @@ -0,0 +1,37 @@ +import React from 'react' +import NavLink from './NavLink' + +export default React.createClass({ + contextTypes: { + router: React.PropTypes.object + }, + + handleSubmit(event) { + event.preventDefault() + const userName = event.target.elements[0].value + const repo = event.target.elements[1].value + const path = `/repos/${userName}/${repo}` + this.context.router.push(path) + }, + + render() { + return ( +
    +

    Repos

    +
      +
    • React Router
    • +
    • React
    • +
    • +
      + / {' '} + {' '} + +
      +
    • +
    + {this.props.children} +
    + ) + } +}) + diff --git a/code/14-whats-next/modules/routes.js b/code/14-whats-next/modules/routes.js new file mode 100644 index 00000000..72e9b82e --- /dev/null +++ b/code/14-whats-next/modules/routes.js @@ -0,0 +1,17 @@ +import React from 'react' +import { Router, Route, browserHistory, IndexRoute } from 'react-router' +import App from './App' +import About from './About' +import Repos from './Repos' +import Repo from './Repo' +import Home from './Home' + +module.exports = ( + + + + + + + +) diff --git a/code/14-whats-next/package.json b/code/14-whats-next/package.json new file mode 100644 index 00000000..21569ed1 --- /dev/null +++ b/code/14-whats-next/package.json @@ -0,0 +1,32 @@ +{ + "name": "tutorial", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", + "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", + "start:prod": "npm run build && node server.bundle.js", + "build:client": "webpack", + "build:server": "webpack --config webpack.server.config.js", + "build": "npm run build:client && npm run build:server" + }, + "author": "", + "license": "ISC", + "dependencies": { + "compression": "^1.6.1", + "if-env": "^1.0.0", + "react": "^0.14.7", + "react-dom": "^0.14.7", + "react-router": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.5.1", + "babel-loader": "^6.2.2", + "babel-preset-es2015": "^6.5.0", + "babel-preset-react": "^6.5.0", + "http-server": "^0.8.5", + "webpack": "^1.12.13", + "webpack-dev-server": "^1.14.1" + } +} diff --git a/code/14-whats-next/public/index.css b/code/14-whats-next/public/index.css new file mode 100644 index 00000000..fe9d7942 --- /dev/null +++ b/code/14-whats-next/public/index.css @@ -0,0 +1,4 @@ +.active { + color: green; +} + diff --git a/code/14-whats-next/public/index.html b/code/14-whats-next/public/index.html new file mode 100644 index 00000000..70033e42 --- /dev/null +++ b/code/14-whats-next/public/index.html @@ -0,0 +1,8 @@ + + + +My First React Router App + +
    + + diff --git a/code/14-whats-next/server.js b/code/14-whats-next/server.js new file mode 100644 index 00000000..b9ac9773 --- /dev/null +++ b/code/14-whats-next/server.js @@ -0,0 +1,49 @@ +import express from 'express' +import path from 'path' +import compression from 'compression' +import React from 'react' +import { renderToString } from 'react-dom/server' +import { match, RouterContext } from 'react-router' +import routes from './modules/routes' + +var app = express() + +app.use(compression()) + +// serve our static stuff like index.css +app.use(express.static(path.join(__dirname, 'public'))) + +// send all requests to index.html so browserHistory works +app.get('*', (req, res) => { + match({ routes, location: req.url }, (err, redirect, props) => { + if (err) { + res.status(500).send(err.message) + } else if (redirect) { + res.redirect(redirect.pathname + redirect.search) + } else if (props) { + // hey we made it! + const appHtml = renderToString() + res.send(renderPage(appHtml)) + } else { + res.status(404).send('Not Found') + } + }) +}) + +function renderPage(appHtml) { + return ` + + + + My First React Router App + +
    ${appHtml}
    + + ` +} + +var PORT = process.env.PORT || 8080 +app.listen(PORT, function() { + console.log('Production Express server running at localhost:' + PORT) +}) + diff --git a/code/14-whats-next/webpack.config.js b/code/14-whats-next/webpack.config.js new file mode 100644 index 00000000..a48b0ce8 --- /dev/null +++ b/code/14-whats-next/webpack.config.js @@ -0,0 +1,24 @@ +var webpack = require('webpack') + +module.exports = { + entry: './index.js', + + output: { + path: 'public', + filename: 'bundle.js', + publicPath: '/' + }, + + plugins: process.env.NODE_ENV === 'production' ? [ + new webpack.optimize.DedupePlugin(), + new webpack.optimize.OccurrenceOrderPlugin(), + new webpack.optimize.UglifyJsPlugin() + ] : [], + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } +} + diff --git a/code/14-whats-next/webpack.server.config.js b/code/14-whats-next/webpack.server.config.js new file mode 100644 index 00000000..4350279f --- /dev/null +++ b/code/14-whats-next/webpack.server.config.js @@ -0,0 +1,34 @@ +var fs = require('fs') +var path = require('path') + +module.exports = { + + entry: path.resolve(__dirname, 'server.js'), + + output: { + filename: 'server.bundle.js' + }, + + target: 'node', + + // keep node_module paths out of the bundle + externals: fs.readdirSync(path.resolve(__dirname, 'node_modules')).concat([ + 'react-dom/server' + ]).reduce(function (ext, mod) { + ext[mod] = 'commonjs ' + mod + return ext + }, {}), + + node: { + __filename: true, + __dirname: true + }, + + module: { + loaders: [ + { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } + ] + } + +} + From 2f187968fc60614a728570473e8e28fc88aba150 Mon Sep 17 00:00:00 2001 From: Andrew Coelho Date: Wed, 9 Mar 2016 15:15:19 -0800 Subject: [PATCH 18/19] Fix link --- lessons/01-setting-up/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/01-setting-up/README.md b/lessons/01-setting-up/README.md index 2b100857..cf3d49c8 100644 --- a/lessons/01-setting-up/README.md +++ b/lessons/01-setting-up/README.md @@ -16,7 +16,7 @@ npm install npm start ``` -Now open up http://localhost:8080 +Now open up [http://localhost:8080](http://localhost:8080) Feel free to poke around the code to see how we're using webpack and npm scripts to run the app. From 2fc7ca6a29589e276e309508596d4cb881013703 Mon Sep 17 00:00:00 2001 From: Ryan Florence Date: Thu, 17 Mar 2016 15:11:47 -0700 Subject: [PATCH 19/19] Revert "add code folder to contain all the code/exercises for each lessons" This reverts commit 07a3113bfe4763ceabde1b044c2ac4c90e5f3a21. --- code/01-setting-up/index.html | 7 --- code/01-setting-up/index.js | 4 -- code/01-setting-up/modules/App.js | 8 --- code/01-setting-up/package.json | 25 ---------- code/01-setting-up/webpack.config.js | 15 ------ code/02-rendering-a-router/index.html | 7 --- code/02-rendering-a-router/index.js | 4 -- code/02-rendering-a-router/modules/App.js | 8 --- code/02-rendering-a-router/package.json | 25 ---------- code/02-rendering-a-router/webpack.config.js | 15 ------ code/03-navigating-with-link/index.html | 7 --- code/03-navigating-with-link/index.js | 15 ------ code/03-navigating-with-link/modules/About.js | 8 --- code/03-navigating-with-link/modules/App.js | 8 --- code/03-navigating-with-link/modules/Repos.js | 8 --- code/03-navigating-with-link/package.json | 25 ---------- .../03-navigating-with-link/webpack.config.js | 15 ------ code/04-nested-routes/index.html | 7 --- code/04-nested-routes/index.js | 15 ------ code/04-nested-routes/modules/About.js | 8 --- code/04-nested-routes/modules/App.js | 17 ------- code/04-nested-routes/modules/Repos.js | 8 --- code/04-nested-routes/package.json | 25 ---------- code/04-nested-routes/webpack.config.js | 15 ------ code/05-active-links/index.html | 7 --- code/05-active-links/index.js | 16 ------ code/05-active-links/modules/About.js | 8 --- code/05-active-links/modules/App.js | 18 ------- code/05-active-links/modules/Repos.js | 8 --- code/05-active-links/package.json | 25 ---------- code/05-active-links/webpack.config.js | 15 ------ code/06-params/index.css | 4 -- code/06-params/index.html | 8 --- code/06-params/index.js | 16 ------ code/06-params/modules/About.js | 8 --- code/06-params/modules/App.js | 18 ------- code/06-params/modules/NavLink.js | 10 ---- code/06-params/modules/Repos.js | 8 --- code/06-params/package.json | 25 ---------- code/06-params/webpack.config.js | 15 ------ code/07-more-nesting/index.css | 4 -- code/07-more-nesting/index.html | 8 --- code/07-more-nesting/index.js | 18 ------- code/07-more-nesting/modules/About.js | 8 --- code/07-more-nesting/modules/App.js | 18 ------- code/07-more-nesting/modules/NavLink.js | 10 ---- code/07-more-nesting/modules/Repo.js | 12 ----- code/07-more-nesting/modules/Repos.js | 17 ------- code/07-more-nesting/package.json | 25 ---------- code/07-more-nesting/webpack.config.js | 15 ------ code/08-index-routes/index.css | 4 -- code/08-index-routes/index.html | 8 --- code/08-index-routes/index.js | 19 ------- code/08-index-routes/modules/About.js | 8 --- code/08-index-routes/modules/App.js | 18 ------- code/08-index-routes/modules/NavLink.js | 10 ---- code/08-index-routes/modules/Repo.js | 12 ----- code/08-index-routes/modules/Repos.js | 18 ------- code/08-index-routes/package.json | 25 ---------- code/08-index-routes/webpack.config.js | 15 ------ code/09-index-links/index.css | 4 -- code/09-index-links/index.html | 8 --- code/09-index-links/index.js | 21 -------- code/09-index-links/modules/About.js | 8 --- code/09-index-links/modules/App.js | 18 ------- code/09-index-links/modules/Home.js | 8 --- code/09-index-links/modules/NavLink.js | 10 ---- code/09-index-links/modules/Repo.js | 12 ----- code/09-index-links/modules/Repos.js | 18 ------- code/09-index-links/package.json | 25 ---------- code/09-index-links/webpack.config.js | 15 ------ code/10-clean-urls/index.css | 4 -- code/10-clean-urls/index.html | 8 --- code/10-clean-urls/index.js | 21 -------- code/10-clean-urls/modules/About.js | 8 --- code/10-clean-urls/modules/App.js | 19 ------- code/10-clean-urls/modules/Home.js | 8 --- code/10-clean-urls/modules/NavLink.js | 10 ---- code/10-clean-urls/modules/Repo.js | 12 ----- code/10-clean-urls/modules/Repos.js | 18 ------- code/10-clean-urls/package.json | 25 ---------- code/10-clean-urls/webpack.config.js | 15 ------ code/11-productionish-server/index.css | 4 -- code/11-productionish-server/index.html | 8 --- code/11-productionish-server/index.js | 21 -------- code/11-productionish-server/modules/About.js | 8 --- code/11-productionish-server/modules/App.js | 19 ------- code/11-productionish-server/modules/Home.js | 8 --- .../modules/NavLink.js | 10 ---- code/11-productionish-server/modules/Repo.js | 12 ----- code/11-productionish-server/modules/Repos.js | 18 ------- code/11-productionish-server/package.json | 25 ---------- .../11-productionish-server/webpack.config.js | 15 ------ code/12-navigating/index.js | 21 -------- code/12-navigating/modules/About.js | 8 --- code/12-navigating/modules/App.js | 19 ------- code/12-navigating/modules/Home.js | 8 --- code/12-navigating/modules/NavLink.js | 10 ---- code/12-navigating/modules/Repo.js | 12 ----- code/12-navigating/modules/Repos.js | 18 ------- code/12-navigating/package.json | 29 ----------- code/12-navigating/public/index.css | 4 -- code/12-navigating/public/index.html | 8 --- code/12-navigating/server.js | 21 -------- code/12-navigating/webpack.config.js | 24 --------- code/13-server-rendering/index.js | 21 -------- code/13-server-rendering/modules/About.js | 8 --- code/13-server-rendering/modules/App.js | 19 ------- code/13-server-rendering/modules/Home.js | 8 --- code/13-server-rendering/modules/NavLink.js | 10 ---- code/13-server-rendering/modules/Repo.js | 13 ----- code/13-server-rendering/modules/Repos.js | 37 -------------- code/13-server-rendering/package.json | 29 ----------- code/13-server-rendering/public/index.css | 4 -- code/13-server-rendering/public/index.html | 8 --- code/13-server-rendering/server.js | 21 -------- code/13-server-rendering/webpack.config.js | 24 --------- code/14-whats-next/index.js | 10 ---- code/14-whats-next/modules/About.js | 8 --- code/14-whats-next/modules/App.js | 19 ------- code/14-whats-next/modules/Home.js | 8 --- code/14-whats-next/modules/NavLink.js | 10 ---- code/14-whats-next/modules/Repo.js | 13 ----- code/14-whats-next/modules/Repos.js | 37 -------------- code/14-whats-next/modules/routes.js | 17 ------- code/14-whats-next/package.json | 32 ------------ code/14-whats-next/public/index.css | 4 -- code/14-whats-next/public/index.html | 8 --- code/14-whats-next/server.js | 49 ------------------- code/14-whats-next/webpack.config.js | 24 --------- code/14-whats-next/webpack.server.config.js | 34 ------------- 131 files changed, 1880 deletions(-) delete mode 100644 code/01-setting-up/index.html delete mode 100644 code/01-setting-up/index.js delete mode 100644 code/01-setting-up/modules/App.js delete mode 100644 code/01-setting-up/package.json delete mode 100644 code/01-setting-up/webpack.config.js delete mode 100644 code/02-rendering-a-router/index.html delete mode 100644 code/02-rendering-a-router/index.js delete mode 100644 code/02-rendering-a-router/modules/App.js delete mode 100644 code/02-rendering-a-router/package.json delete mode 100644 code/02-rendering-a-router/webpack.config.js delete mode 100644 code/03-navigating-with-link/index.html delete mode 100644 code/03-navigating-with-link/index.js delete mode 100644 code/03-navigating-with-link/modules/About.js delete mode 100644 code/03-navigating-with-link/modules/App.js delete mode 100644 code/03-navigating-with-link/modules/Repos.js delete mode 100644 code/03-navigating-with-link/package.json delete mode 100644 code/03-navigating-with-link/webpack.config.js delete mode 100644 code/04-nested-routes/index.html delete mode 100644 code/04-nested-routes/index.js delete mode 100644 code/04-nested-routes/modules/About.js delete mode 100644 code/04-nested-routes/modules/App.js delete mode 100644 code/04-nested-routes/modules/Repos.js delete mode 100644 code/04-nested-routes/package.json delete mode 100644 code/04-nested-routes/webpack.config.js delete mode 100644 code/05-active-links/index.html delete mode 100644 code/05-active-links/index.js delete mode 100644 code/05-active-links/modules/About.js delete mode 100644 code/05-active-links/modules/App.js delete mode 100644 code/05-active-links/modules/Repos.js delete mode 100644 code/05-active-links/package.json delete mode 100644 code/05-active-links/webpack.config.js delete mode 100644 code/06-params/index.css delete mode 100644 code/06-params/index.html delete mode 100644 code/06-params/index.js delete mode 100644 code/06-params/modules/About.js delete mode 100644 code/06-params/modules/App.js delete mode 100644 code/06-params/modules/NavLink.js delete mode 100644 code/06-params/modules/Repos.js delete mode 100644 code/06-params/package.json delete mode 100644 code/06-params/webpack.config.js delete mode 100644 code/07-more-nesting/index.css delete mode 100644 code/07-more-nesting/index.html delete mode 100644 code/07-more-nesting/index.js delete mode 100644 code/07-more-nesting/modules/About.js delete mode 100644 code/07-more-nesting/modules/App.js delete mode 100644 code/07-more-nesting/modules/NavLink.js delete mode 100644 code/07-more-nesting/modules/Repo.js delete mode 100644 code/07-more-nesting/modules/Repos.js delete mode 100644 code/07-more-nesting/package.json delete mode 100644 code/07-more-nesting/webpack.config.js delete mode 100644 code/08-index-routes/index.css delete mode 100644 code/08-index-routes/index.html delete mode 100644 code/08-index-routes/index.js delete mode 100644 code/08-index-routes/modules/About.js delete mode 100644 code/08-index-routes/modules/App.js delete mode 100644 code/08-index-routes/modules/NavLink.js delete mode 100644 code/08-index-routes/modules/Repo.js delete mode 100644 code/08-index-routes/modules/Repos.js delete mode 100644 code/08-index-routes/package.json delete mode 100644 code/08-index-routes/webpack.config.js delete mode 100644 code/09-index-links/index.css delete mode 100644 code/09-index-links/index.html delete mode 100644 code/09-index-links/index.js delete mode 100644 code/09-index-links/modules/About.js delete mode 100644 code/09-index-links/modules/App.js delete mode 100644 code/09-index-links/modules/Home.js delete mode 100644 code/09-index-links/modules/NavLink.js delete mode 100644 code/09-index-links/modules/Repo.js delete mode 100644 code/09-index-links/modules/Repos.js delete mode 100644 code/09-index-links/package.json delete mode 100644 code/09-index-links/webpack.config.js delete mode 100644 code/10-clean-urls/index.css delete mode 100644 code/10-clean-urls/index.html delete mode 100644 code/10-clean-urls/index.js delete mode 100644 code/10-clean-urls/modules/About.js delete mode 100644 code/10-clean-urls/modules/App.js delete mode 100644 code/10-clean-urls/modules/Home.js delete mode 100644 code/10-clean-urls/modules/NavLink.js delete mode 100644 code/10-clean-urls/modules/Repo.js delete mode 100644 code/10-clean-urls/modules/Repos.js delete mode 100644 code/10-clean-urls/package.json delete mode 100644 code/10-clean-urls/webpack.config.js delete mode 100644 code/11-productionish-server/index.css delete mode 100644 code/11-productionish-server/index.html delete mode 100644 code/11-productionish-server/index.js delete mode 100644 code/11-productionish-server/modules/About.js delete mode 100644 code/11-productionish-server/modules/App.js delete mode 100644 code/11-productionish-server/modules/Home.js delete mode 100644 code/11-productionish-server/modules/NavLink.js delete mode 100644 code/11-productionish-server/modules/Repo.js delete mode 100644 code/11-productionish-server/modules/Repos.js delete mode 100644 code/11-productionish-server/package.json delete mode 100644 code/11-productionish-server/webpack.config.js delete mode 100644 code/12-navigating/index.js delete mode 100644 code/12-navigating/modules/About.js delete mode 100644 code/12-navigating/modules/App.js delete mode 100644 code/12-navigating/modules/Home.js delete mode 100644 code/12-navigating/modules/NavLink.js delete mode 100644 code/12-navigating/modules/Repo.js delete mode 100644 code/12-navigating/modules/Repos.js delete mode 100644 code/12-navigating/package.json delete mode 100644 code/12-navigating/public/index.css delete mode 100644 code/12-navigating/public/index.html delete mode 100644 code/12-navigating/server.js delete mode 100644 code/12-navigating/webpack.config.js delete mode 100644 code/13-server-rendering/index.js delete mode 100644 code/13-server-rendering/modules/About.js delete mode 100644 code/13-server-rendering/modules/App.js delete mode 100644 code/13-server-rendering/modules/Home.js delete mode 100644 code/13-server-rendering/modules/NavLink.js delete mode 100644 code/13-server-rendering/modules/Repo.js delete mode 100644 code/13-server-rendering/modules/Repos.js delete mode 100644 code/13-server-rendering/package.json delete mode 100644 code/13-server-rendering/public/index.css delete mode 100644 code/13-server-rendering/public/index.html delete mode 100644 code/13-server-rendering/server.js delete mode 100644 code/13-server-rendering/webpack.config.js delete mode 100644 code/14-whats-next/index.js delete mode 100644 code/14-whats-next/modules/About.js delete mode 100644 code/14-whats-next/modules/App.js delete mode 100644 code/14-whats-next/modules/Home.js delete mode 100644 code/14-whats-next/modules/NavLink.js delete mode 100644 code/14-whats-next/modules/Repo.js delete mode 100644 code/14-whats-next/modules/Repos.js delete mode 100644 code/14-whats-next/modules/routes.js delete mode 100644 code/14-whats-next/package.json delete mode 100644 code/14-whats-next/public/index.css delete mode 100644 code/14-whats-next/public/index.html delete mode 100644 code/14-whats-next/server.js delete mode 100644 code/14-whats-next/webpack.config.js delete mode 100644 code/14-whats-next/webpack.server.config.js diff --git a/code/01-setting-up/index.html b/code/01-setting-up/index.html deleted file mode 100644 index 47ed767b..00000000 --- a/code/01-setting-up/index.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -My First React Router App -
    - - diff --git a/code/01-setting-up/index.js b/code/01-setting-up/index.js deleted file mode 100644 index 898eaa43..00000000 --- a/code/01-setting-up/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import App from './modules/App' -render(, document.getElementById('app')) diff --git a/code/01-setting-up/modules/App.js b/code/01-setting-up/modules/App.js deleted file mode 100644 index 009ba9ba..00000000 --- a/code/01-setting-up/modules/App.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Hello, React Router!
    - } -}) - diff --git a/code/01-setting-up/package.json b/code/01-setting-up/package.json deleted file mode 100644 index 51792f8f..00000000 --- a/code/01-setting-up/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/01-setting-up/webpack.config.js b/code/01-setting-up/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/01-setting-up/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/02-rendering-a-router/index.html b/code/02-rendering-a-router/index.html deleted file mode 100644 index d3334c9e..00000000 --- a/code/02-rendering-a-router/index.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -My First React Router App -
    - - diff --git a/code/02-rendering-a-router/index.js b/code/02-rendering-a-router/index.js deleted file mode 100644 index 898eaa43..00000000 --- a/code/02-rendering-a-router/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import App from './modules/App' -render(, document.getElementById('app')) diff --git a/code/02-rendering-a-router/modules/App.js b/code/02-rendering-a-router/modules/App.js deleted file mode 100644 index 009ba9ba..00000000 --- a/code/02-rendering-a-router/modules/App.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Hello, React Router!
    - } -}) - diff --git a/code/02-rendering-a-router/package.json b/code/02-rendering-a-router/package.json deleted file mode 100644 index 7bf02386..00000000 --- a/code/02-rendering-a-router/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0-rc6" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/02-rendering-a-router/webpack.config.js b/code/02-rendering-a-router/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/02-rendering-a-router/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/03-navigating-with-link/index.html b/code/03-navigating-with-link/index.html deleted file mode 100644 index d3334c9e..00000000 --- a/code/03-navigating-with-link/index.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -My First React Router App -
    - - diff --git a/code/03-navigating-with-link/index.js b/code/03-navigating-with-link/index.js deleted file mode 100644 index 29062820..00000000 --- a/code/03-navigating-with-link/index.js +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, hashHistory } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' - -render(( - - - - - -), document.getElementById('app')) - diff --git a/code/03-navigating-with-link/modules/About.js b/code/03-navigating-with-link/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/03-navigating-with-link/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/03-navigating-with-link/modules/App.js b/code/03-navigating-with-link/modules/App.js deleted file mode 100644 index 009ba9ba..00000000 --- a/code/03-navigating-with-link/modules/App.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Hello, React Router!
    - } -}) - diff --git a/code/03-navigating-with-link/modules/Repos.js b/code/03-navigating-with-link/modules/Repos.js deleted file mode 100644 index 8dde1131..00000000 --- a/code/03-navigating-with-link/modules/Repos.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Repos
    - } -}) - diff --git a/code/03-navigating-with-link/package.json b/code/03-navigating-with-link/package.json deleted file mode 100644 index 51792f8f..00000000 --- a/code/03-navigating-with-link/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/03-navigating-with-link/webpack.config.js b/code/03-navigating-with-link/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/03-navigating-with-link/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/04-nested-routes/index.html b/code/04-nested-routes/index.html deleted file mode 100644 index d3334c9e..00000000 --- a/code/04-nested-routes/index.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -My First React Router App -
    - - diff --git a/code/04-nested-routes/index.js b/code/04-nested-routes/index.js deleted file mode 100644 index 29062820..00000000 --- a/code/04-nested-routes/index.js +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, hashHistory } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' - -render(( - - - - - -), document.getElementById('app')) - diff --git a/code/04-nested-routes/modules/About.js b/code/04-nested-routes/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/04-nested-routes/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/04-nested-routes/modules/App.js b/code/04-nested-routes/modules/App.js deleted file mode 100644 index ccddeabc..00000000 --- a/code/04-nested-routes/modules/App.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • About
    • -
    • Repos
    • -
    -
    - ) - } -}) - diff --git a/code/04-nested-routes/modules/Repos.js b/code/04-nested-routes/modules/Repos.js deleted file mode 100644 index 8dde1131..00000000 --- a/code/04-nested-routes/modules/Repos.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Repos
    - } -}) - diff --git a/code/04-nested-routes/package.json b/code/04-nested-routes/package.json deleted file mode 100644 index 51792f8f..00000000 --- a/code/04-nested-routes/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/04-nested-routes/webpack.config.js b/code/04-nested-routes/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/04-nested-routes/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/05-active-links/index.html b/code/05-active-links/index.html deleted file mode 100644 index d3334c9e..00000000 --- a/code/05-active-links/index.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -My First React Router App -
    - - diff --git a/code/05-active-links/index.js b/code/05-active-links/index.js deleted file mode 100644 index ad923f1f..00000000 --- a/code/05-active-links/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, hashHistory } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' - -render(( - - - - - - -), document.getElementById('app')) - diff --git a/code/05-active-links/modules/About.js b/code/05-active-links/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/05-active-links/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/05-active-links/modules/App.js b/code/05-active-links/modules/App.js deleted file mode 100644 index d6fa5092..00000000 --- a/code/05-active-links/modules/App.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/05-active-links/modules/Repos.js b/code/05-active-links/modules/Repos.js deleted file mode 100644 index 8dde1131..00000000 --- a/code/05-active-links/modules/Repos.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Repos
    - } -}) - diff --git a/code/05-active-links/package.json b/code/05-active-links/package.json deleted file mode 100644 index 51792f8f..00000000 --- a/code/05-active-links/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/05-active-links/webpack.config.js b/code/05-active-links/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/05-active-links/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/06-params/index.css b/code/06-params/index.css deleted file mode 100644 index fe9d7942..00000000 --- a/code/06-params/index.css +++ /dev/null @@ -1,4 +0,0 @@ -.active { - color: green; -} - diff --git a/code/06-params/index.html b/code/06-params/index.html deleted file mode 100644 index ed2d8111..00000000 --- a/code/06-params/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -My First React Router App - -
    - - diff --git a/code/06-params/index.js b/code/06-params/index.js deleted file mode 100644 index ad923f1f..00000000 --- a/code/06-params/index.js +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, hashHistory } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' - -render(( - - - - - - -), document.getElementById('app')) - diff --git a/code/06-params/modules/About.js b/code/06-params/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/06-params/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/06-params/modules/App.js b/code/06-params/modules/App.js deleted file mode 100644 index 6ec47cc9..00000000 --- a/code/06-params/modules/App.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/06-params/modules/NavLink.js b/code/06-params/modules/NavLink.js deleted file mode 100644 index a31a6c5d..00000000 --- a/code/06-params/modules/NavLink.js +++ /dev/null @@ -1,10 +0,0 @@ -// modules/NavLink.js -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return - } -}) - diff --git a/code/06-params/modules/Repos.js b/code/06-params/modules/Repos.js deleted file mode 100644 index 8dde1131..00000000 --- a/code/06-params/modules/Repos.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Repos
    - } -}) - diff --git a/code/06-params/package.json b/code/06-params/package.json deleted file mode 100644 index 51792f8f..00000000 --- a/code/06-params/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/06-params/webpack.config.js b/code/06-params/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/06-params/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/07-more-nesting/index.css b/code/07-more-nesting/index.css deleted file mode 100644 index fe9d7942..00000000 --- a/code/07-more-nesting/index.css +++ /dev/null @@ -1,4 +0,0 @@ -.active { - color: green; -} - diff --git a/code/07-more-nesting/index.html b/code/07-more-nesting/index.html deleted file mode 100644 index ed2d8111..00000000 --- a/code/07-more-nesting/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -My First React Router App - -
    - - diff --git a/code/07-more-nesting/index.js b/code/07-more-nesting/index.js deleted file mode 100644 index 35ce61ee..00000000 --- a/code/07-more-nesting/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, hashHistory } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' -import Repo from './modules/Repo' - -render(( - - - - - - - -), document.getElementById('app')) - diff --git a/code/07-more-nesting/modules/About.js b/code/07-more-nesting/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/07-more-nesting/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/07-more-nesting/modules/App.js b/code/07-more-nesting/modules/App.js deleted file mode 100644 index 6ec47cc9..00000000 --- a/code/07-more-nesting/modules/App.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/07-more-nesting/modules/NavLink.js b/code/07-more-nesting/modules/NavLink.js deleted file mode 100644 index a31a6c5d..00000000 --- a/code/07-more-nesting/modules/NavLink.js +++ /dev/null @@ -1,10 +0,0 @@ -// modules/NavLink.js -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return - } -}) - diff --git a/code/07-more-nesting/modules/Repo.js b/code/07-more-nesting/modules/Repo.js deleted file mode 100644 index 8cf9b7e6..00000000 --- a/code/07-more-nesting/modules/Repo.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return ( -
    -

    {this.props.params.repoName}

    -
    - ) - } -}) - diff --git a/code/07-more-nesting/modules/Repos.js b/code/07-more-nesting/modules/Repos.js deleted file mode 100644 index 9ae0d221..00000000 --- a/code/07-more-nesting/modules/Repos.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return ( -
    -

    Repos

    -
      -
    • React Router
    • -
    • React
    • -
    -
    - ) - } -}) - diff --git a/code/07-more-nesting/package.json b/code/07-more-nesting/package.json deleted file mode 100644 index 51792f8f..00000000 --- a/code/07-more-nesting/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/07-more-nesting/webpack.config.js b/code/07-more-nesting/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/07-more-nesting/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/08-index-routes/index.css b/code/08-index-routes/index.css deleted file mode 100644 index fe9d7942..00000000 --- a/code/08-index-routes/index.css +++ /dev/null @@ -1,4 +0,0 @@ -.active { - color: green; -} - diff --git a/code/08-index-routes/index.html b/code/08-index-routes/index.html deleted file mode 100644 index ed2d8111..00000000 --- a/code/08-index-routes/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -My First React Router App - -
    - - diff --git a/code/08-index-routes/index.js b/code/08-index-routes/index.js deleted file mode 100644 index 8f123f03..00000000 --- a/code/08-index-routes/index.js +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, hashHistory } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' -import Repo from './modules/Repo' - -render(( - - - - - - - - -), document.getElementById('app')) - diff --git a/code/08-index-routes/modules/About.js b/code/08-index-routes/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/08-index-routes/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/08-index-routes/modules/App.js b/code/08-index-routes/modules/App.js deleted file mode 100644 index 6ec47cc9..00000000 --- a/code/08-index-routes/modules/App.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/08-index-routes/modules/NavLink.js b/code/08-index-routes/modules/NavLink.js deleted file mode 100644 index a31a6c5d..00000000 --- a/code/08-index-routes/modules/NavLink.js +++ /dev/null @@ -1,10 +0,0 @@ -// modules/NavLink.js -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return - } -}) - diff --git a/code/08-index-routes/modules/Repo.js b/code/08-index-routes/modules/Repo.js deleted file mode 100644 index 8cf9b7e6..00000000 --- a/code/08-index-routes/modules/Repo.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return ( -
    -

    {this.props.params.repoName}

    -
    - ) - } -}) - diff --git a/code/08-index-routes/modules/Repos.js b/code/08-index-routes/modules/Repos.js deleted file mode 100644 index aefda123..00000000 --- a/code/08-index-routes/modules/Repos.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    Repos

    -
      -
    • React Router
    • -
    • React
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/08-index-routes/package.json b/code/08-index-routes/package.json deleted file mode 100644 index 51792f8f..00000000 --- a/code/08-index-routes/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/08-index-routes/webpack.config.js b/code/08-index-routes/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/08-index-routes/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/09-index-links/index.css b/code/09-index-links/index.css deleted file mode 100644 index fe9d7942..00000000 --- a/code/09-index-links/index.css +++ /dev/null @@ -1,4 +0,0 @@ -.active { - color: green; -} - diff --git a/code/09-index-links/index.html b/code/09-index-links/index.html deleted file mode 100644 index ed2d8111..00000000 --- a/code/09-index-links/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -My First React Router App - -
    - - diff --git a/code/09-index-links/index.js b/code/09-index-links/index.js deleted file mode 100644 index 91294180..00000000 --- a/code/09-index-links/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, hashHistory, IndexRoute } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' -import Repo from './modules/Repo' -import Home from './modules/Home' - -render(( - - - - - - - - - -), document.getElementById('app')) - diff --git a/code/09-index-links/modules/About.js b/code/09-index-links/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/09-index-links/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/09-index-links/modules/App.js b/code/09-index-links/modules/App.js deleted file mode 100644 index 6ec47cc9..00000000 --- a/code/09-index-links/modules/App.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/09-index-links/modules/Home.js b/code/09-index-links/modules/Home.js deleted file mode 100644 index 1ae39730..00000000 --- a/code/09-index-links/modules/Home.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Home
    - } -}) - diff --git a/code/09-index-links/modules/NavLink.js b/code/09-index-links/modules/NavLink.js deleted file mode 100644 index a31a6c5d..00000000 --- a/code/09-index-links/modules/NavLink.js +++ /dev/null @@ -1,10 +0,0 @@ -// modules/NavLink.js -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return - } -}) - diff --git a/code/09-index-links/modules/Repo.js b/code/09-index-links/modules/Repo.js deleted file mode 100644 index 8cf9b7e6..00000000 --- a/code/09-index-links/modules/Repo.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return ( -
    -

    {this.props.params.repoName}

    -
    - ) - } -}) - diff --git a/code/09-index-links/modules/Repos.js b/code/09-index-links/modules/Repos.js deleted file mode 100644 index aefda123..00000000 --- a/code/09-index-links/modules/Repos.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    Repos

    -
      -
    • React Router
    • -
    • React
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/09-index-links/package.json b/code/09-index-links/package.json deleted file mode 100644 index 51792f8f..00000000 --- a/code/09-index-links/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/09-index-links/webpack.config.js b/code/09-index-links/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/09-index-links/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/10-clean-urls/index.css b/code/10-clean-urls/index.css deleted file mode 100644 index fe9d7942..00000000 --- a/code/10-clean-urls/index.css +++ /dev/null @@ -1,4 +0,0 @@ -.active { - color: green; -} - diff --git a/code/10-clean-urls/index.html b/code/10-clean-urls/index.html deleted file mode 100644 index ed2d8111..00000000 --- a/code/10-clean-urls/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -My First React Router App - -
    - - diff --git a/code/10-clean-urls/index.js b/code/10-clean-urls/index.js deleted file mode 100644 index 91294180..00000000 --- a/code/10-clean-urls/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, hashHistory, IndexRoute } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' -import Repo from './modules/Repo' -import Home from './modules/Home' - -render(( - - - - - - - - - -), document.getElementById('app')) - diff --git a/code/10-clean-urls/modules/About.js b/code/10-clean-urls/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/10-clean-urls/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/10-clean-urls/modules/App.js b/code/10-clean-urls/modules/App.js deleted file mode 100644 index 346b6549..00000000 --- a/code/10-clean-urls/modules/App.js +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • Home
    • -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/10-clean-urls/modules/Home.js b/code/10-clean-urls/modules/Home.js deleted file mode 100644 index 1ae39730..00000000 --- a/code/10-clean-urls/modules/Home.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Home
    - } -}) - diff --git a/code/10-clean-urls/modules/NavLink.js b/code/10-clean-urls/modules/NavLink.js deleted file mode 100644 index a31a6c5d..00000000 --- a/code/10-clean-urls/modules/NavLink.js +++ /dev/null @@ -1,10 +0,0 @@ -// modules/NavLink.js -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return - } -}) - diff --git a/code/10-clean-urls/modules/Repo.js b/code/10-clean-urls/modules/Repo.js deleted file mode 100644 index 8cf9b7e6..00000000 --- a/code/10-clean-urls/modules/Repo.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return ( -
    -

    {this.props.params.repoName}

    -
    - ) - } -}) - diff --git a/code/10-clean-urls/modules/Repos.js b/code/10-clean-urls/modules/Repos.js deleted file mode 100644 index aefda123..00000000 --- a/code/10-clean-urls/modules/Repos.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    Repos

    -
      -
    • React Router
    • -
    • React
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/10-clean-urls/package.json b/code/10-clean-urls/package.json deleted file mode 100644 index 51792f8f..00000000 --- a/code/10-clean-urls/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base ." - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/10-clean-urls/webpack.config.js b/code/10-clean-urls/webpack.config.js deleted file mode 100644 index 8d895847..00000000 --- a/code/10-clean-urls/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/11-productionish-server/index.css b/code/11-productionish-server/index.css deleted file mode 100644 index fe9d7942..00000000 --- a/code/11-productionish-server/index.css +++ /dev/null @@ -1,4 +0,0 @@ -.active { - color: green; -} - diff --git a/code/11-productionish-server/index.html b/code/11-productionish-server/index.html deleted file mode 100644 index 70033e42..00000000 --- a/code/11-productionish-server/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -My First React Router App - -
    - - diff --git a/code/11-productionish-server/index.js b/code/11-productionish-server/index.js deleted file mode 100644 index 6f15d1e5..00000000 --- a/code/11-productionish-server/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, browserHistory, IndexRoute } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' -import Repo from './modules/Repo' -import Home from './modules/Home' - -render(( - - - - - - - - - -), document.getElementById('app')) - diff --git a/code/11-productionish-server/modules/About.js b/code/11-productionish-server/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/11-productionish-server/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/11-productionish-server/modules/App.js b/code/11-productionish-server/modules/App.js deleted file mode 100644 index 346b6549..00000000 --- a/code/11-productionish-server/modules/App.js +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • Home
    • -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/11-productionish-server/modules/Home.js b/code/11-productionish-server/modules/Home.js deleted file mode 100644 index 1ae39730..00000000 --- a/code/11-productionish-server/modules/Home.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Home
    - } -}) - diff --git a/code/11-productionish-server/modules/NavLink.js b/code/11-productionish-server/modules/NavLink.js deleted file mode 100644 index a31a6c5d..00000000 --- a/code/11-productionish-server/modules/NavLink.js +++ /dev/null @@ -1,10 +0,0 @@ -// modules/NavLink.js -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return - } -}) - diff --git a/code/11-productionish-server/modules/Repo.js b/code/11-productionish-server/modules/Repo.js deleted file mode 100644 index 8cf9b7e6..00000000 --- a/code/11-productionish-server/modules/Repo.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return ( -
    -

    {this.props.params.repoName}

    -
    - ) - } -}) - diff --git a/code/11-productionish-server/modules/Repos.js b/code/11-productionish-server/modules/Repos.js deleted file mode 100644 index aefda123..00000000 --- a/code/11-productionish-server/modules/Repos.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    Repos

    -
      -
    • React Router
    • -
    • React
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/11-productionish-server/package.json b/code/11-productionish-server/package.json deleted file mode 100644 index 9bb35e8f..00000000 --- a/code/11-productionish-server/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "webpack-dev-server --inline --content-base . --history-api-fallback" - }, - "author": "", - "license": "ISC", - "dependencies": { - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/11-productionish-server/webpack.config.js b/code/11-productionish-server/webpack.config.js deleted file mode 100644 index 4e4291f1..00000000 --- a/code/11-productionish-server/webpack.config.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - entry: './index.js', - - output: { - filename: 'bundle.js', - publicPath: '/' - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/12-navigating/index.js b/code/12-navigating/index.js deleted file mode 100644 index 6f15d1e5..00000000 --- a/code/12-navigating/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, browserHistory, IndexRoute } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' -import Repo from './modules/Repo' -import Home from './modules/Home' - -render(( - - - - - - - - - -), document.getElementById('app')) - diff --git a/code/12-navigating/modules/About.js b/code/12-navigating/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/12-navigating/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/12-navigating/modules/App.js b/code/12-navigating/modules/App.js deleted file mode 100644 index 346b6549..00000000 --- a/code/12-navigating/modules/App.js +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • Home
    • -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/12-navigating/modules/Home.js b/code/12-navigating/modules/Home.js deleted file mode 100644 index 1ae39730..00000000 --- a/code/12-navigating/modules/Home.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Home
    - } -}) - diff --git a/code/12-navigating/modules/NavLink.js b/code/12-navigating/modules/NavLink.js deleted file mode 100644 index a31a6c5d..00000000 --- a/code/12-navigating/modules/NavLink.js +++ /dev/null @@ -1,10 +0,0 @@ -// modules/NavLink.js -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return - } -}) - diff --git a/code/12-navigating/modules/Repo.js b/code/12-navigating/modules/Repo.js deleted file mode 100644 index 8cf9b7e6..00000000 --- a/code/12-navigating/modules/Repo.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return ( -
    -

    {this.props.params.repoName}

    -
    - ) - } -}) - diff --git a/code/12-navigating/modules/Repos.js b/code/12-navigating/modules/Repos.js deleted file mode 100644 index aefda123..00000000 --- a/code/12-navigating/modules/Repos.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    Repos

    -
      -
    • React Router
    • -
    • React
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/12-navigating/package.json b/code/12-navigating/package.json deleted file mode 100644 index 2cb49262..00000000 --- a/code/12-navigating/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", - "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", - "start:prod": "webpack && node server.js" - }, - "author": "", - "license": "ISC", - "dependencies": { - "compression": "^1.6.1", - "if-env": "^1.0.0", - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/12-navigating/public/index.css b/code/12-navigating/public/index.css deleted file mode 100644 index fe9d7942..00000000 --- a/code/12-navigating/public/index.css +++ /dev/null @@ -1,4 +0,0 @@ -.active { - color: green; -} - diff --git a/code/12-navigating/public/index.html b/code/12-navigating/public/index.html deleted file mode 100644 index 70033e42..00000000 --- a/code/12-navigating/public/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -My First React Router App - -
    - - diff --git a/code/12-navigating/server.js b/code/12-navigating/server.js deleted file mode 100644 index be0357d1..00000000 --- a/code/12-navigating/server.js +++ /dev/null @@ -1,21 +0,0 @@ -var express = require('express') -var path = require('path') -var compression = require('compression') - -var app = express() - -app.use(compression()) - -// serve our static stuff like index.css -app.use(express.static(path.join(__dirname, 'public'))) - -// send all requests to index.html so browserHistory works -app.get('*', function (req, res) { - res.sendFile(path.join(__dirname, 'public', 'index.html')) -}) - -var PORT = process.env.PORT || 8080 -app.listen(PORT, function() { - console.log('Production Express server running at localhost:' + PORT) -}) - diff --git a/code/12-navigating/webpack.config.js b/code/12-navigating/webpack.config.js deleted file mode 100644 index a48b0ce8..00000000 --- a/code/12-navigating/webpack.config.js +++ /dev/null @@ -1,24 +0,0 @@ -var webpack = require('webpack') - -module.exports = { - entry: './index.js', - - output: { - path: 'public', - filename: 'bundle.js', - publicPath: '/' - }, - - plugins: process.env.NODE_ENV === 'production' ? [ - new webpack.optimize.DedupePlugin(), - new webpack.optimize.OccurrenceOrderPlugin(), - new webpack.optimize.UglifyJsPlugin() - ] : [], - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/13-server-rendering/index.js b/code/13-server-rendering/index.js deleted file mode 100644 index 6f15d1e5..00000000 --- a/code/13-server-rendering/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, Route, browserHistory, IndexRoute } from 'react-router' -import App from './modules/App' -import About from './modules/About' -import Repos from './modules/Repos' -import Repo from './modules/Repo' -import Home from './modules/Home' - -render(( - - - - - - - - - -), document.getElementById('app')) - diff --git a/code/13-server-rendering/modules/About.js b/code/13-server-rendering/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/13-server-rendering/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/13-server-rendering/modules/App.js b/code/13-server-rendering/modules/App.js deleted file mode 100644 index 346b6549..00000000 --- a/code/13-server-rendering/modules/App.js +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • Home
    • -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/13-server-rendering/modules/Home.js b/code/13-server-rendering/modules/Home.js deleted file mode 100644 index 1ae39730..00000000 --- a/code/13-server-rendering/modules/Home.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Home
    - } -}) - diff --git a/code/13-server-rendering/modules/NavLink.js b/code/13-server-rendering/modules/NavLink.js deleted file mode 100644 index a31a6c5d..00000000 --- a/code/13-server-rendering/modules/NavLink.js +++ /dev/null @@ -1,10 +0,0 @@ -// modules/NavLink.js -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return - } -}) - diff --git a/code/13-server-rendering/modules/Repo.js b/code/13-server-rendering/modules/Repo.js deleted file mode 100644 index 6e14ba84..00000000 --- a/code/13-server-rendering/modules/Repo.js +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - const { userName, repoName } = this.props.params - return ( -
    -

    {userName} / {repoName}

    -
    - ) - } -}) - diff --git a/code/13-server-rendering/modules/Repos.js b/code/13-server-rendering/modules/Repos.js deleted file mode 100644 index 96fb4334..00000000 --- a/code/13-server-rendering/modules/Repos.js +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - contextTypes: { - router: React.PropTypes.object - }, - - handleSubmit(event) { - event.preventDefault() - const userName = event.target.elements[0].value - const repo = event.target.elements[1].value - const path = `/repos/${userName}/${repo}` - this.context.router.push(path) - }, - - render() { - return ( -
    -

    Repos

    -
      -
    • React Router
    • -
    • React
    • -
    • -
      - / {' '} - {' '} - -
      -
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/13-server-rendering/package.json b/code/13-server-rendering/package.json deleted file mode 100644 index 2cb49262..00000000 --- a/code/13-server-rendering/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", - "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", - "start:prod": "webpack && node server.js" - }, - "author": "", - "license": "ISC", - "dependencies": { - "compression": "^1.6.1", - "if-env": "^1.0.0", - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/13-server-rendering/public/index.css b/code/13-server-rendering/public/index.css deleted file mode 100644 index fe9d7942..00000000 --- a/code/13-server-rendering/public/index.css +++ /dev/null @@ -1,4 +0,0 @@ -.active { - color: green; -} - diff --git a/code/13-server-rendering/public/index.html b/code/13-server-rendering/public/index.html deleted file mode 100644 index 70033e42..00000000 --- a/code/13-server-rendering/public/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -My First React Router App - -
    - - diff --git a/code/13-server-rendering/server.js b/code/13-server-rendering/server.js deleted file mode 100644 index be0357d1..00000000 --- a/code/13-server-rendering/server.js +++ /dev/null @@ -1,21 +0,0 @@ -var express = require('express') -var path = require('path') -var compression = require('compression') - -var app = express() - -app.use(compression()) - -// serve our static stuff like index.css -app.use(express.static(path.join(__dirname, 'public'))) - -// send all requests to index.html so browserHistory works -app.get('*', function (req, res) { - res.sendFile(path.join(__dirname, 'public', 'index.html')) -}) - -var PORT = process.env.PORT || 8080 -app.listen(PORT, function() { - console.log('Production Express server running at localhost:' + PORT) -}) - diff --git a/code/13-server-rendering/webpack.config.js b/code/13-server-rendering/webpack.config.js deleted file mode 100644 index a48b0ce8..00000000 --- a/code/13-server-rendering/webpack.config.js +++ /dev/null @@ -1,24 +0,0 @@ -var webpack = require('webpack') - -module.exports = { - entry: './index.js', - - output: { - path: 'public', - filename: 'bundle.js', - publicPath: '/' - }, - - plugins: process.env.NODE_ENV === 'production' ? [ - new webpack.optimize.DedupePlugin(), - new webpack.optimize.OccurrenceOrderPlugin(), - new webpack.optimize.UglifyJsPlugin() - ] : [], - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/14-whats-next/index.js b/code/14-whats-next/index.js deleted file mode 100644 index 51a72600..00000000 --- a/code/14-whats-next/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import { render } from 'react-dom' -import { Router, browserHistory } from 'react-router' -import routes from './modules/routes' - -render( - , - document.getElementById('app') -) - diff --git a/code/14-whats-next/modules/About.js b/code/14-whats-next/modules/About.js deleted file mode 100644 index 546c5e7c..00000000 --- a/code/14-whats-next/modules/About.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    About
    - } -}) - diff --git a/code/14-whats-next/modules/App.js b/code/14-whats-next/modules/App.js deleted file mode 100644 index 346b6549..00000000 --- a/code/14-whats-next/modules/App.js +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - render() { - return ( -
    -

    React Router Tutorial

    -
      -
    • Home
    • -
    • About
    • -
    • Repos
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/14-whats-next/modules/Home.js b/code/14-whats-next/modules/Home.js deleted file mode 100644 index 1ae39730..00000000 --- a/code/14-whats-next/modules/Home.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - return
    Home
    - } -}) - diff --git a/code/14-whats-next/modules/NavLink.js b/code/14-whats-next/modules/NavLink.js deleted file mode 100644 index a31a6c5d..00000000 --- a/code/14-whats-next/modules/NavLink.js +++ /dev/null @@ -1,10 +0,0 @@ -// modules/NavLink.js -import React from 'react' -import { Link } from 'react-router' - -export default React.createClass({ - render() { - return - } -}) - diff --git a/code/14-whats-next/modules/Repo.js b/code/14-whats-next/modules/Repo.js deleted file mode 100644 index 6e14ba84..00000000 --- a/code/14-whats-next/modules/Repo.js +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react' - -export default React.createClass({ - render() { - const { userName, repoName } = this.props.params - return ( -
    -

    {userName} / {repoName}

    -
    - ) - } -}) - diff --git a/code/14-whats-next/modules/Repos.js b/code/14-whats-next/modules/Repos.js deleted file mode 100644 index 96fb4334..00000000 --- a/code/14-whats-next/modules/Repos.js +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react' -import NavLink from './NavLink' - -export default React.createClass({ - contextTypes: { - router: React.PropTypes.object - }, - - handleSubmit(event) { - event.preventDefault() - const userName = event.target.elements[0].value - const repo = event.target.elements[1].value - const path = `/repos/${userName}/${repo}` - this.context.router.push(path) - }, - - render() { - return ( -
    -

    Repos

    -
      -
    • React Router
    • -
    • React
    • -
    • -
      - / {' '} - {' '} - -
      -
    • -
    - {this.props.children} -
    - ) - } -}) - diff --git a/code/14-whats-next/modules/routes.js b/code/14-whats-next/modules/routes.js deleted file mode 100644 index 72e9b82e..00000000 --- a/code/14-whats-next/modules/routes.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' -import { Router, Route, browserHistory, IndexRoute } from 'react-router' -import App from './App' -import About from './About' -import Repos from './Repos' -import Repo from './Repo' -import Home from './Home' - -module.exports = ( - - - - - - - -) diff --git a/code/14-whats-next/package.json b/code/14-whats-next/package.json deleted file mode 100644 index 21569ed1..00000000 --- a/code/14-whats-next/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "tutorial", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", - "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", - "start:prod": "npm run build && node server.bundle.js", - "build:client": "webpack", - "build:server": "webpack --config webpack.server.config.js", - "build": "npm run build:client && npm run build:server" - }, - "author": "", - "license": "ISC", - "dependencies": { - "compression": "^1.6.1", - "if-env": "^1.0.0", - "react": "^0.14.7", - "react-dom": "^0.14.7", - "react-router": "^2.0.0" - }, - "devDependencies": { - "babel-core": "^6.5.1", - "babel-loader": "^6.2.2", - "babel-preset-es2015": "^6.5.0", - "babel-preset-react": "^6.5.0", - "http-server": "^0.8.5", - "webpack": "^1.12.13", - "webpack-dev-server": "^1.14.1" - } -} diff --git a/code/14-whats-next/public/index.css b/code/14-whats-next/public/index.css deleted file mode 100644 index fe9d7942..00000000 --- a/code/14-whats-next/public/index.css +++ /dev/null @@ -1,4 +0,0 @@ -.active { - color: green; -} - diff --git a/code/14-whats-next/public/index.html b/code/14-whats-next/public/index.html deleted file mode 100644 index 70033e42..00000000 --- a/code/14-whats-next/public/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - -My First React Router App - -
    - - diff --git a/code/14-whats-next/server.js b/code/14-whats-next/server.js deleted file mode 100644 index b9ac9773..00000000 --- a/code/14-whats-next/server.js +++ /dev/null @@ -1,49 +0,0 @@ -import express from 'express' -import path from 'path' -import compression from 'compression' -import React from 'react' -import { renderToString } from 'react-dom/server' -import { match, RouterContext } from 'react-router' -import routes from './modules/routes' - -var app = express() - -app.use(compression()) - -// serve our static stuff like index.css -app.use(express.static(path.join(__dirname, 'public'))) - -// send all requests to index.html so browserHistory works -app.get('*', (req, res) => { - match({ routes, location: req.url }, (err, redirect, props) => { - if (err) { - res.status(500).send(err.message) - } else if (redirect) { - res.redirect(redirect.pathname + redirect.search) - } else if (props) { - // hey we made it! - const appHtml = renderToString() - res.send(renderPage(appHtml)) - } else { - res.status(404).send('Not Found') - } - }) -}) - -function renderPage(appHtml) { - return ` - - - - My First React Router App - -
    ${appHtml}
    - - ` -} - -var PORT = process.env.PORT || 8080 -app.listen(PORT, function() { - console.log('Production Express server running at localhost:' + PORT) -}) - diff --git a/code/14-whats-next/webpack.config.js b/code/14-whats-next/webpack.config.js deleted file mode 100644 index a48b0ce8..00000000 --- a/code/14-whats-next/webpack.config.js +++ /dev/null @@ -1,24 +0,0 @@ -var webpack = require('webpack') - -module.exports = { - entry: './index.js', - - output: { - path: 'public', - filename: 'bundle.js', - publicPath: '/' - }, - - plugins: process.env.NODE_ENV === 'production' ? [ - new webpack.optimize.DedupePlugin(), - new webpack.optimize.OccurrenceOrderPlugin(), - new webpack.optimize.UglifyJsPlugin() - ] : [], - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } -} - diff --git a/code/14-whats-next/webpack.server.config.js b/code/14-whats-next/webpack.server.config.js deleted file mode 100644 index 4350279f..00000000 --- a/code/14-whats-next/webpack.server.config.js +++ /dev/null @@ -1,34 +0,0 @@ -var fs = require('fs') -var path = require('path') - -module.exports = { - - entry: path.resolve(__dirname, 'server.js'), - - output: { - filename: 'server.bundle.js' - }, - - target: 'node', - - // keep node_module paths out of the bundle - externals: fs.readdirSync(path.resolve(__dirname, 'node_modules')).concat([ - 'react-dom/server' - ]).reduce(function (ext, mod) { - ext[mod] = 'commonjs ' + mod - return ext - }, {}), - - node: { - __filename: true, - __dirname: true - }, - - module: { - loaders: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?presets[]=es2015&presets[]=react' } - ] - } - -} -