广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >webpack如何实现拆分、打包、压缩
  • 286
分享到

webpack如何实现拆分、打包、压缩

2024-04-02 19:04:59 286人浏览 八月长安
摘要

这篇文章主要介绍webpack如何实现拆分、打包、压缩,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!步骤1.传统项目中的问题在不依赖任何自动化、模块化工具的项目中,通常我们的代码是这

这篇文章主要介绍webpack如何实现拆分、打包、压缩,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

步骤

1.传统项目中的问题

在不依赖任何自动化、模块化工具项目中,通常我们的代码是这样的:

index.html

<html>
 <head>
 <title>传统项目</title>
 <script src="https://code.Jquery.com/jquery-2.2.4.js"></script>
 </head>
 <body>
 <script src="app/index.js"></script>
 </body>
</html>

app/index.js

function main() {
 $('body').html('hello world!');
}
main();

 以上示例中,脚本之间存在着隐式依赖关系。

index.js取决于被包括在页面运行之前的jQuery,它只是假设有一个全局变量$的存在。

这样管理javascript项目有一些问题:

如果依赖项丢失,或者包含在错误的顺序中,应用程序将不会运行。

如果包含依赖项但没有使用,那么浏览器必须下载很多不必要的代码。

所以为了解决以上问题,我们需要使用WEBpack来实现一些改变。

2.准备

首先我们得在项目中安装webpack,我们打开命令行工具运行:

mkdir demo && cd demo // 新建demo文件夹并打开
npm init // 初始化npm,生成package.JSON配置文件
npm install --save-dev webpack@beta // 安装webpack2.0版本,Mac系统可能需要添加sudo命令

以上使用的npm命令需要安装node.js,可以点击这里安装即可:node.js

为了改进上方传统项目中的不足,我们这里还需要安装jQuery:

npm install --save jQuery // 安装jQuery

3.改变

改变后的index.js

var $ = require('jquery');
function main() {
 $('body').html('hello world!');
}
main();

这里我们可以直接在index.js里引用jQuery,index.js明确要求jQuery的存在,这样就不存在隐式依赖的问题(没有全局污染)。

改变后的index.html

<html>
 <head>
 <title>webpack项目</title>
 </head>
 <body>
 <script src="dist/bundle.js"></script>
 </body>
</html>

这里我们的index.html文件只引入了最终打包后的bundle.js。现在运行webpack命令将index.js输出为bundle.js。

运行命令:webpack app/index.js dist/bundle.js

webpack app/index.js dist/bundle.js
Hash: 3bb91a6dedfc2a2a1c08
Version: webpack 2.2.0-rc.4
Time: 397ms
 Asset Size Chunks Chunk Names
bundle.js 270 kB 0 [emitted] [big] main
 [0] ./~/jquery/dist/jquery.js 267 kB {0} [built]
 [1] ./app/index.js 83 bytes {0} [built]

最终我们在浏览器中打开index.html页面可以看到输出的“hello world!”。

webpack如何实现拆分、打包、压缩

4.拆分

现在如果我们index.js中的”hello world!”字符串需要放到另外一个hello.js中,然后在index.js中引入使用的话,这就涉及到webpack模块拆分的功能。

app/index.js

var $ = require('jquery');
var str = require('./hello.js');
function main() {
 $('body').html(str);
}
main();

app/hello.js

var str = 'hello world!';
module.exports = str;

我们在hello.js中通过module.exports导出str变量,然后在index.js通过require导入同样可以实现浏览器中输入“hello world!”的效果,当然我们需要重新运行下webpack命令:webpack app/index.js dist/bundle.js

5.打包

其实在上面我们已经使用了打包命令:

webpack app/index.js dist/bundle.js

其中的app/index.js即为打包的入口文件,而dist/bundle.js为输出文件。

但是我们会发现这样的命令不利于我们复杂项目配置的使用,对于更复杂的配置,我们可以利用配置文件webpack.config.js来统一管理。

我们可以在demo文件夹下新建webpack.config.js配置文件:

