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

boyanx6个月前技术教程18

前言

前端现在开发某个常见功能,直接会在 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

相关文章

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

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

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

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

用lazyload.js释放你网站的宽带

本教程将使用Visual Studio 2013手把手教你用lazyload.js释放你网站的宽带。本文源码:https://github.com/shellcheng/UsedLazyjs本文地址:...

前端图片延迟加载详细讲解

原文链接:http://www.gbtags.com/gb/share/6366.htm? 原本是打算昨天昨天下午的时候就写一篇关于前端图片延迟加载的详细技术的博客的,没想到下午公司项目出现了一些问题...

视差滚动不适合网页的5个原因

@OpzoonUED 翻译,原文出自于smashinghub.com。列举缺点之前,首先我们要看看什么是视差滚动。视差效果,原本是一个天文学术语,当我们观察星空时,离我们远的星星移动速度较慢,离我们近...

基于 layui、xlsx.js 封装的 excel 导出小插件

简介在工作中发现突然对excel导出有点小需求,所以开发了这款小插件。此工具兼容IE10,firfox等主流浏览器。文件读取基于H5的FileReader,导出excel基于XLSX.js(此项目已开...

发表评论    

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