webpack的原理(webpack 探索-entry 和output详解)

本文目录
webpack 探索-entry 和output详解
webpack 探索-entry 和output详解
本文主要讲entry和output相关内容。
entry用来指定Webpack的打包入口。
这个需要从Webpack打包机制上说明,大家都知道,Webpack的打包的核心原理:一切皆模块。而到底打包那些东西,这些东西之间的依赖关系是什么样的,都源于模块依赖图中的依赖树,而这个树的根节点就是这个entry。
上图中入口就是左上角的.js文件。
这部分详细可以参考Webpack官网,这里这是笔者试炼时做的笔记。
単入口有两种写法:
注意,如果没有配置output的filename,上边构建出来的dist中文件名是index.js。
注意:上述多入口模式下,打出来的包有两个文件:index.js和hello.js,就是对应entry对象的key。而打包出来的这两个文件,是两个完全独立的包,里边各自包含了Webpack组织包的各种方法,也就是说这两个包是没有任何关系的两个包。
output用来告诉Webpack如何将编译后的文件输出到磁盘中。
在 webpack 中配置 output 属性的最低要求是,将它的值设置为一个对象,包括以下两点:
注意:如何filename不设置,打包后的dist目录下,是main.js。即单入口情况下,filename的默认值是‘main.js’。
这时filename的值采用占位符写法:
此时,打包出来的dist目录下,有两个文件index.js和hello.js。两个都是独立的文件。
注意1:上边占位符中name是固定的,不能随意写成其它值。
注意2:这种多入口设置output方法,实际filename是可以不设置的,不设置情况下打包后dist目录和当前设置时一致的。即多入口情况下,filename的默认值是’.js’。
具体参考Webpack官网,目前笔者还没用到,后续用到后再详细分析说明。、
***隐藏网址***
饿了么开源的骨架屏插件原理分析
Skeleton Screen(骨架屏) 指的在页面数据尚未加载前先给用户展示出页面的大致结构,直到请求数据返回后再渲染页面,补充进需要显示的数据内容。常用于内容列表页。
一、page-skeleton-webpack-plugin
page-skeleton-webpack-plugin 是一款由 ElemeFE 团队开发的webpack 插件,该插件的目的是根据你项目中不同的路由页面生成相应的骨架屏页面,并将骨架屏页面通过 webpack 打包到对应的静态路由页面中。
二、插件自动生成骨架屏的主要原理
先demo展示一下如何自动生成骨架屏,后续再通过代码具体分析如何生成骨架屏:
安装运行环境
依赖环境:
***隐藏网址***
启动puppeteer并打开要生成骨架屏的页面
接下来分析makeSkeleton是如何生成骨架屏代码
入口代码在 page-skeleton-webpack-plugin/src/skeleton.js
初始化核心逻辑:
具体各块的骨架结构如何生成的接下来会一一分析
1、SVG块生成骨架结构
非隐藏的元素,会把 svg 元素内部所有元素删除,减少最终生成的骨架页面体积,其次,设置svg 元素的宽、高和形状等。
2、按钮块生成骨架结构
button块的处理相对比较简单,去除边框和阴影,设定好统一的背景色和文字,按钮块就处理完成了。
3、背景块生成骨架结构
背景块指有背景图或者背景色的元素。统一设置背景色即可。
4、图片块生成骨架结构
5、伪元素块处理骨架结构
6、文本块处理骨架结构
文本块相对处理起来会比较复杂些,所以放到最后来讲。
文本块定义:任何包含文本节点的元素都是文本块。
计算文本块的文本行数、文字高度(即要绘制的文本块高度=fontSize):
通过线性渐变生成条纹背景的文本块:
单行文本需要计算文本宽度和text-aligin属性
以上就是elementUI开源的骨架屏插件的主要逻辑啦。当然还有涉及工程化相关的逻辑这里就没贴出来了,后续可以再慢慢探讨。
我抽空把生成骨架屏的逻辑单独抽出来,方便大家定制对骨架屏的工程化处理及调试
***隐藏网址***

更多文章:
java外包用的比较多技术(java后端程序员最常用的技术有哪些,重点技术有哪些)
2026年5月22日 18:30
clip converter(用ClipConverter下载的youku视频在电脑哪个文件夹)
2026年8月24日 21:15
chmod修改权限(ubuntu linux下使用 chmod 修改文件权限,命令后提示【缺少操作数】,求解决方法)
2025年8月3日 09:30
neighborhood在哪买(香港潮牌店铺推荐去香港买什么好)
2026年6月6日 23:00
richtextbox用法(怎样使用C#的RichTextBox控件)
2026年2月13日 20:45
js replace 正则表达式(求一个js正则表达式:替换html内容中除了标签外的特定字符为另外一个字符.)
2025年9月5日 03:00
rock什么意思中文意思(rock是什么意思 rock的中文翻译、读音、例句)
2026年9月6日 10:30
衣香丽影同档次的品牌(太平鸟,伊芙丽,衣香丽影,红袖三彩哪家好)
2026年8月15日 07:15
excel怎么用round保留一位小数(excel如何保留一位小数)
2025年12月21日 16:45
c语言数组元素求和(c语言求数组元素的总和!求助各位大佬!)
2025年9月7日 00:30














