微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

流行的前端模块化工具-webpack

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

在这里插入图片描述通俗的讲webpack作为编译器和浏览器“通话的”翻译,编译器编译的语言经过webpack的“翻译”使浏览器解析。

把项目当作一个整体,通过一个给定的主文件开始找你的项目的所有依赖的文件。使用loaders处理它们,最后打包成一个或者多个浏览器可以识别的js文件
与它有相类似作用的还有gulp和grunt。
webpack:一个模块化工具(a module bundle)
gulp、grunt:一个任务运行器(a Task Runner)

在这里插入图片描述

webpack中的entry是做什么的?
entry:用来写入口文件的,是整个项目文件依赖关系的根。当我们需要写入多个文件的时候,可以把entry写成一个对象

var config={
	entry:{
		main:'./src/index.js'
	}
}

webpack中的output是做什么的?
output:即使入口文件有多个,但是只有一个输出配置,即output

var config={
	entry:{
		main:'./src/index.js'
	},
	output:{
		filename:'[name].js',
		path:path.resolve('./build')
	}
}
module.esports=config

webpack中的Loader作用?

  • 实现对不同格式的文件处理,比如将scss转换为css,或者typescript转化为js。

  • 转换这些文件,从而使其能够被添加到依赖图中。
    常用的有:

  • babel-loader:把ES6转换成ES5

  • babel

  • css-loader:加载CSS,支持模块化、压缩、文件导入等特性

  • style-loader:把CSS代码注入到javascript中,通过DOM操作加载CSS

  • file-loader:把文件输出一个文件夹中,在代码中通过相对的URL去引用输出文件

  • url-loader:和file-loader类似,但是能在文件很小的情况下以base64的方式把文件内容注入到代码中去

webpack中的Plugins作用?

loaders处理源文件,一次处理一个文件,而plugins并不直接操作单个文件,它直接对整个构建过程起作用

  • ExtractTextWebpackPlugin:它将入口中引用css文件都打包在独立的css文件中,不是内嵌在js打包文件
  • HtmlWebpackPlugin:依据一个简单的index.html模板,生成一个自动引用打包后的js文件的新index.html
  • HotModuleReplacementPlugin:允许在修改组件代码时,自动刷新实时预览修改后的结果。(注意永远不要在生产环境中使用HMR)

常用的Plugin:

  • define-plugin:定义环境变量
  • commons-chunk-plugin:提取公共代码
  • uglifyjs-webpack-plugin:通过UglifyES压缩ES6代码
    bundle,chunk,module?
  • bundle是由webpack打包出来的文件
  • chunk是指webpack在进行模块的依赖分析时,代码分割出来的代码
  • module是开发中的单个模块
  • chunk打包后变成bundle

为什么要用webpack实现JS压缩?

  • 删除注释
  • 删除空格 (所以我们偶尔会看到没有间隔或只有一行的JS代码
  • 缩短变量名,函数名和函数参数名(var myName = ‘ff’)–>var a = ‘ff’

这样做的好处:

  • 减少文件体积,加快传输速度,提高页面性能
  • 实现代码混淆,破坏其可读性,保护创作者的知识产权
    (注:这一过程不可逆!需要事先做好备份工作)
    更多了解

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