var express = require('express');
var path = require('path');
var app = express();
app.use(express.static('./dist'));
app.use('/', function (req, res) {
res.sendFile(path.resolve('client/index.html'));
});
var port = 3000;
app.listen(port, function(error) {
if (error) throw error;
console.log("Express server listening on port", port);
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>React Todo List</title>
</head>
<body>
<h1>This is not a React app yet!</h1>
<div id="app"></div>
<script src="bundle.js"></script>
</body>
</html>
{
"name": "react-todo-list",
"version": "1.0.0",
"description": "A simple todo list app built with React, Redux and Webpack",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"serve": "nodemon server/server.js --ignore components"
},
"repository": {
"type": "git",
"url": "https://github.com/kweiberth/react-todo-list.git"
},
"author": "Kurt Weiberth",
"license": "ISC",
"dependencies": {
"babel-core": "^6.4.5",
"babel-loader": "^6.2.2",
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"babel-preset-react-hmre": "^1.1.0",
"express": "^4.13.4",
"react": "^0.14.7",
"react-dom": "^0.14.7",
"webpack": "^1.12.13",
"webpack-dev-middleware": "^1.5.1",
"webpack-hot-middleware": "^2.6.4"
}
}
var express = require('express');
var path = require('path');
var config = require('../webpack.config.js');
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var webpackHotMiddleware = require('webpack-hot-middleware');
var app = express();
var compiler = webpack(config);
app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath}));
app.use(webpackHotMiddleware(compiler));
app.use(express.static('./dist'));
app.use('/', function (req, res) {
res.sendFile(path.resolve('client/index.html'));
});
var port = 3000;
app.listen(port, function(error) {
if (error) throw error;
console.log("Express server listening on port", port);
});
import React, {Component} from 'react'
class TextDisplay extend Component{
}
export default TextDisplay
import React, {Component} from 'react'
//JSX要看到import了React 才可以編譯
class TextDisplay extends Component{
render() {
return (
<div>
<div> THis is text display</div>
<div> if we have two div we need to wrap it.</div>
</div>
)};
}
export default TextDisplay
import React, { Component } from 'react'
class App extends Component {
render() {
return (
<div>
<div>This is definitely a React app now!</div>
<TextDisplay/>
</div>
)}
}
export default App
import React, { Component } from 'react'
class TextInput extends Component {
constructor() {
super()
this.state = {
inputText: ' sdxt'
}
}
render() {
return (
<div>
<input
type="text"
placeholder="This is going to be text"
value={this.state.inputText}
/>
</div>
)
}
}
export default TextInput
import React, { Component } from 'react'
class TextInput extends Component {
constructor() {
super()
this.state = {
inputText: ' sdsxt'
}
}
handleChange(){
console.log("ch")
}
render() {
return (
<div>
<input
type="text"
placeholder="This is going to be text"
value={this.state.inputText}
onChange={this.handleChange}
/>
</div>
)
}
}
export default TextInput