zoukankan      html  css  js  c++  java
  • webpack+babel+react+antd技术栈的基础配置

            webpack+babel+react+antd技术栈的基础配置

      前段时间使用webpack+babel+react+antd做了一套后台管理系统,刚开始被一大堆的新知识压的喘不过气来,压力挺大的。还在一步步走来,学习了很多。那时候还不会配置,直接从网上下了别人配置好的可以跑的。之后特意花了一段时间好好研究了下webpack,后面可以直接动手做一些基本的配置。webpack很强大,还有许多要学习的地方。

      最近学习了挺多知识,堆积着没有记录到博客。找机会慢慢写出,因工作需要,最近干了后端,毕竟是前端出身,前端的知识也没有拉下,(开玩笑的说:没有忘本!),还会继续学习。

      下面就分享下我的配置过程

      demo项目目录

      

      首先,创建项目目录并且进入项目

    mkdir reactDemo && cd reactDemo

      新建一个package.json文件,内容如下:

    {
      "name": "webpack-Demo",  //项目名称
      "version": "0.0.1",  //版本号
      "description": "webpack-Demo",  //项目描述
      "keywords": [     //关键字
        "demo",
        "webpack"
      ],
      "author": "pmx",   //作者
      "scripts": {  //定义脚本命令 如dev  启动为npm run dev
        "dev": "webpack-dev-server --progress --config ./webpack.config.js"
      },
      "devDependencies": {  //开发过程中依赖的包
        "antd": "^2.13.10",
        "babel-core": "^6.25.0",
        "babel-loader": "^7.1.1",
        "babel-plugin-import": "^1.6.2",
        "babel-polyfill": "^6.23.0",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-react": "^6.24.1",
        "css-loader": "^0.28.4",
        "html-webpack-plugin": "^2.26.0",
        "react": "^15.6.1",
        "react-dom": "^15.6.1",
        "style-loader": "^0.18.2",
        "webpack": "^3.4.1",
        "webpack-dev-server": "^2.6.1"
      }
    }

      从上到下介绍下所使用的依赖包: "antd"是蚂蚁金服开发的一个致力于提升『用户』和『设计者』使用体验的中台设计语言,采用 React封装了一套 Ant Design (官网)的组件库。“babel-core”,"babel-loader" 是使用babel必备的两个依赖,再加"babel-preset-es2015"这个规则(规则可以换成其他种),这三个是babel能使用基础。“babel-plugin-import”是用来按需加载 antd 的脚本和样式的。"babel-polyfill"为了使新的ES5,es6新的内置如Promise等,一些API可使用。详细说明  "babel-preset-react"是解析react的规则, "css-loader","style-loader"是CSS样式的依赖包。"html-webpack-plugin"可以生成创建html入口文件 (可以不需要)。 "react","react-dom" 是react需要的依赖,"webpack","webpack-dev-server"是webpack和帮助自动服务的。

      接着新建webpack.config.js,开始设置配置

     var path = require("path")
     
     var webConfig = {
         entry: "./src/index.jsx",   //入口文件
         output: {
             path: path.resolve(__dirname, "dist"), //打包后的文件路径(真实存在)
             publicPath: "/",
             filename: "bundle.js"    //打包后的文件名(存在于内存中)
         },
         devtool: 'cheap-module-eval-source-map',
         devServer: {
                    /*contentBase: './src',  默认以当前目录为根目录,如果加了此属性,就以src文件为根目录 */
                    historyApiFallback: true,
                    inline: true,
                    port: 9001,  //端口9001
         },
         module: {
            loaders: [
                {
                    test: /.(js|jsx)$/,
                    exclude: '/node_modules/',
                    loader: 'babel-loader',
                    query:{
                        presets:['es2015','react'],  //使用es2015和react规则解析
                        plugins: [["import", { "libraryName": "antd", "style": "css" }]]   //按需引入antd
                    }
                },
    
                {
                    test: /.css$/,
                    loader: 'style-loader!css-loader'
                }
            ] 
         }
         
     }
     
     
    module.exports = webConfig;        

     index.jsx里面

    "use strict"
    
    import React from 'react'
    import ReactDOM from 'react-dom'
    import  'babel-polyfill'
    import App from './App.jsx'
    ReactDOM.render(<App />, document.getElementById('app'));

    App.jsx里面

    import React from 'react'
    import {Component} from 'react'
    import './index.css'
    import { Button } from 'antd';
    
    class App extends Component {
        constructor(props) {
            super(props)
            this.state = {
                flag: false
            }
        }
        
        getBgColor() {
            this.setState({
                flag: !this.state.flag
            })
        }
        
        render() {
            return (
                <div>
                    <h1>hello React</h1>
                    <button type="button" onClick={this.getBgColor.bind(this)}>按钮</button>
                    <div className={this.state.flag ? 'red' : ''} />
                    <Button type="primary">Primary</Button>
                    <Button>Default</Button>
                    <Button type="dashed">Dashed</Button>
                    <Button type="danger">Danger</Button>
                </div>
                
            )
        }
    }
    
    export default App

    index.css里面

    .red {
        background: #f90;
        width: 100px;
        height: 100px;
        border: 5px solid blue;
    }

      最后,使用npm run dev  ,这个项目就跑起来了。需要其他的依赖的,可以自己随便添加。thank  you

  • 相关阅读:
    jsf web.xml配置
    JSF中Filter的实现
    转码
    facelates标签
    jsf学习笔记注解
    date工具类
    js秒读功能
    w3c document 与 dom4j document转化工具类
    jsf学习笔记ui
    jsf学习笔记拦截器
  • 原文地址:https://www.cnblogs.com/cleaverlove/p/7862024.html
Copyright © 2011-2022 走看看