概念

webpack是一个打包模块的机制,把依赖的模块转化成可以代表这些包的静态文件

作用

  • 打包

    • 可以把多个JavaScript文件打包成一个文件, 减少服务器压力和下载宽带
  • 转换
    • 把扩展语言转换成普通的JavaScript语言,让浏览器识别更顺利运行
  • 优化
    • 前端变的越来越复杂后,性能也会遇到各种问题,webpack肩负起优化和提升的责任

核心原理

  • 一切皆模块

    • js,css,image和html文件都可以视为模块,通过require加载
  • 按需加载
    • Webpack使用许多特性来分割代码然后生成多个“bundle”文件,通过异步加载部分代码来实现按需加载功能

打包原理

  • 识别入口文件, 分析代码, 获取模块依赖, 并且将代码打包为浏览器可以识别的代码
  • 递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle

如何配置

  • webpack.config.js
module.exports = {
// 配置打包选项  development开发环境
mode: 'development', // production 生产环境
// 指定入口文件:要打包的文件
entry: './src/js/index.js',
// 指定输出文件:打包之后的文件
output: {path: path.resolve(__dirname, 'dist'),filename: 'main.min.js'
},
// 配置资源的加载器 loader
module: {rules: [// 配置js的加载器(把ES6转化为ES3/5代码){test: /\.jsx?$/,loader: 'babel-loader',//打包除这个文件之外的文件exclude: path.join(__dirname, './node_modules'),//打包包括的文件include: path.join(__dirname, './src')},// 配置css的加载器{// 匹配.css结尾的文件test: /\.css$/,// 配置css文件的加载器,处理顺序:从右向左use: ['style-loader', 'css-loader']},// 配置less的加载器{test: /\.less$/,use: ['style-loader', 'css-loader', 'less-loader']}]
},
// 配置插件
plugins: [new CleanWebpackPlugin(),// 动态生成htmlnew HtmlWebpackPlugin({title: '测试标题',template: 'index.html'})
],
// 配置实时预览环境
devServer: {contentBase: path.join(__dirname, 'dist'),port: 5000
}
}复制代码
  • mode配置环境是开发环境还是生产环境
  • entry指定入口文件
  • output指定输出文件
  • module里的rules配置js的加载器
  • modeule里的loader配置资源加载器
  • plugins配置插件

转载于:https://juejin.im/post/5d0206a36fb9a07ee5661905

webpack打包原理相关推荐

  1. webpack打包原理_webpack打包原理入门探究(四)插件探究(上)

    子由风:webpack打包原理入门探究(一)​zhuanlan.zhihu.com 子由风:webpack打包原理入门探究(二)基本配置​zhuanlan.zhihu.com 子由风:webpack打 ...

  2. 浅谈webpack打包原理

    模块化机制 webpack并不强制你使用某种模块化方案,而是通过兼容所有模块化方案让你无痛接入项目.有了webpack,你可以随意选择你喜欢的模块化方案,至于怎么处理模块之间的依赖关系及如何按需打包, ...

  3. atool-build脚手架分析与webpack打包原理详解

    最近要做一个js解析markdown的项目,所以当然想到了ant design,不过ant design内部又使用了atool-build脚手架,所以决定好好研究一下.如果有不对的地方还烦请指正.不过 ...

  4. “约见”面试官系列之常见面试题第四十四篇之webpack打包原理解析?(建议收藏)

    webpack打包是如何运行的 也可以称为,webpack是如何实现模块化的 CommonJS是同步加载模块,一般用于node.因为node应用程序运行在服务器上,程序通过文件系统可以直接读取到各个模 ...

  5. webpack打包原理_对于webpack打包原理你知道有多少?

    什么是 webpack ? 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依 ...

  6. 看完就懂webpack打包原理

    目录 什么是 webpack ? webpack 核心概念 Entry Output Module Chunk Loader Plugin webpack 构建流程 实践加深理解,撸一个简易 webp ...

  7. webpack打包原理(待续)

    打包工具要解决的问题: 文件依赖管理 梳理文件之间的依赖关系 资源加载管理 处理文件的加载顺序(先后时机)和文件的加载数量(合并.嵌入.拆分) 效率与优化管理 提高开发效率,完成页面优化

  8. Vue基础知识总结 9:vue webpack打包原理

  9. webpack系列 —— 打包原理

    为什么要使用webpack? 如今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包.为了简化开发的复杂度,前端社区涌现出了很多好的实践方法: 模块化,让我 ...

最新文章

  1. 安装Properties Editor插件,解决XXX.properties文件中文乱码的问题
  2. Java基础学习总结(14)——Java对象的序列化和反序列化
  3. iOS App 目录结构
  4. 微软发布 SQL Server 2019 新版本
  5. 05.Bootstrap导入基础笔记
  6. php 获取 uri,获取URI地址
  7. 「2019冬令营提高组」全连
  8. php 安全mysql,关于php:我从mysql注入安全吗?
  9. fail树(bzoj 3172: [Tjoi2013]单词)
  10. android studio 便携式wlan热点 网络名称_手机移动网络共享,还可以这么玩,你知道吗?...
  11. GitHub 年度报告,2017 年最受欢迎的编程语言
  12. 元气骑士机器人旁边建筑_元气骑士机器人的一些经验
  13. 深度学习visio作图技巧
  14. 接上一篇:Java实现导出Excel并附带水印
  15. 京东云服务器做系统,京东云新一代自研云服务器4月上线,云实例承载能力提升2倍...
  16. 综合日语第一册第十五课
  17. Luat模块应用手册-指南-Luat二次开发教程指南-功能开发教程-虚拟AT
  18. USACO-Arithmetic Progressions
  19. 程序员数学(16)--二次根式
  20. vue脚手架创建项目时的 linter / formatter 配置选择

热门文章

  1. 关于AM335X移植SDIO WIFI的简易教程(转)
  2. HDU 1108 最小公倍数
  3. #并行优化# 容错算法 (Fault Tolerant)
  4. [读书笔记] 史玉柱自述:我的营销心得
  5. java中Map ListE的用法
  6. php是不是面向对象编程,PHP面向对象编程入门
  7. 照片边框 app android,Screener App-一手搞定将手机截图加上外框
  8. android分享图片功能实现原理,Android:简单实现并理解图片三级缓存
  9. oracle outln用户,Oracle用户解锁
  10. java字符串包含连续数字,Java中包含数字的排序字符串