├── basic_webpack_react
├── demo01
│ ├── README.md
│ ├── webpack.config.js
│ ├── index.html
│ └── app.js
├── demo02
│ ├── webpack.config.js
│ ├── index.html
│ └── app.js
├── demo03
│ ├── webpack.config.js
│ ├── index.html
│ └── app.js
├── demo04
│ ├── webpack.config.js
│ ├── index.html
│ └── app.js
├── demo05
│ ├── webpack.config.js
│ ├── index.html
│ └── app.js
├── demo06
│ ├── webpack.config.js
│ ├── index.html
│ └── app.js
├── webpack.config.js
├── .gitignore
├── README.md
├── index.html
├── webpack.base.js
├── app.js
└── package.json
├── react_webpack_cookbook_demo
└── 第一步
│ ├── .gitignore
│ ├── app
│ ├── main.js
│ └── components.js
│ ├── build
│ └── index.html
│ ├── webpack.config.js
│ ├── package.json
│ └── README.md
└── README.md
/basic_webpack_react/demo01/README.md:
--------------------------------------------------------------------------------
1 | # JSX语法
--------------------------------------------------------------------------------
/react_webpack_cookbook_demo/第一步/.gitignore:
--------------------------------------------------------------------------------
1 | build/bundle.js
--------------------------------------------------------------------------------
/basic_webpack_react/demo02/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = require('../webpack.base.js')
--------------------------------------------------------------------------------
/basic_webpack_react/demo03/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = require('../webpack.base.js')
--------------------------------------------------------------------------------
/basic_webpack_react/demo04/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = require('../webpack.base.js')
--------------------------------------------------------------------------------
/basic_webpack_react/demo05/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = require('../webpack.base.js')
--------------------------------------------------------------------------------
/basic_webpack_react/demo06/webpack.config.js:
--------------------------------------------------------------------------------
1 | module.exports = require('../webpack.base.js')
--------------------------------------------------------------------------------
/basic_webpack_react/webpack.config.js:
--------------------------------------------------------------------------------
1 | var base = require('./webpack.base.js')
2 | module.exports = base
3 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo01/webpack.config.js:
--------------------------------------------------------------------------------
1 | var base = require('../webpack.base.js')
2 | module.exports = base
--------------------------------------------------------------------------------
/react_webpack_cookbook_demo/第一步/app/main.js:
--------------------------------------------------------------------------------
1 | var component = require('./components.js')
2 | document.body.appendChild(component())
--------------------------------------------------------------------------------
/basic_webpack_react/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | build
3 | .ide
4 | demo01/build
5 | demo02/build
6 | demo03/build
7 | demo04/build
8 | demo05/build
9 | demo06/build
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Webpack&React
2 |
3 | - [basic_webpack_react 用Webpack构建例子,作为了解Webpack构建React应用是一个还不错的入门教程](https://github.com/bulldog478/Webpack-React/tree/master/basic_webpack_react)
--------------------------------------------------------------------------------
/react_webpack_cookbook_demo/第一步/app/components.js:
--------------------------------------------------------------------------------
1 | module.exports = function(){
2 | var element = document.createElement('h1')
3 | element.innerHTML = 'Hello world'
4 |
5 | return element
6 | }
--------------------------------------------------------------------------------
/react_webpack_cookbook_demo/第一步/build/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 第一步
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/react_webpack_cookbook_demo/第一步/webpack.config.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 |
3 | module.exports = {
4 | entry:path.resolve(__dirname,'app/main.js'),
5 | output:{
6 | path:path.resolve(__dirname,'build'),
7 | filename:'bundle.js'
8 | }
9 | }
--------------------------------------------------------------------------------
/basic_webpack_react/demo01/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello JSX
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo04/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello Ref
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo05/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello State
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo02/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello Component
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo03/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello Children
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo06/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello LifeCycle
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo01/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom';
3 |
4 | var arr = [
5 | Hello world!
,
6 | React is awesome
7 | ]
8 |
9 | render(
10 | ,
13 | document.getElementById('app')
14 | )
--------------------------------------------------------------------------------
/basic_webpack_react/README.md:
--------------------------------------------------------------------------------
1 | # Basic Webpack & React
2 | > 非常朴素的入门教程:)
3 |
4 | [在线demo地址](http://www.shineyao.cn/basic_webpack_react/)
5 |
6 | - 例子主要是阮一峰老师的教程,自己经过了一些小修改,算一点小的知识扩展吧。
7 | - 用Webpack构建例子,作为了解Webpack构建React应用是一个还不错的入门教程。
8 |
9 | ## 运行
10 |
11 | 1. 进入demo0x
12 | 2. 执行webpack
13 | 3. 打开index.html
14 |
15 |
--------------------------------------------------------------------------------
/react_webpack_cookbook_demo/第一步/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "first-step",
3 | "version": "1.0.0",
4 | "description": "webpack",
5 | "main": "webpack.config.js",
6 | "scripts": {
7 | "build": "webpack"
8 | },
9 | "keywords": [
10 | "webpack"
11 | ],
12 | "author": "Zan",
13 | "license": "MIT"
14 | }
15 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo02/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom'
3 |
4 | var background={
5 | backgroundColor:'blue'
6 | }
7 |
8 | //创建一个组件
9 | var HelloWorld = React.createClass({
10 | render: function(){
11 | return(
12 | Hello {this.props.name}
13 | )
14 | }
15 | })
16 |
17 | render(
18 | ,
19 | document.getElementById('app')
20 | )
21 |
22 |
23 |
--------------------------------------------------------------------------------
/basic_webpack_react/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Navigator
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo03/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom'
3 |
4 | var KinderGarden = React.createClass({
5 | render:function(){
6 | return(
7 |
8 | {
9 | this.props.children.map(function(child){
10 | return - {child}
11 | })
12 | }
13 |
14 | )
15 | }
16 | })
17 |
18 | render(
19 |
20 | hello
21 | world
22 | ,
23 | document.getElementById('app')
24 | )
--------------------------------------------------------------------------------
/basic_webpack_react/demo04/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom'
3 |
4 | var KinderGarden = React.createClass({
5 | clickHandler: function(){
6 | this.refs.myTextInput.focus();
7 | },
8 | render:function(){
9 | return(
10 |
11 |
12 |
13 |
14 | )
15 | }
16 | })
17 |
18 | render(
19 |
20 | ,
21 | document.getElementById('app')
22 | )
--------------------------------------------------------------------------------
/basic_webpack_react/demo05/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom'
3 |
4 | var KinderGarden = React.createClass({
5 | getInitialState: function(){
6 | return {
7 | like: false
8 | }
9 | },
10 | changeHandler:function(){
11 | //this.state.like = !this.state.like //不能这样用,这样不会调用this.render
12 | this.setState({like:!this.state.like})
13 | },
14 | render:function(){
15 | let text = this.state.like?'React 非常棒':'React还是没有MVVM好……'
16 | return(
17 |
21 | )
22 | }
23 | })
24 |
25 | render(
26 |
27 | ,
28 | document.getElementById('app')
29 | )
--------------------------------------------------------------------------------
/basic_webpack_react/webpack.base.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | entry: "./app.js",
3 | output: {
4 | path: './build',
5 | publicPath:'build/',
6 | filename: "bundle.js"
7 | },
8 | module: {
9 | loaders: [
10 | { test: /\.css$/, loader: "style!css" },
11 | {test: /\.less/,loader: 'style!css!less'},
12 | {
13 | test: /\.js$/,
14 | exclude: /node_modules/,
15 | loader: "babel",
16 | query:
17 | {
18 | presets:['react','es2015']
19 | }
20 | }
21 | ]
22 | },
23 | resolve:{
24 | extensions:['','.js','.json']
25 | },
26 | devtool:'source-map'
27 | };
28 |
--------------------------------------------------------------------------------
/basic_webpack_react/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom'
3 | import {Pagination} from 'react-bootstrap'
4 |
5 | let NaviPage = React.createClass({
6 | getInitialState(){
7 | return{
8 | activePage:0
9 | }
10 | },
11 | handleSelect(event, selectEvent){
12 | let pageNum = selectEvent.eventKey
13 | window.open('demo0'+ pageNum +'/index.html')
14 | },
15 | render(){
16 | return(
17 |
18 |
{this.props.title}
19 |
24 |
25 |
本教程github地址
26 |
27 | )
28 | }
29 | })
30 |
31 | render(
32 | ,
33 | document.getElementById('navi')
34 | )
--------------------------------------------------------------------------------
/basic_webpack_react/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "basic_webapack_react_tuts",
3 | "version": "1.0.0",
4 | "description": "webapck react",
5 | "main": "app.js",
6 | "dependencies": {
7 | "babel-core": "^6.7.6",
8 | "babel-plugin-react-transform": "^2.0.2",
9 | "babel-loader": "^6.2.4",
10 | "babel-preset-react": "^6.5.0",
11 | "react-dom": "^15.0.1",
12 | "babel-preset-es2015": "^6.6.0",
13 | "react-hot-loader": "^1.3.0",
14 | "react": "^15.0.1",
15 | "css-loader": "^0.23.1",
16 | "style-loader": "^0.13.1",
17 | "webpack": "^1.13.0",
18 | "webpack-dev-server": "^1.14.1",
19 | "react-bootstrap": "^0.28.5"
20 | },
21 | "devDependencies": {},
22 | "scripts": {
23 | "test": "echo \"Error: no test specified\" && exit 1"
24 | },
25 | "keywords": [
26 | "webapck",
27 | "react"
28 | ],
29 | "author": "Zan",
30 | "license": "MIT"
31 | }
32 |
--------------------------------------------------------------------------------
/basic_webpack_react/demo06/app.js:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import {render} from 'react-dom'
3 |
4 | var KinderGarden = React.createClass({
5 | getInitialState(){
6 | return {
7 | opacity: 1.0
8 | }
9 | },
10 | componentWillMount(){
11 | console.log('dom will be mounted') //仅执行一次
12 | },
13 | componentDidMount(){
14 | console.log('dom has be mounted') //仅执行一次
15 | this.timer = setInterval(() => {
16 | var opacity = this.state.opacity;
17 | this.setState({
18 | opacity:opacity
19 | })
20 | this.state.opacity -= 0.05;
21 | },100)
22 | },
23 | componentDidUpdate(nextProps, nextState){
24 | console.log(nextState.opacity)
25 | if(this.state.opacity < 0.1){
26 | this.state.opacity = 1.0
27 | }
28 | },
29 | render:function(){
30 | var { name, word } = this.props
31 | return(
32 |
33 |
Hello {name},{word}
34 |
35 | )
36 | }
37 | })
38 |
39 | render(
40 |
41 | ,
42 | document.getElementById('app')
43 | )
--------------------------------------------------------------------------------
/react_webpack_cookbook_demo/第一步/README.md:
--------------------------------------------------------------------------------
1 | ## 安装Webpack
2 | npm i webpack --save-dev 然后通过node_modules/.bin/webpack 运行
3 | or npm i -g webpack 直接webpack运行
4 |
5 | ## 目录结构
6 | - /app
7 | + main.js
8 | + component.js
9 | - /build
10 | + bundle.js(构建生成)
11 | + index.html
12 | - package.json
13 | - webpack.config.js
14 |
15 | ## 设置Webpack
16 | webpack.config.js
17 | ```js
18 | var path = require('path')
19 |
20 | module.exports = {
21 | entry:path.resolve(__dirname,'app/main.js'),
22 | output:{
23 | path:path.resolve(__dirname,'build'),
24 | filename:'bundle.js'
25 | }
26 | }
27 | ```
28 |
29 | ## 运行你的第一个编译
30 |
31 | app/component.js
32 | ```js
33 | module.exports = function(){
34 | var element = document.createElement('h1')
35 | element.innerHTML = 'Hello world'
36 |
37 | return element
38 | }
39 | ```
40 |
41 | app/main.js
42 | ```js
43 | var component = require('./components.js')
44 | document.body.appendChild(component())
45 | ```
46 |
47 | build/index.html
48 | ```html
49 |
50 |
51 |
52 |
53 | 第一步
54 |
55 |
56 |
57 |
58 |
59 | ```
60 |
61 | ## 构建
62 | 在控制台执行webpack(全局安装)
63 |
64 | ## 运行应用
65 | ### 设置`package.json` __scripts__'
66 |
67 | npm是一个非常好用的用来编译的指令,通过npm你可以不用担心项目中使用什么技术,你还要调用这个指令就可以了,只要你在`package.json`中设置`script`就可以了
68 |
69 | 本案例我们把编译步骤放到npm run build中:
70 |
71 | 1. 执行npm init
72 | 2. 在package.json加入`"scripts": {"build": "webpack"}`
73 | 3. npm run build就可以编译了
74 |
75 |
--------------------------------------------------------------------------------