webpack打包原理
概念
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打包原理相关推荐
- webpack打包原理_webpack打包原理入门探究(四)插件探究(上)
子由风:webpack打包原理入门探究(一)zhuanlan.zhihu.com 子由风:webpack打包原理入门探究(二)基本配置zhuanlan.zhihu.com 子由风:webpack打 ...
- 浅谈webpack打包原理
模块化机制 webpack并不强制你使用某种模块化方案,而是通过兼容所有模块化方案让你无痛接入项目.有了webpack,你可以随意选择你喜欢的模块化方案,至于怎么处理模块之间的依赖关系及如何按需打包, ...
- atool-build脚手架分析与webpack打包原理详解
最近要做一个js解析markdown的项目,所以当然想到了ant design,不过ant design内部又使用了atool-build脚手架,所以决定好好研究一下.如果有不对的地方还烦请指正.不过 ...
- “约见”面试官系列之常见面试题第四十四篇之webpack打包原理解析?(建议收藏)
webpack打包是如何运行的 也可以称为,webpack是如何实现模块化的 CommonJS是同步加载模块,一般用于node.因为node应用程序运行在服务器上,程序通过文件系统可以直接读取到各个模 ...
- webpack打包原理_对于webpack打包原理你知道有多少?
什么是 webpack ? 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依 ...
- 看完就懂webpack打包原理
目录 什么是 webpack ? webpack 核心概念 Entry Output Module Chunk Loader Plugin webpack 构建流程 实践加深理解,撸一个简易 webp ...
- webpack打包原理(待续)
打包工具要解决的问题: 文件依赖管理 梳理文件之间的依赖关系 资源加载管理 处理文件的加载顺序(先后时机)和文件的加载数量(合并.嵌入.拆分) 效率与优化管理 提高开发效率,完成页面优化
- Vue基础知识总结 9:vue webpack打包原理
- webpack系列 —— 打包原理
为什么要使用webpack? 如今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包.为了简化开发的复杂度,前端社区涌现出了很多好的实践方法: 模块化,让我 ...
最新文章
- 安装Properties Editor插件,解决XXX.properties文件中文乱码的问题
- Java基础学习总结(14)——Java对象的序列化和反序列化
- iOS App 目录结构
- 微软发布 SQL Server 2019 新版本
- 05.Bootstrap导入基础笔记
- php 获取 uri,获取URI地址
- 「2019冬令营提高组」全连
- php 安全mysql,关于php:我从mysql注入安全吗?
- fail树(bzoj 3172: [Tjoi2013]单词)
- android studio 便携式wlan热点 网络名称_手机移动网络共享,还可以这么玩,你知道吗?...
- GitHub 年度报告,2017 年最受欢迎的编程语言
- 元气骑士机器人旁边建筑_元气骑士机器人的一些经验
- 深度学习visio作图技巧
- 接上一篇:Java实现导出Excel并附带水印
- 京东云服务器做系统,京东云新一代自研云服务器4月上线,云实例承载能力提升2倍...
- 综合日语第一册第十五课
- Luat模块应用手册-指南-Luat二次开发教程指南-功能开发教程-虚拟AT
- USACO-Arithmetic Progressions
- 程序员数学(16)--二次根式
- vue脚手架创建项目时的 linter / formatter 配置选择
热门文章
- 关于AM335X移植SDIO WIFI的简易教程(转)
- HDU 1108 最小公倍数
- #并行优化# 容错算法 (Fault Tolerant)
- [读书笔记] 史玉柱自述:我的营销心得
- java中Map ListE的用法
- php是不是面向对象编程,PHP面向对象编程入门
- 照片边框 app android,Screener App-一手搞定将手机截图加上外框
- android分享图片功能实现原理,Android:简单实现并理解图片三级缓存
- oracle outln用户,Oracle用户解锁
- java字符串包含连续数字,Java中包含数字的排序字符串