module.exports = {
 entry: './app/index.js',
 output: {
 filename: 'bundle.js',
 path: './dist'
 }
}

上方配置中的entry就是我们的入口文件,可以有多个入口文件,而output即为webpack打包的输入对象,filename为输出文件名,path为输出路径。

如此我们运行命令行:

webpack --config webpack.config.js

同样可以生成打包目录dist及打包文件bundle.js。

当然你也可以直接运行简化的命令:

webpack

webapck会自动去寻找当前目录下的webpack.config.js文件。

6.压缩

上一步我们利用webpack命令将多个多件打包到了一个bundle.js的文件中,但是并未进行压缩,你可以打开bundle.js进行查看。

而如果我们需要对打包后的代码进一步压缩处理,我们可以运行命令:

webpack -p

这时我们可以来进行下打包和压缩的文件大小对比

打包命令:webpack

webpack
Hash: ab4a1091f0880100eab0
Version: webpack 2.2.0-rc.4
Time: 387ms
 Asset Size Chunks Chunk Names
bundle.js 270 kB 0 [emitted] [big] main
 [0] ./app/hello.js 50 bytes {0} [built]
 [1] ./~/jquery/dist/jquery.js 267 kB {0} [built]
 [2] ./app/index.js 114 bytes {0} [built]

输出的bundle.js整个文件大小为270 kB。

压缩命令:webpack -p

webpack -p
Hash: ab4a1091f0880100eab0
Version: webpack 2.2.0-rc.4
Time: 1967ms
 Asset Size Chunks Chunk Names
bundle.js 88.3 kB 0 [emitted] main
 [0] ./app/hello.js 50 bytes {0} [built]
 [1] ./~/jquery/dist/jquery.js 267 kB {0} [built]
 [2] ./app/index.js 114 bytes {0} [built]

输出的bundle.js整个文件大小为88.3 kB。

很明显,文件被压缩了。

7.进一步压缩优化

上方我们通过webpack的压缩命令将文件打包并压缩了,但是对于webpack -p压缩后的文件来说其实还有压缩的余地。如果你使用的是webpack1.0,那么你可以在配置文件中添加plugins配置项,并且加入如下插件

var webpack = require('webpack');
module.exports = {
 ...
 plugins:[
 // 去除代码块内的告警语句
 new webpack.optimize.UglifyJsPlugin({
 compress: {
 warnings: false
 }
 }),
 // 优先考虑使用最多的模块,并为它们分配最小的ID
 new webpack.optimize.OccurenceOrderPlugin()
 ]
 ...
}

而本示例中使用的是webpack2.0版本,在2.0中UglifyJsPlugin的compress选项默认为false,并且OccurrenceOrderPlugin默认启用,所以无需进行配置。

以上是“webpack如何实现拆分、打包、压缩”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: webpack如何实现拆分、打包、压缩

