webpack学习

webpack

前段工程化

  1. 模块化(js,css,资源的模块化)

  2. 组件化(服用现有的ui结构样式行为)

  3. 规范化(目录结构的划分,编码,文档,接口 规范化,git分支管理)

  4. 自动化(自动化构建 ,自动部署,自动化测试)

前段工程化解决方案

webpack (webpack 中文文档 | webpack 中文网) 项目优选

parcel (Parcel 中文网) 开发第三方包优选

什么是webpack

概念:

webpack 是前段项目工程化的具体解决方案

主要功能:

它提供了有好的 前段模块化的 开发支持, 以及代码压缩混淆, 处理浏览器端 javaScript 的兼容性 性能优化 等强大的功能

好处

让程序员把工作的重心放在具体的实现上,提高了前段的开发效率和项目的可维护性

webpack的基本使用

在项目中安装webpack

npm install webpack@5.42.1 webpack-cli@4.7.2 -D

-S 是 --svae的简写

-D 是 --save-dev 的简写

具体参考 npmjs.com

在项目中配置webpack

1.在项目根目录中 创建名为 webpack.config.js 的配置文件,初始化一下代码

const path = require('path')
 module.exports = {
    //mode 用来指定构建模式 , 可选值 development 和 poroduction
    mode : 'development'
    //__dirname 当前文件存放路径 
   entry : path.join(__dirname,'./src/index.js'),
   output: {
      path:path.join(__dirname,'./dist'),
      filename : 'bundle.js'
   }    
 }

2.在package.json 的scripts节点下 新增dev脚本

  "scripts": {
     "dev" : "webpack"
  }

webpack插件的作用

通过安装和配置第三方的插件 可以拓展 webpack的能力,从而让webpack用起来更方便,最长用的webpack插件有如下两个

1.webpack-dev-server

类似于node.js 的modemon 工具

每当修改了源代码.webpack会自动进行项目的打包和构建

安装

npm install webpack-dev-server@3.11.2 -D

配置

"scripts": {
    //"dev": "webpack"
    "dev" : "webpack serve"
  },

再次运行 npm run dev ,重新进行项目打包

在浏览器访问 localhost:8080 地址查看打包效果

2.html-webpack-plugin

webpack中的html插件(类似于一个模板引擎插件)

可以通过此插件自定义index.html页面的内容

npm install html-webpack-lplugin -D

3.loader

在实际开发过程中,webpack 默认只能打包处理.js后缀名结尾的模块.其他非.js后缀的模块,webpack默认处理不了, 需要调用 loader 加载器才可以正常打包,否则会报错

loader 加载器作用: 协助 webpack打包处理特定的文件模块.比如

  • css-loader 可以打包处理.css相关的文件

  • less-loader 可以打包处理 .less相关的文件

  • babel-loader 可以打包处理 webpack 无法处理的高级js语法

    npm install style-loader  -D
    npm install css-loader -D
    npm instaill less-loader - D

配置

webpack.config.js

const path = require('path')
// 1.导入 html 插件 
const HtmlWebpackPlugin  = require('html-webpack-plugin')
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
​
​
​
 module.exports = {
    //mode 用来指定构建模式 , 可选值 development 和 poroduction
    mode : 'development',
    //__dirname 当前文件存放路径 
   entry : path.join(__dirname,'./src/index.js'),

//devtool:'eval-source-map',

    devtool:'nosources-source-map',

   /**/   
   output: {
      path:path.join(__dirname,'./dist'),
      filename : 'bundle.js'
   } ,
   plugins: [
      new HtmlWebpackPlugin({
         "template":'./src/index.html',
         "filename":"index.html"
      }),
      new CleanWebpackPlugin()
    ],
    devServer:{
      //首次打包后 自动打开浏览器
      open:true,
      //端口号
      port:80,
      //ip地址
      host:'127.0.0.1' 
    },
    module: {
      rules: [
        { test: /\.css$/i,use: ["style-loader", "css-loader"] },
        { test: /\.less$/i,use: ["style-loader", "css-loader","less-loader"] },
        {test: /\.(png|jpg|gif)$/i, use:[{loader: 'url-loader',options:{limit: 8192,}}] }
      ],
    }
 }
  

package.json

{
  "name": "webpack_demo_01",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "webpack serve",
    "build": "webpack --mode production"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "clean-webpack-plugin": "^4.0.0",
    "css-loader": "^6.7.1",
    "html-webpack-plugin": "^5.5.0",
    "less-loader": "^11.1.0",
    "style-loader": "^3.3.1",
    "url-loader": "^4.1.1",
    "webpack": "^5.74.0",
    "webpack-cli": "^4.10.0",
    "webpack-dev-server": "^3.11.3"
  },
  "dependencies": {
    "jquery": "^3.6.1"
  }
}
​

html-webpack-plugin - npm

Webpack是一个强大的模块打包工具,它主要用于现代JavaScript应用的静态资源管理和优化。学习Webpack可以按照以下思维导图进行: 1. **基础概念** - 安装与配置:理解Webpack的基本安装过程,如npm安装、配置文件(webpack.config.js)的结构。 - 工作原理:模块解析、加载器(loader)、插件系统等核心组件。 2. **模块管理** - 输入与输出:Webpack如何处理模块的输入路径和输出路径。 - CommonJS & ES6模块化:熟悉CommonJS和ES6模块的区别及Webpack对它们的支持。 3. **打包流程** - 静态分析:了解Webpack是如何构建依赖树的。 - 缓存机制:认识Webpack的缓存策略,提高构建速度。 4. ** loader 技术** - 转换器:解释如何使用loaders转换各种文件类型,如CSS预处理器、图片压缩等。 - 自定义loader:如果需要,学习如何创建自定义loader来处理特定需求。 5. **优化与性能** - UglifyJS、terser:学习如何压缩代码以减小体积。 - SplitChunksPlugin:理解代码分割和懒加载的优化技术。 6. **常见插件** - HtmlWebpackPlugin:生成HTML模板并自动注入打包后的JS和CSS。 - MiniCssExtractPlugin:分离CSS到单独文件。 7. **高级主题** - HMR(热更新):实时刷新模块变化。 - tree-shaking:移除未使用的代码。 8. **实践项目**:通过实际搭建项目来巩固所学知识,例如React、Vue等框架的前端项目。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值