react+webpack+webstorm開(kāi)發(fā)環(huán)境搭建

需要安裝的軟件

  • node.js
  • npm包管理

以上兩個(gè)包的下載地址如下:

https://nodejs.org/dist/v6.3.0/node-v6.3.0.pkg

由于6.3.0版本之后會(huì)自帶npm的包管理所以不需要單獨(dú)的安裝npm

更換npm庫(kù)的源

由于國(guó)內(nèi)的網(wǎng)絡(luò)原因,推薦只用阿里的npm源地址

npm config set registry https://registry.npm.taobao.org

構(gòu)建項(xiàng)目

  • 使用webstorm新建一個(gè)空白項(xiàng)目
  • 打開(kāi)控制臺(tái),在控制臺(tái)里輸入npm init 命令來(lái)初始化一個(gè)package.json文件,這個(gè)文件是一個(gè)類似于pom.xml的文件,用來(lái)描述需要的依賴庫(kù)。
  • 在控制臺(tái)輸入以下命令

npm install webpack webpack-dev-server babel --save-dev

npm install react react-dom babel-loader less-loader css-loader style-loader url-loader file-loader babel-preset-es2015 babel-preset-react react-hot-loader jquery eslint eslint-plugin-react --save-dev


--save-dev 會(huì)把下載包的相關(guān)信息寫到package.json的devDependencies里面方便以后發(fā)布,其他人使用的時(shí)候只需要npm install就可以把相關(guān)的依賴下載到當(dāng)前的項(xiàng)目里面。

在package.json里面包的版本之前的^表示可以安裝類似2.x.x版本的組件但是不能安裝3.x.x版本的軟件
在package.json里面包的版本之前的~表示可以安裝2.1.x的軟件不能安裝2.3.x的軟件

  • 新建一個(gè)webpack.config.js的文件,在文件里面添加如下信息
/**
 * Created by Diablo on 16/7/16.
 */
'use strict';
var webpack = require('webpack');
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common.js');
var path = require('path');

module.exports = {
    devtool: 'eval',
    entry: [
        'webpack-dev-server/client?http://localhost:3000',
        'webpack/hot/only-dev-server',
         './src/js/entry.js'
    ],
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'bundle.js',
        publicPath: '/static/'
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        commonsPlugin
    ],

    module: {
        loaders: [
            {
                test: /\.css$/,
                loader: 'style-loader!css-loader'
            },
            {
                test: /\.jsx?$/,
                loaders: ['react-hot', 'babel'],
                exclude: /node_modules/,

            },
            {
                test: /\.(png|jpg)$/,
                loader: 'url-loader?limit=8192'
            },
            {
                test: /\.less$/,
                loader: 'style-loader!css-loader!less-loader'
            },
            {
                test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
                loader: "url-loader?limit=10000&mimetype=application/font-woff"
            },
            {
                test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
                loader: "file-loader"
            }
        ]
    },
    resolve: {
        root:'',
        extensions: ['', '.js', '.json', '.less']
    }
};
  • 新建一個(gè).babelrc的文件里面的內(nèi)容如下:
{
  "presets": ["es2015", "stage-0", "react"]
}

上面的是babel插件的相關(guān)信息

  • 新建一個(gè).eslintrc的文件里面的內(nèi)容如下:
{
  "ecmaFeatures": {
    "jsx": true,
    "modules": true
  },
  "env": {
    "browser": true,
    "node": true
  },
  "parser": "babel-eslint",
  "rules": {
    "quotes": [2, "single"],
    "strict": [2, "never"],
    "react/jsx-uses-react": 2,
    "react/jsx-uses-vars": 2,
    "react/react-in-jsx-scope": 2
  },
  "plugins": [
    "react"
  ]
}

這個(gè)配置是設(shè)置js的代碼相關(guān)規(guī)范的

  • 新建server.js文件添加以下內(nèi)容:
/**
 * Created by Diablo on 16/7/16.
 */
var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./webpack.config');

new WebpackDevServer(webpack(config), {
    publicPath: config.output.publicPath,
    hot: true,
    inline:true,
    historyApiFallback: true
}).listen(3000, 'localhost', function (err, result) {
    if (err) {
        return console.log(err);
    }

    console.log('Listening at http://localhost:3000/');
});
  • 修改package.json添加如下內(nèi)容:
"scripts": {
    "start": "node server.js",
    "lint": "eslint src"
    }
  • 創(chuàng)建src/js文件夾

  • 創(chuàng)建src/js/helloword.js

import React, { Component } from 'react';

export default class Hello extends Component {
    render() {
        return (
            <div>
                <h1>Hello, world.</h1>
                <p>this is a simple section</p>
                <p>終于搭建成功了</p>
            </div>

        );
    }
}
  • 創(chuàng)建src/js/entry.js:
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './helloworld';

ReactDOM.render(<Hello />, document.getElementById('root'));
  • 在項(xiàng)目目錄下面創(chuàng)建index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
<div id="root"></div>
<script type="text/javascript" src="/static/common.js" charset="utf-8"></script>
<script type="text/javascript" src="/static/bundle.js" charset="utf-8"></script>
</body>
</html>
  • 在控制臺(tái)運(yùn)行npm run start,在瀏覽器中輸入http://localhost:3000/查看到如下內(nèi)容:

完成之后的目錄結(jié)構(gòu)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容