本文链接: https://www.lsjlt.com/news/78987.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • webpack如何实现拆分、打包、压缩
    这篇文章主要介绍webpack如何实现拆分、打包、压缩,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!步骤1.传统项目中的问题在不依赖任何自动化、模块化工具的项目中,通常我们的代码是这...
    99+
    2022-10-19
  • webpack中如何压缩打包html资源
    本篇内容主要讲解“webpack中如何压缩打包html资源”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“webpack中如何压缩打包html资源”吧!为什么需要...
    99+
    2022-10-19
  • webpack如何打包压缩js文件和css文件
    这篇文章主要介绍“webpack如何打包压缩js文件和css文件”,在日常操作中,相信很多人在webpack如何打包压缩js文件和css文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”webpack如何打包...
    99+
    2023-07-04
  • C#如何实现多文件打包压缩
    C#如何实现多文件打包压缩,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。最近项目需要实现多文件打包的功能,尝试了一些方法,最后发现使用ICSharpCode.S...
    99+
    2023-06-22
  • Linux中如何打包压缩解压
    这篇文章将为大家详细讲解有关Linux中如何打包压缩解压,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下所述:tar命令解包:tar zxvf FileName.tar打包:tar czvf F...
    99+
    2023-06-09
  • 如何解决webpack -p压缩打包react报语法错误的方法
    这篇文章给大家分享的是有关如何解决webpack -p压缩打包react报语法错误的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言最近在用webpack打包react代码...
    99+
    2022-10-19
  • C#实现多文件打包压缩(.Net Core)
    最近项目需要实现多文件打包的功能,尝试了一些方法,最后发现使用ICSharpCode.SharpZipLib 最符合项目的要求。 具体实现如下: 1.在 Nuget 中安装ICSha...
    99+
    2022-11-12
  • Java如何实现文件压缩为zip和解压zip压缩包
    本篇内容介绍了“Java如何实现文件压缩为zip和解压zip压缩包”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!压缩成.zip代码如下:pu...
    99+
    2023-07-02
  • .NetCore多文件打包压缩的实现代码
    最近项目需要实现多文件打包的功能,尝试了一些方法,最后发现使用  ICSharpCode.SharpZipLib 最符合项目的要求。 具体实现如下: 1.在 Nuget 中安装  I...
    99+
    2022-11-12
  • Vue实现文件批量打包压缩下载
    上次做了一个选择多个数据生成多个二维码并下载,当时项目催的紧,就简单写了个循环生成二维码下载,一次性会下载很多文件,特别难整理; 刚好这次项目又遇到类似这种功能,需要一次性批量下载多...
    99+
    2022-11-13
  • Java实现多文件压缩打包的方法
    本文实例讲述了Java实现多文件压缩打包的方法。分享给大家供大家参考,具体如下:package com.biao.test;import java.io.File;import java.io.FileInputStream;import ...
    99+
    2023-05-31
    java 文件 压缩
  • react打包压缩太慢如何解决
    这篇文章主要介绍“react打包压缩太慢如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react打包压缩太慢如何解决”文章能帮助大家解决问题。react打包压缩太慢的解决办法:1、使用“np...
    99+
    2023-07-04
  • 如何解决webpack4 css打包压缩问题
    这篇文章将为大家详细讲解有关如何解决webpack4 css打包压缩问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。这两天一直在练习这个webpack4, 发现有好多问...
    99+
    2022-10-19
  • VB.NET如何实现压缩和解压缩
    这篇文章主要为大家展示了“VB.NET如何实现压缩和解压缩”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET如何实现压缩和解压缩”这篇文章吧。VB.NET压缩和解压缩实现代码:Publi...
    99+
    2023-06-17
  • 在java项目中使用ant包如何实现压缩和解压缩
    在java项目中使用ant包如何实现压缩和解压缩?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java ant包中的org.apache.tools.zip实现...
    99+
    2023-05-31
    java ant ava
  • vue-cli3中如何打包成zip压缩文件
    目录vue-cli3打包成zip压缩文件如何实现?思考vue-cli3打包优化vue-cli3打包成zip压缩文件 目前在我司,采用前后分离的方式开发,这就会面临一个问题。那就是部署...
    99+
    2022-11-13
    vue-cli3打包 zip压缩文件 vue-cli3打包成zip
  • 手机wps如何压缩文件打包发送
    今天小编给大家分享一下手机wps如何压缩文件打包发送的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1,打开手机上面的文件管理...
    99+
    2023-07-01
  • Android如何实现压缩和解压缩文件
    废话不多说了,直接给大家贴java代码了,具体代码如下所示: Java代码 package com.maidong.utils; import java.io.Buffe...
    99+
    2022-06-06
    压缩 解压 Android
  • 如何利用Java实现zip压缩解压缩
    小编给大家分享一下如何利用Java实现zip压缩解压缩,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  zip压缩文件结构:一个zip文件由多个entry组成,每...
    99+
    2023-06-03
  • python如何实现压缩
    小编给大家分享一下python如何实现压缩,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!压缩这个方法可以将布尔型的值去掉,例如(False,None,0,“”),...
    99+
    2023-06-27
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作