从0使用webpack构建reactjs

原创 2016年05月30日 18:53:22

创建一个文件夹

npm init -f

如果不加 -f ,会有一系列设置步骤,-f会生成一个默认设置的package.json文件

如果安装低版本的react ,配置文件版本直接按照如下:

{
  "name": "xxx",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server --hot --progress --colors",
    "build": "webpack --progress --colors"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^5.8.25",
     "babel-loader": "^5.3.2",
     "css-loader": "^0.12.1",
     "react": "^0.13.3",
     "react-hot-loader": "^1.3.0",
     "react-router": "^0.13.3",
     "webpack": "^1.12.2",
     "webpack-dev-server": "^1.11.0"
  }
}

创建webpack配置文件:

touch webpack.config.js

相关配置项:

var webpack = require('webpack');
module.exports = {
    entry: [
      'webpack/hot/only-dev-server',
      "./js/app.js"
    ],
    output: {
        path: './build',
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /\.js?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/ },
            { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'},
            { test: /\.css$/, loader: "style!css" }
        ]
    },
    resolve:{
        extensions:['','.js','.json']
    },
    plugins: [
      new webpack.NoErrorsPlugin()
    ]
};

相同目录下新建index.html:

touch index.html

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>New React App</title>
  </head>
  <body>
    <section id="react"></section>
    <script src="bundle.js"></script>
  </body>
</html>

新建js文件夹,并且新建js文件

mkdir js
touch app.js
touch hello.js

app.js:

import React from 'react';
import Router from 'react-router';
import { DefaultRoute, Link, Route, RouteHandler } from 'react-router';

import HelloHandler from './hello.js';

let App = React.createClass({
  render() {
    return (
      <div className="nav">
        <Link to="app" className="homelink">Home  </Link>
        <Link to="hello" className="hellolink">  Say Hello</Link>
        {/* this is the importTant part */}
        <RouteHandler/>
      </div>
    );
  }
});

let routes = (
  <Route name="app" path="/" handler={App}>
    <Route name="hello" path="/hello" handler={HelloHandler}/>
  </Route>
);

Router.run(routes, function (Handler) {
  React.render(<Handler />, document.body);
});

hello.js

import React from 'react';

let Hello = React.createClass({

  render() {
    return(<div>Hello World!</div>);
  }
});

export default Hello;

npm build
npm start


注意:*以上都是低版本


如果不固定react版本号,直接npm install react –save-dev,你会发现,一片红啊,
下面附上高版本react

package.json:

{
  "name": "webpack-react-lesson1",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server --hot --progress --colors",
    "build": "webpack --progress --colors"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.9.1",
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.9.0",
    "babel-preset-react": "^6.5.0",
    "css-loader": "^0.23.1",
    "react": "^15.1.0",
    "react-dom": "^15.1.0",
    "react-hot-loader": "^1.3.0",
    "react-router": "^2.4.1",
    "webpack": "^1.13.1",
    "webpack-dev-server": "^1.14.1"
  }
}

webpack.config.js

var webpack = require('webpack');
module.exports = {
    entry: [
      'webpack/hot/only-dev-server',
      "./js/app.js"
    ],
    output: {
        path: './build',
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /\.js?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/},
            { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader', query:{presets:['es2015','react']}},
            { test: /\.css$/, loader: "style!css" }
        ]
    },
    resolve:{
        extensions:['','.js','.json']
    },
    plugins: [
      new webpack.NoErrorsPlugin()
    ]
};

主要区别:
“babel-preset-es2015”: “^6.9.0”, //编译es6到es5
“babel-preset-react”: “^6.5.0”,//编译jsx到js

“react-dom”: “^15.1.0”,//高版本react只能用ReactDom.render()

参考:
Setting up environment for React, SASS, ES2015, Babel with Webpack

相关文章推荐

React+Webpack+ES6从环境搭建到HelloWorld

转载请注明预见才能遇见的博客:http://my.csdn.net/ React是一个Facebook和Instagram用来创建用户界面的JavaScript库,是现在最热门的前端框架。Webpa...
  • pcaxb
  • pcaxb
  • 2016年08月15日 16:30
  • 11711

ES6折腾记- 箭头函数【Arrow function】要点及脱坑点

ES6的箭头函数的特点:永远是匿名函数,This指向于obj内部;
  • bomess
  • bomess
  • 2016年09月06日 00:28
  • 5064

babel 在编译箭头函数时报 "Unexpected token" 问题

babel 在编译箭头函数时报错问题今天在用webpack打包时遇到了如下错误:Module build failed: SyntaxError: D:/workspace/vs/simple-dat...

Ubuntu React Native 环境搭建

Ubuntu React Native 环境搭建 本人环境是Ubuntu 64位 14.0.4 . 安装 node.js过程: 1.到node官网下载https://nodejs.org/en/ ...
  • djhsws
  • djhsws
  • 2016年05月19日 18:01
  • 5079

前端--React之webpack使用教程

记住:一定要一步一步的跟着执行,不要漏过任何一部项目的文件架构为: 最近在学习react,记录一下在学习webpack过程中的经历,希望帮助新人少走弯路。 1、新建一个测试目录,这里叫做React...

ReactJS学习系列课程(React webpack使用)

什么是webpack?webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX)、coffee、样式(含less/sass)、图片等都作为模块来使用和处理。之前,我们肯定...

从零开始构建前端和reactjs - 0

从零开始构建前端和reactjs前端半路出家,很多都是新概念,只能一步一步来搭建这个,资料全部都来源于网上开始吧 首先 ,nodejs 、git,怎么安装 ,自己百度吧。 1.安装好这些之后 ,打开...

reactjs里面的demo使用

  • 2016年02月16日 14:07
  • 918KB
  • 下载

前端自动化构建入门6-使用webpack改造我们的react应用

认识webpackwebpack是一个简单方便的模块打包工具,你可以利用webpack对你代码进行分块打包、代码转译。webpack是目前最流行的模块打包工具之一。 更详细的介绍可以参照这里。注意:...
  • Nex_x
  • Nex_x
  • 2017年06月27日 15:26
  • 334

使用webpack与vue2.0构建前端工程(一)

1.采用webpack打包文件,按需引入js和css 2.采用vue2.0组件化开发方式 3.根据项目需要,使用npm run dev和npm run build 可以分别运行dev脚本和buil...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从0使用webpack构建reactjs
举报原因:
原因补充:

(最多只允许输入30个字)