webpack看这一篇就够了(一)

简介: webpack看这一篇就够了

今日学习目标

  1. 能够理解webpack基本概念和作用
  2. 能够掌握webpack使用步骤
  3. 能够使用webpack相关配置
  4. 能够使用webpack开发服务器
  5. 能够查阅使用webpack中文文档


1. webpack基本概念

目标: webpack本身是, node的一个第三方模块包, 用于打包代码


webpack官网

  • 现代 javascript 应用程序的 静态模块打包器 (module bundler)
  • 为要学的 vue-cli 开发环境做铺垫


webpack能做什么

把很多文件打包整合到一起, 缩小项目体积, 提高加载速度

  • 打包前的项目

778a9c7016fc4747b309ded44caa5ffe.png


  • 打包后的项目

09babd898b24482fb7cd24743544f354.png

895ff58c4f5e4f88818386b286b09477.png


其中功能:

eb7b58ed74754662934f03074a535d6c.png

  • ES6/7/8 -> ES5 处理js兼容
  • 支持js模块化
  • 处理css兼容性
  • html/css/js -> 压缩合并


2. webpack的基本使用

2.0 创建项目

  • 新建项目目录,目录结构和之前的规范不同
  • 根目录创建public


创建index.html

<body>
  <div>轮播图</div>
  <div>tabs标签页</div>
</body>
<script src="../src/index.js"></script>


创建src存放代码资源文件

  • 创建index.js
console.log('实现轮播图的业务逻辑')
console.log('实现tabs标签页的逻辑')


将逻辑进行模块化

  • 创建banner.js
console.log('实现轮播图的业务逻辑')


  • 创建tabs.js
console.log('实现tabs标签页的逻辑')


index.html中引入

<body>
  <div>轮播图</div>
  <div>tabs标签页</div>
</body>
<script src="../src/banner.js"></script>
<script src="../src/tabs.js"></script>


2.1 解决多次引入资源文件

  • 在index.js中引入banner.js和tabs.js
import './banner.js'
import './tabs.js'


index.html中引入index.js

<body>
  <div>轮播图</div>
  <div>tabs标签页</div>
</body>
<script src="../src/index.js"></script>


报错

5d1830d9d7bb43279cff8ef2dc37983b.png


2.2 webpack使用

  1. 初始化包环境
yarn init


  1. 安装依赖包
yarn add webpack webpack-cli -D


配置scripts(自定义命令)

scripts: {
  "build": "webpack"
}


运行打包命令

yarn build
#或者 npm run build


总结: src并列处, 生成默认dist目录和打包后默认main.js文件,默认会打包src下的index.js


2.3_webpack 更新打包

目标: 以后代码变更, 如何重新打包呢


  1. 重新打包
yarn build


总结1: src下开发环境, dist是打包后, 分别独立

总结2: 打包后格式压缩, 变量压缩等


3. webpack的配置

3.0_webpack-入口和出口

目标: 告诉webpack从哪开始打包, 打包后输出到哪里


默认入口: ./src/index.js

默认出口: ./dist/main.js

webpack配置 - webpack.config.js(默认)


  1. 新建src并列处, webpack.config.js
  2. 填入配置项
const path = require("path")
module.exports = {
    entry: "./src/main.js", // 入口
    output: { 
        path: path.join(__dirname, "dist"), // 出口路径
        filename: "bundle.js" // 出口文件名
    }
}


  1. 修改package.json, 自定义打包命令 - 让webpack使用配置文件
"scripts": {
    "build": "webpack"
},


  1. 打包观察效果


3.1_打包流程图

38012268108e48b0a70632abb4f3fb04.png


重点: 所有要被打包的资源都要跟入口产生直接/间接的引用关系


3.2_插件-自动生成html文件

目标: html-webpack-plugin插件, 让webpack打包后生成html文件并自动引入打包后的js


html-webpack-plugin插件地址

  1. 下载插件
yarn add html-webpack-plugin  -D


webpack.config.js配置

// 引入自动生成 html 的插件
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
    // ...省略其他代码
    plugins: [
        new HtmlWebpackPlugin()
    ]
}


  1. 重新打包后观察dist下是否多出html并运行看效果
    打包后的index.html自动引入打包后的js文件
  2. 自定义打包的html模版,和输出文件名字
plugins: [
  new HtmlWebpackPlugin({
    template: './public/index.html',
    filename: 'index.html'
  })
]


3.3_mode模式

  • mode模式分为开发阶段和发布阶段
  • development 开发阶段,简易打包,打包速度快
  • production 发布阶段,打包精细,打包速度慢(但是没关系不会经常production)
mode: 'development || production'


3.3_webpack开发服务器-为何学?

文档地址: https://webpack.docschina.org/configuration/dev-server/

抛出问题: 每次修改代码, 都需要重新 yarn build 打包, 才能看到最新的效果, 实际工作中, 打包 yarn build 非常费时 (30s - 60s) 之间

为什么费时?

  1. 构建依赖
  2. 磁盘读取对应的文件到内存, 才能加载
  3. 将处理完的内容, 输出到磁盘指定目录

解决问题: 起一个开发服务器, 在电脑内存中打包, 缓存一些已经打包过的内容, 只重新打包修改的文件, 最终运行加载在内存中给浏览器使用

目录
相关文章
|
7月前
webpack成长指北第3章---常用webpack命令及使用webpack命令的方式
webpack成长指北第3章---常用webpack命令及使用webpack命令的方式
62 0
|
JavaScript
webpack4主流程源码阅读,以及动手实现一个简单的webpack(二)
webpack4主流程源码阅读,以及动手实现一个简单的webpack
129 0
|
1月前
|
JavaScript 开发者
10天进阶webpack---(1)为什么要有webpack
10天进阶webpack---(1)为什么要有webpack
|
1月前
|
缓存 前端开发 JavaScript
webpack 原理
【10月更文挑战第23天】Webpack 原理是一个复杂但又非常重要的体系。它通过模块解析、依赖管理、加载器和插件的协作,实现了对各种模块的高效打包和处理,为现代前端项目的开发和部署提供了强大的支持。同时,通过代码分割、按需加载、热模块替换等功能,提升了应用程序的性能和用户体验。随着前端技术的不断发展,Webpack 也在不断演进和完善,以适应不断变化的需求和挑战。
|
3月前
|
JSON 前端开发 JavaScript
不会webpack的前端可能是捡来的,万字总结webpack的超入门核心知识
该文章提供了Webpack的基础入门指南,涵盖安装配置、基本使用、加载器(Loaders)、插件(Plugins)的应用,以及如何通过Webpack优化前端项目的打包构建流程。
不会webpack的前端可能是捡来的,万字总结webpack的超入门核心知识
|
7月前
|
缓存 JavaScript 前端开发
webpack超详细教程,学webpack看这一篇就够了!(下)
webpack超详细教程,学webpack看这一篇就够了!(下)
|
7月前
|
缓存 JSON 前端开发
webpack超详细教程,学webpack看这一篇就够了!(上)
webpack超详细教程,学webpack看这一篇就够了!(上)
|
7月前
|
存储 缓存 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
90 1
|
7月前
|
前端开发 JavaScript 开发者
Webpack知识点总结
Webpack知识点总结
|
7月前
|
前端开发 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack代码压缩
《Webpack5 核心原理与应用实践》学习笔记-> webpack代码压缩
173 0