webpack记录
CommonJS与ES6 Module的区别
CommonJS
1.模块依赖关系的建立发生在代码运行阶段
2.导出值的拷贝
cal.js
module.exports={name:'cal'}
index.js
const name=require('./cal.js').name //require的模块路径可以动态指定,支持传入一个表达式;可以通过if语句判断是否加载某个模块。
CommonJS中允许对导入的值进行更改
ES6
1.Module模块依赖关系的建立发生在代码编译阶段
2.值的动态映射,并且这个映射是只读的
cal.js
export const name='cal'
index.js
import{name}from './cal.js'
常用loader
1.babel-loader用来处理ES6+并将其编译为ES5.
2.ts-loader用于链接webpack与Typescript的模块
3.html-loader用于将HTML文件转化为字符串并进行格式化
1 2 3 4 5 6 | rules:[ { test:/\.html$/, use: 'html-loader' } ] |
4.file-loader用于打包文件类型的资源,并返回其publicPath.
1 2 3 4 5 6 | rules:[ { test:/\.(png|jpg|gif)$/, use: 'file-loader' , } ] |
5.style-loader ,css-loader sass-loader
bundle体积监控和分析
1.vs code中有一个插件import Cost
2. webpack-bundle-analyzer能够帮助我们分析一个bundle的构成。
1 2 3 4 5 6 | const Analyzer=require( 'webpack-bundle-analyzer' ).BundleAanalyzerPlugin; module.exports={ plugins:[ new Analyzer() ] } |
可以帮我们生成一张bundle的模块组成结构图,每个模块所占的体积一目了然。
3.bundlesize可以自动化的对资源体积进行监控
package.json文件配置
1 2 3 4 5 6 7 8 9 10 11 12 13 | { “name”: "my-app" , "version" : "1.0.0" , "bundlesize" :[ { "path" : "./bundle.js" . "maxSize" : "50 kB" } ], "scripts" :{ "test:size" : "bundlesize" } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类