zoukankan      html  css  js  c++  java
  • 初始化一个react项目

    初始化一个react项目

    mkdir init_react
    cd init_react
    npm init //如果没有什么特殊的配置一路回车,得到package.json文件
    

    目录结构

    dist ---------------------------------------------> //用于存放webpack打包之后的项目文件

    index.html ----------------------------------> //webpack打包之后的html文件

    main.hash值.bundle.js ---------------------> //webpack打包之后的js文件

    node_modules --------------------------------> //项目当中使用的第三方库文件存放目录

    src ----------------------------------------------> //生产环境中代码存放目录

    index.html ----------------------------------> //前端统一的html模版文件

    index.js -------------------------------------> //项目的主入口文件

    index.less -----------------------------------> //项目中的样式文件

    .babelrc ----------------------------------------> //babel的配置文件

    package.js

    webpack.config.js -----------------------------> //webpack的配置文件

    安装webpack打包工具和webpack-dev-server服务器

    npm install webapck --save
    npm install webpack-dev-server --save
    

    安装react和react-dom

    npm install react --save
    npm install react-dom --save
    

    安装babel

    npm install babel-preset-es2015 babel-preset-react babel-preset-stage-0 babel-polyfill babel-core --save-dev
    

    创建.babelrc文件,配置babel 预处理

    {
       "presets": ["es2015","react","stage-0"]
    }
    

    处理样式需要安装less

    npm install less --save
    

    安装webpack 的 loader

    npm install babel-loader style-loader css-loader less-loader --save-dev
    

    安装webpack插件

    npm install extract-text-webpack-plugin html-webpack-plugin --save-dev
    

    创建webpack.config.js文件

    var path = require('path')
    var webpack = require('webpack')
    var ExtractTextPlugin = require('extract-text-webpack-plugin')  
    var HtmlWebpackPlugin = require('html-webpack-plugin')
    
    module.exports = {
        devtool:'eval', //source-map
        entry:{
            main:'./src/index.js'//入口文件
        },
        output:{
            path:path.join(__dirname, 'dist'),//出口文件
            filename: '[name].[hash:8].bundle.js'
        },
        resolve: {
            extensions: [' ', '.js','.jsx', '.json','.css','.less']
        },
        module:{
            rules: [{
                test: /\.less$/,//加载less样式的loader
                use: ExtractTextPlugin.extract({
                    fallback: "style-loader",
                    use: ['css-loader', 'less-loader']
                })
            }, {
                test: /\.js?$/,//用于解析es6语法的babel-loader
                exclude: /node_modules/,
                use: 'babel-loader'
            }]
        },
        plugins: [
            new webpack.HotModuleReplacementPlugin(), //热更新
            new webpack.NoEmitOnErrorsPlugin(), //错误不编译
            new ExtractTextPlugin('style.css'), //css模块独立
            new HtmlWebpackPlugin({
                    title: 'Redux Practive', //标题
                    // favicon: './src/assets/img/favicon.ico', //favicon路径
                    filename: './index.html', //生成的html存放路径,相对于 path
                    template: './src/index.html', //html模板路径
                    inject: true, //允许插件修改哪些内容,包括head与body`
                    minify: { //压缩HTML文件
                        removeComments: true, //移除HTML中的注释
                        collapseWhitespace: false //删除空白符与换行符
                    }
            })
         ]
    }
    
    

    修改package.json

    {
      "name": "init_react",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "start": "webpack-dev-server --hot --inline --progress --colors --watch --compress --content-base ./dist  --port 8086 --host 0.0.0.0",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "less": "^2.7.2",
        "react": "^15.6.1",
        "react-dom": "^15.6.1",
        "webpack": "^3.3.0",
        "webpack-dev-server": "^2.6.1"
      },
      "devDependencies": {
        "babel-core": "^6.25.0",
        "babel-loader": "^7.1.1",
        "babel-polyfill": "^6.23.0",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-react": "^6.24.1",
        "babel-preset-stage-0": "^6.24.1",
        "css-loader": "^0.28.4",
        "extract-text-webpack-plugin": "^3.0.0",
        "html-webpack-plugin": "^2.29.0",
        "less-loader": "^4.0.5",
        "style-loader": "^0.18.2"
      }
    }
    

    创建html模版文件

    在项目的根目录下创建src目录并创建index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <div id="root"></div>
    </body>
    </html>
    

    在src目录下创建index.js

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

    GitHub项目代码地址

    https://github.com/shuoer123/init_react

  • 相关阅读:
    第十四届中北大学ACM程序设计竞赛 J.ZBT的游戏
    洛谷P1248 加工生产调度
    洛谷P1736 创意吃鱼法
    洛谷P3372 【模板】线段树 1
    洛谷P1330 封锁阳光大学
    洛谷P3275 [SCOI2011]糖果
    Android 开发60条技术经验总结(转)
    Genymotion常见问题汇总(转)
    页面跳转与数据传递
    网络编程(二)
  • 原文地址:https://www.cnblogs.com/shuoer/p/7266093.html
Copyright © 2011-2022 走看看