zoukankan      html  css  js  c++  java
  • 实战webpack系列01

    01. 采坑webpack

    一、webpack初章

    // 一个常见的`webpack`配置文件
    const webpack = require('webpack');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const ExtractTextPlugin = require('extract-text-webpack-plugin');
    
    module.exports = {
            entry: __dirname + "/app/main.js", //已多次提及的唯一入口文件
            output: {
                path: __dirname + "/build",
                filename: "bundle-[hash].js"
            },
            devtool: 'none',
            devServer: {
                contentBase: "./public", //本地服务器所加载的页面所在的目录
                historyApiFallback: true, //不跳转
                inline: true,
                hot: true
            },
            module: {
                rules: [{
                        test: /(.jsx|.js)$/,
                        use: {
                            loader: "babel-loader"
                        },
                        exclude: /node_modules/
                    }, {
                        test: /.css$/,
                        use: ExtractTextPlugin.extract({
                            fallback: "style-loader",
                            use: [{
                                loader: "css-loader",
                                options: {
                                    modules: true,
                                    localIdentName: '[name]__[local]--[hash:base64:5]'
                                }
                            }, {
                                loader: "postcss-loader"
                            }],
                        })
                    }
                }
            ]
        },
        plugins: [
            new webpack.BannerPlugin('版权所有,翻版必究'),
            new HtmlWebpackPlugin({
                template: __dirname + "/app/index.tmpl.html" //new 一个这个插件的实例,并传入相关的参数
            }),
            new webpack.optimize.OccurrenceOrderPlugin(),
            new webpack.optimize.UglifyJsPlugin(),
            new ExtractTextPlugin("style.css")
        ]
    };
    
    作者:zhangwang
    链接:https://www.jianshu.com/p/42e11515c10f
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
    
    1.1 什么是WebPack,为什么要使用它?
    1.1.1什么是WebPack

    现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包。为了简化开发的复杂度,前端社区涌现出了很多好的实践方法

    • 模块化,让我们可以把复杂的程序细化为小的文件;
    • 类似于TypeScript这种在JavaScript基础上拓展的开发语言:使我们能够实现目前版本的JavaScript不能直接使用的特性,并且之后还能转换为JavaScript文件使浏览器可以识别;
    • Scss,less等CSS预处理器...
    1.1.2 什么是Webpack

    WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。

    1.2 WebPack和Grunt以及Gulp相比有什么特性
    其实Webpack和另外两个并没有太多的可比性,Gulp/Grunt是一种能够优化前端的开发流程的工具,而WebPack是一种模块化的解决方案,不过Webpack的优点使得Webpack在很多场景下可以替代Gulp/Grunt类的工具。
    Grunt和Gulp的工作方式是:在一个配置文件中,指明对某些文件进行类似编译,组合,压缩等任务的具体步骤,工具之后可以自动替你完成这些任务。
    

    Grunt和Gulp的工作流程图
    Grunt和Gulp的工作流程


    Webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),Webpack将从这个文件开始找到你的项目的所有依赖文件,
    使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的JavaScript文件。
    

    Webpack工作方式图
    Webpack工作方式

  • 相关阅读:
    一个Electron的设计缺陷及应对方案
    如何点击穿透Electron不规则窗体的透明区域
    Electron团队为什么要干掉remote模块
    Clickhouse 单机双实例
    Kafka安全认证SASL/PLAIN
    Syslog的使用
    Kafka Consumer
    Kafka Producer客户端
    Kafka客户端操作
    springboot集成flyway实践
  • 原文地址:https://www.cnblogs.com/JinXinYuan/p/10441921.html
Copyright © 2011-2022 走看看