zoukankan      html  css  js  c++  java
  • Webpack入门教程

    1.官方网站: https://doc.webpack-china.org/  


    2.简单介绍:webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler)。当 webpack 处理应
    用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个
    模块,然后将所有这些模块打包成少量的 bundle - 通常只有一个,由浏览器加载。


    3.目录结构




    4.config.json

    {
      "greetText": "Hello World!123"
    }


    5.Greeter.css

    .root {
        background-color: #eee;
        padding: 10px;
        border: 3px solid #ccc;
        color: #00ad36;
    }

    6.Greeter.js

    import React, {Component} from 'react'
    import config from './config.json';
    import styles from './Greeter.css';
    
    class Greeter extends Component {
        render() {
            return (
                <div className={styles.root}>
                    {config.greetText}
                </div>
            );
        }
    }
    
    export default Greeter

    7.index.tmpl.html

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

    8.main.css

    html {
        box-sizing: border-box;
        -ms-text-size-adjust: 100%;
        -webkit-text-size-adjust: 100%;
    }
    *, *:before, *:after {
        box-sizing: inherit;
    }
    
    body {
        margin: 0;
        font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    }
    
    h1, h2, h3, h4, h5, h6, p, ul {
        margin: 0;
        padding: 0;
    }


    9.main.js

    import React from 'react';
    import {render} from 'react-dom';
    import Greeter from './Greeter';
    
    import './main.css';
    
    render(<Greeter/>, document.getElementById('root'));


    10.public文件件以及文件里的内容都不自己创建的,是Weppack自动生成的


    11.  .babelrc

    {
      "presets": ["react", "es2015"],
      "env": {
        "devlopment" : {
          "plugins": [["react-transform", {
            "transforms": [{
              "transforms": "react-transform-hmr",
    
              "imports": ["react"],
    
              "locals": ["module"]
            }]
          }]]
        }
      }
    }


    12.package-lock.json是Webpack自己生成的


    13.package.json

    {
      "name": "mydemo",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "dependencies": {
        "react": "^15.6.1",
        "react-dom": "^15.6.1",
        "webpack": "^3.5.6"
      },
      "devDependencies": {
        "autoprefixer": "^7.1.4",
        "babel-core": "^6.26.0",
        "babel-loader": "^7.1.2",
        "babel-plugin-react-transform": "^2.0.2",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-react": "^6.24.1",
        "css-loader": "^0.28.7",
        "html-webpack-plugin": "^2.30.1",
        "postcss-loader": "^2.0.6",
        "react-transform-hmr": "^1.0.4",
        "style-loader": "^0.18.2",
        "webpack-dev-server": "^2.7.1"
      },
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "webpack",
        "server": "webpack-dev-server --open"
      },
      "author": "xu",
      "license": "ISC"
    }
    

    14.postcss.config.js

    module.exports = {
        plugins: [
            require('autoprefixer')
        ]
    }


    15.webpack.config.js

    const webpack= require('webpack');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
        devtool: 'eval-source-map',
        entry: __dirname + "/app/main.js",   //已多次提及的唯一入口文件
        output: {
            path: __dirname + "/public",  //打包后的文件存放的地方 " +
            filename: "bundle.js"  //打包后输出文件的文件名
        },
        devServer: {
            contentBase: './public',
            historyApiFallback: true,
            inline: true,
            hot: true
        },
        module: {
            rules: [
                {
                    test: /(\.jsx|\.js)$/,
                    use: {
                        loader: "babel-loader"
                    },
                    exclude: /node_modules/
                },
                {
                    test: /\.css$/,
                    use: [
                        {
                            loader: "style-loader"
                        }, {
                            loader: "css-loader",
                            options: {
                                modules: true
                            }
                        }, {
                            loader: "postcss-loader"
                        }
                    ]
                }
            ]
        },
        plugins: [
            new webpack.BannerPlugin('版权所有,翻版必究'),
            new HtmlWebpackPlugin({
                template: __dirname + "/app/index.tmpl.html" //new 一个这个插件的实例,并传入相关的参数
            }),
            new webpack.HotModuleReplacementPlugin()
        ]
    };


    16.建立好上面目录结构,并安装好Webpack及相关插件即可运行





    17.也可以直接从github上下载我编写的代码工程:https://github.com/xutongbao/mywebpack 


    18.参考链接:http://www.jianshu.com/p/42e11515c10f




  • 相关阅读:
    JAVA -数据类型与表达式---表达式
    JAVA -数据类型与表达式---基本数据类型
    【网易官方】极客战记(codecombat)攻略-森林-背靠背-back-to-back
    【网易官方】极客战记(codecombat)攻略-森林-荆棘农场thornbush-farm
    【网易官方】极客战记(codecombat)攻略-森林-村庄守护者
    【网易官方】极客战记(codecombat)攻略-森林-If 的盛宴
    【网易官方】极客战记(codecombat)攻略-森林-鹰眼
    【网易官方】极客战记(codecombat)攻略-森林-野餐毁灭者
    【网易官方】极客战记(codecombat)攻略-森林-巡逻兵克星A
    【网易官方】极客战记(codecombat)攻略-森林-巡逻兵克星
  • 原文地址:https://www.cnblogs.com/xutongbao/p/9924982.html
Copyright © 2011-2022 走看看