小技巧,如何使用 webpack 降低前端资源文件维护成本

boyanx1个月前技术教程5

前言

前端现在开发某个常见功能,直接会在 npm 找到合适的包,这些包存在于 node_modules 目录下。

如何减少包体积,用下 CDN 加速,或者这个模块只有 script 标签导入方式时,直接从 node_modules 拷贝文件到项目 public 资源目录中是常见的懒操作,久而久之,那个目录文件会非常多,尤其当这个项目成为“历史项目”后,那堆文件会变得让后人难以维护。

下面将介绍 2 个小技巧,如何使用 webpackcopy-webpack-pluginscript-loader 来优化 node_modules 文件和项目依赖关系,来降低日后的维护成本。

copy-webpack-plugin

这是个简单的文件复制工具插件,用于把某文件从 A 目录 copy 到 B 目录。

原先我们手工拷贝流程如下:

  1. 在资源文件夹(dist/public)新建 libs/js/jquery 目录
  2. node_modules 下的 jquery 相关依赖复制到上述目录中


似乎没什么问题,一两个文件影响不了项目可读性,但对于一个老项目来说乱七八糟的 js 依赖,以及完全脱离工程化的构建方式是极具风险的,万一哪天谁删资源跑路,都是隐患。

我不会告诉你,我在 pdfjs-dist 中引入 cmaps 文件夹提交了多少文件,强迫症表示接受不了。

对于 copy-webpack-plugin 使用也非常简单,毕竟现在 webpack 都到 5 了:



这样,项目目录就变得清爽多了,也不用了继续维护相关的资源文件内容了,每次打包构建都交给 webpack 帮我们从 node_modules 找到资源文件。

并且,根据需要可以详细设置目标文件的路径,使项目以后可以灵活调整,减少维护成本。

哦对了,如果你还在用 webpack4 ,此插件不要使用 7 和 8 两个版本。

script-loader

上面使用 copy-webpack-plugin 插件只是变相的对项目进行工程化管理,实际输出到资源目录的文件还是一样;但下面说的 script-loader 将减少实际资源目录物理文件数量,从而使项目文件量“瘦身”。

以通过 webpackexternals 引入 jquery 模块举例:




像上述用法会在 html 中额外添加 script 以加载 jquery 文件,同时对应的资源文件目录也会有这个 jquery.js 文件存在,但有时我们希望减少这样的物理文件的存在,更希望把 node_modules 中的依赖集中打包到项目 bundle.js 中。

webpackloader 提供 Inline 方式,使之我们不用再 module 中编写对应的规则:


这样,我们减少了物理文件数,同时使某些插件功能更集中在业务代码中,减少某些外界变化导致依赖功能的不可用

最后

上面两个方法都很常见,我最近在看 pdfjs-dist 模块的 Demo 时看到了这样的使用便拿来和大家分享。

有时候我们追求不是技术的高深和多样,能用最简单的技术方案在某个场景解决问题才是有经验开发者应该具备的能力。

标签: jquery loading

相关文章

资源分享:炫酷的css3动画加载框架Loaders

页面加载动画在web应用中必不可少,加载动画效果也各有千秋。在web页面ajax请求,单页面应用页面切换时好的加载动画会让浏览者赏心悦目忘记加载的耗费时间,一个性能好的页面,必须有loading预加载...

性能出色,纯CSS实现的loading动画——Loaders.css

介绍loaders.css是Github上一个使用纯粹的css实现的开源loading动画库,完全用CSS编写的加载动画的集合。每个动画仅限于CSS属性的一小部分,以避免复杂的绘画和布局计算。下面这张...

DevExpress Demo示例展示:多功能站点插件

DevExpress ASP.NET MVC中有一个多功能扩展集合,包括RatingControl, the Round Panel,Callback Panel (通过callbacks自动更新内容...

前端面试:异步加载和延迟加载的理解?

回答:异步加载和延迟加载是前端优化网站性能的两种方法。异步加载的方案: 动态插入script标签通过ajax去获取js代码,然后通过eval执行script标签上添加defer或者async属性创建并...

使用vanilla-lazyload实现懒加载

使用vanilla-lazyload实现懒加载给主题配置一个全新的lazyload库,来自verlok的vanilla-lazyload开源js库,支持更多的特性和特效。vanilla-lazyloa...

Bootstrap5 响应式布局:移动端适配终极方案

你的网页在手机上又双叒叕变形了?老板拍桌要求三天搞定移动端?别慌,Bootstrap5的响应式魔法正在待命!移动端流量早已超越桌面端,但你的网站还在用“缩小版”应付手机用户?研究表明,53%的用户会因...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。