前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

# 前言

Webpack 是一个现代 JavaScript 应用程序的静态模块打包器 (module bundler),使用 Webpack 可以对模块进行压缩、预处理、按需打包、按需加载等。

当 Webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。

# Webpack 构建 React+Mobx+Scss 开发环境源码

源码地址: github.com/dkypooh/fro…

# 通过本章读者可以学习了解到什么?

  • Webpack 核心概念以及基本配置。
  • Webpack 性能优化策略,主要分为构建性能和构建包性能(大小和按需加载)两大部分
  • 搭建 React + Mobx + Scss 开发环境 ,实践讲解如何构建一个主流开发环境, 如何一步步完善 webpack 性能

当前前端主流构建工具有 Browserify, Grunt, Gulp,Webpack 和 Rollup

image-20210214195217677

数据采集到2019年2月2日,最近半年数据指标

横向对比这几种构建工具,webpack 在构建工具还是占据主导地位,整个生态相对完善,同时可以自定义业务构建需要的 plugin 和 loader 。

# Webpack基础

从 Webpack 4 开始,可以不用引入一个配置文件, 可以实现零配置运行(之前 webpack 的配置复杂一直引起诟病),大多数项目会需要复杂的设置来支持开发环境定制,这也是他的强大之处。

在 Webpack 需要理解四个核心概念:入口(entry), 输出(output),加载器(loader),插件(plugins)。

# Webpack 四个核心概念

# 入口(entry)

入口起点(entry point) 是指 Webpack 应该使用哪个模块,来作为构建其内部依赖图的开始,Webpack 会找出有哪些模块和 library 是入口起点(直接和间接)依赖的。

可以通过在 webpack 配置 中配置 entry 属性,来指定一个入口起点(或多个入口起点),默认值为./src。

接下来我们看一个 entry 配置的最简单例子:webpack.config.js

module.exports = {
  entry: 'src/copy.js'
};
@前端进阶之旅: 代码已经复制到剪贴板

# 输出(output)

output 属性告诉 Webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上,整个应用程序结构,都会被编译到指定的输出路径的文件夹中。

你可以通过在配置中指定一个 output 字段,来配置这些处理过程:

webpack.config.js

const path = require('path');

module.exports = {
  entry: './src/copy',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  }
};
@前端进阶之旅: 代码已经复制到剪贴板

#<

fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