web开发的困境
文件依赖错综复杂
静态资源请求效率低
模块化支持不友好
浏览器对高级javascript 支持不好
webpack官网 https://webpack.js.org/
流行的打包工具
友好支持模块化、代码混淆、处理JS兼容、性能优化等
隔行变色示例
1、 webpack01 2、 npm init -y 3、 src 4、 src/index.html 5、 npm i jquery 默认不能访问,浏览器支持不好,要用webpack打包 7、 src/index.js 8、 npm install webpack webpack-cli -D 9、 在项目根目录下创建 10、 module.exports={ mode:'development' } 11、 "scripts": { "dev": "webpack" } 12、 npm run dev
|
运行后生成的文件 dist/main

修改界面的引用
<!-- <script src="../dist/main.js"></script> -->
|
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <script src="/bundle.js"></script> </head> <body> <h1>Webpack测试</h1> <ul> <li>第1个li</li> <li>第2个li</li> <li>第3个li</li> <li>第4个li</li> <li>第5个li</li> <li>第6个li</li> <li>第7个li</li> <li>第8个li</li> <li>第9个li</li> <li>第10个li</li> </ul> <table border="1px" cellspacing="0" cellpadding="1px"style="width: 40%;height: 300px;text-align:center"> <tr> <td>1</td><td>2</td><td>3</td><td>4</td> </tr> <tr> <td>5</td><td>6</td><td>7</td><td>8</td> </tr> <tr> <td>9</td><td>10</td><td>11</td><td>12</td> </tr> <tr> <td>13</td><td>14</td><td>15</td><td>16</td> </tr> <tr> <td>17</td><td>18</td><td>19</td><td>20</td> </tr> <tr> <td>21</td><td>22</td><td>23</td><td>24</td> </tr> <tr> <td>25</td><td>26</td><td>27</td><td>28</td> </tr> </table> </body> </html>
|
index.js
import $ from 'jquery'
$(() => { $('li:odd').css('backgroundColor', 'pink'); $('li:even').css('backgroundColor', 'red');
$("table tr:odd").css('backgroundColor', 'pink') })
|

修改入口出口文件
默认打包入口: src/index.js 出口 dist/main.js
修改webpack.config.js
const path=require('path');
mode:'development', entry:path.join(__dirname,'./src/index.js'), output:{ path:path.join(__dirname,'./dist'), filename: "bundle.js" }
|

修改之后把界面的引入也需要更改
<!-- <script src="../dist/bundle.js"></script> -->
|
每次修改后自动打包
1、 npm install webpack-dev-server -D 2、 "scripts": { "dev": "webpack-dev-server" } 3、 html界面 <script src='/bundle.js'></script> 4、 const path=require('path'); module.exports={ mode:'development', entry:path.join(__dirname,'./src/index.js'), output:{ path:path.join(__dirname,'./dist'), filename: "bundle.js" }, devServer:{ static:'./src', } } 5、 npm run dev 访问方式 htpp:
修改后自动弹窗
修改package.json "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "webpack-dev-server --open --host 127.0.0.1 --port 8090" }
|

打包CSS
加载器
通过loader 打包非 js 模块
less-loader 处理 .less 文件
sass-loader 处理 .scss 文件
url-loader 处理 css文件中相关文件

安装处理css的loader
npm i style-loader css-loader -D
|
创建css文件
#box{ width:800px; height:500px; background-color:pink; background: url('../images/3210.webp'); background-size:800px 500px }
|
修改webpack.config.js
module:{ rules:[ { test: /\.css$/, use: [ 'style-loader', 'css-loader', 'less-loader', ] } ] }
|
index.js导入css

打包less
下载加载器
npm i less-loader less -D
|
创建less文件
style.less
//嵌套 @width:200px; header{ background-color: pink; width: @width; height: @width + 100px; .log{ width: 100px; height: 50px; font-size:40px; }; .nav{ color:red; } }
|
修改webpack.config.js
{ test: /\.less$/, use: [ 'style-loader', 'css-loader', 'less-loader' ] }
|

index.js导入less
import './css/style.less'
|

打包sass
下载加载器
npm i sass-loader node-sass -D
|
创建sass文件
sass.scss
$boxcolor:pink; #box2{ $width:100px; width: $width; height: 100px; background-color:$boxcolor; }
|
修改webpack.config.js
{ test: /\.scss$/, use: [ 'style-loader', 'css-loader', 'sass-loader' ] }
|
index.js导入sass