zoukankan      html  css  js  c++  java
  • React+Webpack+Webstorm开发环境搭建

    需要安装的软件

    • node.js
    • npm包管理
    • Webstorm

    由于6.3.0版本之后会自带npm的包管理所以不需要单独的安装npm

    nodejs(包含npm)安装在默认路径C:Program Files odejs比较好,也不是很大

    Webstrom安装完成后,在打开的 License Activation 窗口中选择 License server。

    在输入框输入网址:http://idea.iteblog.com/key.php

    最后点击 Activate

    构建项目和安装依赖包

    • 使用webstorm新建一个空白项目
    • 打开控制台,进入项目根目录下,在控制台里输入npm init 命令来初始化一个package.json文件,这个文件是一个类似于pom.xml的文件,用来描述需要的依赖库。
    • 在控制台输入以下命令
    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 会把下载包的相关信息写到package.json的devDependencies里面方便以后发布,其他人使用的时候只需要npm install就可以把相关的依赖下载到当前的项目里面。

    在package.json里面包的版本之前的^表示可以安装类似2.x.x版本的组件但是不能安装3.x.x版本的软件
    在package.json里面包的版本之前的~表示可以安装2.1.x的软件不能安装2.3.x的软件

    新建一个webpack.config.js的文件,在文件里面添加如下信息

    /**
     * Created by Diablo on 17/11/11.
     */
    'use strict';
    var webpack = require('webpack');
    var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common');
    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: '[name].js',
            publicPath: '/static/'
        },
        plugins: [
            new webpack.HotModuleReplacementPlugin(),
            commonsPlugin
        ],
    
        module: {
            loaders: [
                {
                    test: /.css$/,
                    loader: 'style-loader!css-loader'
                },
                {
                    test: /.jsx?$/,
                    loaders: ['babel-loader'],
                    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: {
            extensions: ['.js', '.json', '.less']
        }
    };

     这里我取消了loders里面的react-hot-loader包的加载,这个就是在修改代码的时候会网站内容会自动修改,没什么作用,每次修改完后手动刷新网站就好了,因为npm run start一直在这里报错导致编译失败,就把这个包的加载取消了

    原来是这样的loaders: ['react-hot-loader', 'babel-loader'],

    新建一个.babelrc的文件里面的内容如下:

    {
      "presets": ["es2015", "react"]
    }

    上面的是babel插件的相关信息

    新建一个.eslintrc的文件里面的内容如下:

    {
      "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"
      ]
    }

    这个配置是设置js的代码相关规范的

    新建server.js文件添加以下内容:

    /**
     * Created by Diablo on 17/11/11.
     */
    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修改如下内容:

      "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "start": "node server.js",
        "lint": "eslint src"
      },

    创建src/js文件夹

    创建src/js/helloworld.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>
        );
      }
    }

    创建src/js/entry.js

    import React from 'react';
    import ReactDOM from 'react-dom';
    import Hello from './helloworld';
    
    ReactDOM.render(<Hello />, document.getElementById('root'));

    在项目目录下面创建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/main.js" charset="utf-8"></script>
    </body>
    </html>

    其实main.js没有东西要显示 

    在控制台运行npm run start,在浏览器中输入http://localhost:3000/查看到如下内容:

     

    完成之后的目录结构

    参考链接:

    http://www.jianshu.com/p/bf6ca7cb7f8a

  • 相关阅读:
    spring缓存笔记 半注解版
    乐优商城项目视频及源码
    spring cloud Eureka
    idea+maven搭建ssh,支持事务,无hibernate文件整合
    BUU->CRYPTO 知识点分类
    file-upl0ad
    [RoarCTF 2019]Simple Upload
    BUU UPLOAD COURSE 1
    [GXYCTF2019]Ping Ping Ping
    [SWPU2019]Web1
  • 原文地址:https://www.cnblogs.com/HangZhe/p/7818206.html
Copyright © 2011-2022 走看看