这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战
Webpack-01
在网页中会引用哪些常见的静态资源?
- JS
- .js .jsx .ts(TypeScript)
- CSS
- .css .less .sass .scss
- Images
- .jpg .png .gif .bmp .svg
- 字体文件(Fonts)
- .svg .ttf .eot .woff .woff2
- 模板文件
- .ejs .jade .vue【这是在webpack中定义组件的方式,推荐这么用】
网页中引入的静态资源多了以后有什么问题?
- 一个前端项目里面可能有多个 .js, 多个 .css , 多个静态图片, 多个其他前端资源。 当一个页面需要加载多个 .js 的话,也会拖累整个页面的加载速度,因为我们要发起很多的二次请求;
- 要处理错综复杂的依赖关系,例如一些 js 资源彼此之间存在依赖关系。
什么是webpack?
- Webpack 是一个前端资源加载/打包工具(项目构建工具)。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。
- webpack 提供了友好的模块化支持,以及资源的合并、打包、压缩、混淆、处理 js 兼容问题、性能优化等强大的功能,从而让程序员把工作的重心放到具体的功能实现上,提高了开发效率和项目的可维护性。
- webpack官网
为什么要使用webpack
- 一个前端项目里面可能有多个 .js, 多个 .css , 多个静态图片, 多个其他前端资源。 当一个页面需要加载多个 .js 的话,也会拖累整个页面的加载速度,因为我们要发起很多的二次请求;
- 要处理错综复杂的依赖关系,例如一些 js 资源彼此之间存在依赖关系。
## webpack安装的两种方式
- 运行
npm i webpack -g
全局安装webpack,这样就能在全局使用webpack的命令 - 在项目根目录中运行
npm i webpack --save-dev
安装到项目依赖中 - 查看webpack 信息 npm info webpack webpack -v
初步使用webpack打包构建列表隔行变色案例
- 运行
npm init
初始化项目,使用npm管理项目中的依赖包 - 创建项目基本的目录结构
- 使用
cnpm i jquery --save
安装jquery类库 - 创建
main.js
并书写各行变色的代码逻辑:
import $ from 'jquery'
// 设置偶数行背景色,索引从0开始,0是偶数
$('#list li:even').css('backgroundColor','lightblue');
// 设置奇数行背景色
$('#list li:odd').css('backgroundColor','pink');
-
直接在页面上引用
main.js
会报错,因为浏览器不认识import
这种高级的JS语法,需要使用webpack进行处理,webpack默认会把这种高级的语法转换为低级的浏览器能识别的语法; -
运行
webpack 入口文件路径 -o 输出文件路径
对main.js
进行处理: webpack ./src/js/main.js -o ./dist/bundle.js -o === --output
不通过配置文件打包方式
webpack4 默认不需要再创建webpack.config.js来配置打包的入口和出口;
默认情况下, webpack
入口为./src/index.js文件
出口为./dist/main.js文件
确保入口文件/src/index.js位置正确,在项目根目录下运行命令:
webpack 默认打包 (最新版的可以不用引入配置文件)
## 使用webpack的配置文件简化打包时候的命令
- 在项目根目录中创建
webpack.config.js
- 由于运行webpack命令的时候,webpack需要指定入口文件和输出文件的路径,所以,我们需要在
webpack.config.js
中配置这两个路径:
// 导入处理路径的模块
var path = require('path');
// 导出一个配置对象,将来webpack在启动的时候,会默认来查找webpack.config.js,并读取这个文件中导出的配置对象,来进行打包处理
module.exports = {
entry: path.resolve(__dirname, 'src/js/main.js'), // 项目入口文件
// 多入口
// entry:['./src/js/index.js','./src/js/one.js'],
//entry: {
//ind: './src/js/index.js',
//on: './src/js/one.js'
//},
output: { // 配置输出选项
path: path.resolve(__dirname, 'dist'), // 配置输出的路径
filename: 'bundle.js' // 配置输出的文件名
},
// 多出口
//output: {
// filename: 'js/webpack02.[name].js',
// path: path.resolve(__dirname, 'dist')
//},
}
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!