Webpack 入门系列丨初识 Webpack

Webpack 实战入门系列(二):插件使用及热更新打包 本文由公众号 字节逆旅 的主笔 慢一拍 写作而成,慢一拍 已认证成为图雀社区专栏作者,后续将为大家带来一系列 Webpack 的文章,敬请期待✌️。欢迎加入图雀社区,一起创作精彩的免费技术实战教程,加速技术的传播! 如果您觉得我们写得还不错,记得 点赞 + 关注 + 评论 三连,鼓励我们写出更好的教程???? 今天带来webpack入门系列第二篇,如果对webpack还不熟悉的可以先看入门第... 阅读详情

78a24cb7516dca8a0e1ba7c6c508600a.png

Webpack 入门系列‍教程将在本号持续发布,一起查漏补缺学个痛快!若您有遇到其它相关问题,非常欢迎在评论中留言讨论,达到帮助更多人的目的。若感本文对您有所帮助请点个赞吧!


如今的前端技术层出不穷,比如 sass、less、ts、vue、react等,很大程度上提高了我们的开发效率,也使得我们的项目结构更加清晰,更好的维护。

但是浏览器并不能直接识别这些文件,我们需要使用工具将这些高级的代码转换成最基本的HTML、CSS、JavaScript,浏览器才可以正常执行,这样的工具叫做构建工具,或者称之为打包器。

webpack是基于一个入口文件,从入口进行一层一层的访问,形成了一个依赖图,图中的每一个节点都是一个模块,最终会生成一个叫做bundle的包,这个bundle的包,就是最终的构建产物,直接在浏览器中运行就可以了。

webpack 已是一名前端工程师必备的技能,现在就让我们开始学习 webpack吧!


为什么要用 Webpack

我们先来说说几个传统开发方式的弊端:

  • 当我们按传统的方式进行项目开发的时候,在我们的body标签里常常会引入一大堆的js文件,有的是外部的文件,有的是我们本地的文件。

    而且这些文件之间的顺序不同,还可能会产生不同的效果,比如 jquery在window对象上添加了一个叫做JQuery的对象,如果我们在后面的js里改变了这个JQuery对象,那么我们项目中使用的JQuery就不会按照我们的预期进行了。

<!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>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/js/bootstrap.min.js" integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="./module1.js"></script>
<script src="./module2.js"></script>
<script src="./module3.js"></script>
</body>
</html>
  • 污染全局作用域,我们引入的外部js文件,往往都是像全局对象上添加某些属性,以此实现功能的引入。但是这样,我们就不能再次定义相同的变量了。

  • 对前端高阶技术的不支持,比如Sass文件,浏览器就不支持。我们需要sass编译为css后,浏览器才可以支持。

webpack 的好处:

  • 各个模块按需引入,不存在写多个script标签的情况。

  • 支持tree shaking,用户定义了,但是没有使用的模块,不会打包到最终产物中

  • 各个模块之间相互隔离,变量不会互相冲突

  • .......


Webpack 的简单使用

  1. 创建一个新的文件夹,test-webpack

  2. 创建src文件夹,并在src下面创建index.js文件

94c937cbeda562dfe3d7354b5d8efd73.png

3. 在 index.js中编写一段简单的js代码

// index.js


console.log('hello webpack')

4.  在 test-webpack的终端下,输入npm init -y,生成项目配置文件package.json

5.  在 test-webpack的终端下,安装 webpack、webpack-cli

npm i webpack webpack-cli -D

6. 在 test-webpack 的终端下,执行命令 npx webpack

7. 我们会看到,在 test-webpack目录下,会生成一个新的文件夹 dist,并且里面有一个 main.js 文件

afd8233c37a1fd4f0bbdf1373ec54318.png

8. 然后我们在 test-webpack 的目录下,执行 node ./dist/main.js

1d2444b2d63b21e25dea0e3518f3bcd0.png

至此,我们就使用 webpack 对 src 目录下的 index.js 文件进行了打包,并输出了最终产物 dist/main.js

优化一:此时,我们想要运行打包后的内容,只能通过node来进行,那么如何使用浏览器打开呢?也就是说,我们要生成一个html文件。

  1.  安装html-webpack-plugin

npm i html-webpack-plugin -D

2. 在test-webpack 目录下,创建webpack.config.js 文件

// webpack.config.js


const HtmlWebpackPlugin = require('html-webpack-plugin');


module.exports = {
    mode: 'development', // 开发模式
    entry: './src/index.js', // 入口文件地址
    plugins:[        
        new HtmlWebpackPlugin() // 引入插件
    ]
}

3. 在test-webpack 终端下,重新执行npx webpack命令,再次进行打包。此时我们可以看到,在dist目录下,出现了一个新的文件 index.html

// index.html


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Webpack App</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script defer src="main.js"></script> // 自动帮我们引入了打包后的js文件
  </head>
  <body>
  </body>
</html>

a731bbc29116aab025471f3c65f558e0.png

我们在浏览器中打开index.html,并查看控制台的输出。

d47f8d56a3d6d5fe879ef0cc2553abf5.png

优化二: 接下来,我们每次打包之后,还要手动的去在浏览器中打开我们的index.html中,有没有方法能代替我们这个工作呢?

1. 安装 webpack-dev-server

npm i webpack-dev-server -D

2. 在test-webpack 终端中,输入npx webpack server

cfa986d01b796d7f6a88fc269ce34a3f.png

这个时候就在我们的本地起了一个服务,我们在浏览器输入 http://localhost:8080 即可访问我们的项目了

优化三: 我们能不能也像vue项目一样,直接输入npm run dev 启动我们的项目,输入npm run build 对我们的项目进行打包呢?

  1. 修改test-webpack 目录下的package.json 文件

// package.json
{
  "name": "test-webpack",
  "version": "1.0.0",
  "description": "",
  "main": "webpack.config.js",
  "scripts": {
    "dev": "npx webpack server",
    "build": "npx webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "html-webpack-plugin": "^5.5.0",
    "webpack": "^5.72.0",
    "webpack-cli": "^4.9.2",
    "webpack-dev-server": "^4.9.0"
  }
}

2. 现在我们在终端中,就可以通过输入npm run dev 启动项目,通过npm run build 打包项目了。

d71d3732b1cf267aa1f6fef46e60ebc7.png


webpack 入门教程将在本号持续发布,一起查漏补缺学个痛快!若您有遇到其它相关问题,非常欢迎在评论中留言讨论,达到帮助更多人的目的。若感本文对您有所帮助请点个赞吧!

f435bcc2c8d792135fa138dce26bc908.png

叶阳辉

HFun 前端攻城狮

HP M253-M254_Full_Webpack.打印机驱动 立即下载

相关推荐

告别Quartus II的漫长等待:用VSCode+iverilog+GTKWave搭建你的轻量级Verilog仿真环境(2024保姆级教程)

本文详细介绍了如何利用VSCode、iverilog和GTKWave构建高效的Verilog/SystemVerilog开发环境,替代传统的Quartus II和ModelSim工具。通过2024年最新的保姆级教程,帮助开发者实现秒级启动、低资源消耗的轻量级仿真环境,显著提升数字电路设计的开发效率和调试体验。

weixin_33690963的博客 561

webpack配置

webpack配置 1. 安装 安装nodejs,运行命令npm intall wepack –g 或者npm install webpack –save-dev进行全局和本地安装。 安装指定版本,运行命令npm install webpack@1.12.x --save-dev 如果需要使用webpack开发工具,请自行安装npm install webpack-dev-server

手掌日月摘星辰 1449

从零上手:基于RK3588平台的RKISP Tuner实战配置与核心功能解析

本文详细介绍了在RK3588平台上使用RKISP Tuner工具进行图像信号处理器(ISP)调试的完整实战流程。从MATLAB运行时环境搭建、服务端部署到核心连接,逐步解析如何通过图形化界面实时调节白平衡、锐化、降噪等参数以优化图像质量。文章重点阐述了实时预览、参数调试、抓图对比及参数保存等核心功能,为开发智能摄像头、机器人等AIoT设备的工程师提供了实用的配置指南与进阶技巧。

js777的博客 631

webpack自动化打包webpack-dev-server

是一个基于Node.js构建的Web服务器,它可以在本地开发环境中启动一个实时的Web服务器,并且能够自动编译并且刷新浏览器,为前端开发提供了很大的便利。支持热模块替换(HMR),即在应用程序运行中更新模块而无需刷新整个页面,它还提供了一些其它的特性包括压缩、编译、转换、代码分离等等。通常用来搭建本地开发环境,而部署时则需要使用其它的Web服务器。

jieyucx的博客 6920

ZYNQ程序固化实战:从BOOT.bin生成到QSPI/SD卡双启动模式详解

本文详细解析了ZYNQ 7000系列程序固化的完整流程,重点解决了程序断电丢失问题。通过实战演示,从生成BOOT.bin文件到配置QSPI与SD卡双启动模式,逐步指导开发者实现程序在外部存储中的永久驻留,确保产品脱离调试器独立运行。

weixin_29193259的博客 517

【UE5】VoskPlugin实战:离线语音识别与实时文本转换全流程解析

本文详细解析了如何在UE5中利用VoskPlugin实现离线实时语音转文字功能。从环境搭建、插件配置、核心代码编写到蓝图测试,提供了完整的实战教程。重点阐述了离线方案零延迟、数据私密的优势,并分享了模型选择、性能优化及常见问题的解决方案,帮助开发者快速构建稳定可靠的语音交互系统。

weixin_29001655的博客 622

高级之路篇七:webpack打包性能优化

1、只加载与首屏相关的资源文件。如在vue或react框架中采用路由懒加载、按需加载的方式,减少首页需要载入的资源。 2、延迟加载或按需加载。script标签上加上async、defer async: 1)使得script脚本异步的加载并在允许的情况下执行; 2)async的执行,并不会按着script在页面中的顺序来执行,而是谁先加载完谁执行...

HuaiCheng9067的博客 1073

通用定时器脉冲计数实验(STM32CubeMx配置)

通用定时器脉冲计数实验

a1169511636的博客 5510

【Webpack】webpack的基础使用详细总结 下(建议收藏)

通过环境命令 产品环境 压缩代码,是生产环境不压缩代码,打开devtool产品环境baseURL hhtp://dida100.com:8888生产环境baseURL http://localhost:8080cross-env:运行跨平台设置和使用环境变量的脚本浏览器对get请求有缓存,如果请求地址(文件名)没有发生变化,那么文件会在一定时间内缓存如果内容变化我们又希望文件不缓存,这个时候我们可根据内容来命名文件 实现缓存控制logo,jquery,等常见的库应该是需要缓存的hash。

798

若依(RuoYi)框架从零到部署:Spring Boot+Vue权限系统完整配置指南

在Java企业级应用开发中,Spring Boot作为构建微服务和单体应用的基石,极大地简化了项目初始化和配置流程。其核心原理在于通过自动配置和起步依赖,快速整合数据访问、安全认证、缓存等常用模块,显著提升开发效率。这一技术价值在需要快速构建后台管理系统的场景中尤为突出,例如权限管理、用户角色分配等通用需求。若依(RuoYi)框架正是基于Spring Boot和Vue.js的优秀实践,它封装了RBAC权限模型、代码生成器等高频功能,提供了开箱即用的解决方案。本文聚焦于若依框架的【环境配置】与【项目部署】,通

weixin_33984032的博客 457

智能车图像处理1-基础图像规格

从厂家摄像头的库函数中,我们可以直接得到完整图像的灰度数组,经过二值化之后(算力允许,可以考虑大津法),就是我们要处理的0-1二值图像了。本系列所有的文章中,我们的图像规格如下。

taiyuezyh的博客 4345

script标签中的async和defer

以上就是我对script标签中的async和defer的理解,如果文章由于我学识浅薄,导致您发现有严重谬误的地方,请一定在评论中指出,我会在第一时间修正我的文章,以避免误人子弟。在webpack打包中htmlwebpackplugin中打包后,index.html引入的script就是使用defer延迟加载,来优化首屏加载。问题:script标签放在Body中 如果不加额外的属性那么会对加载起到阻塞吗?

UUID、 490

【OCPP】ocpp1.6协议3.3章节:功能配置文件及接口

Smart Charging Profile中定义了4个接口请求,即GetCompositeSchedule、ClearChargingProfile、SetChargingProfile和ClearCache等。Smart Charging: 包含智能充电相关的功能,如计划充电,报告充电计划,并改变充电速度。Core: 包含电动汽车充电相关的基础功能,如启动和停止充电,更改充电配置,报告充电状态等。Reservation: 包含预约服务相关的功能,如创建,取消和更改预约。

qq_53871375的博客 2171

【webpack4系列】webpack初识与构建工具发展(一)

webpack-cli 是使用 webpack 的命令行工具,在 4.x 版本之后不再作为 webpack 的依赖了,我们使用时需要单独安装这个工具。,便可以访问到我们刚才创建的 html 文件了,打开控制台就可以看到前边的 js 代码打印出来的 hello world 了。在日常开发中,我们不可能每次修改一次代码就执行一次构建,我们需要一个方便本地开发的工具,和 webpack 配套的则是。然后我们执行npm run build,就会生成「dist/bundle.js」文件,这说明配置文件生效了。

mengran_code的博客 1074

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

初识webpack打包

初识webpack打包,小白入门 前言: webpack是一款基于node的构建工具,其中一大特色就是打包 因为现在前端已经工程化开发,写的代码已经不能直接在浏览器上运行了 这时候webpack会帮你把代码进行编译,打包成浏览器识别的js文件 而你需要做的就是配置打包参数,然后引入打包好的js文件运行即可(当然这一步webpack也帮你做好了) 开始创建demo Tips:接下来我们会创建几个js文件,用webpack打包后使用生成的js文件,使得html正常在浏览器显示 mkdir webpack-d

weixin_43193877的博客 2034

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

webpack4入门实例

毋庸置疑,webpack现在已经成为前端很多的打包器。网上关于webpack的相关文章也是很多的,关于webpack的具体配置,官网上也是讲解的很清楚,本文主要是根据自己的学习,进行简单的webpack实例的讲解,供初学者进行入门实战。文中的实例是基于webpack4的,所以请小伙伴们一定要注意自己本地的环境,不要因为环境问题而浪费不必要的时间。文章中如有错误的地方,欢迎大家指正。 关...

izwell的博客 1695

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

初识Webpack

初识Webpack1 Webpack是什么2 安装Webpack3 项目实例 1 Webpack是什么 webpack是一个前端构建工具。 前端构建工具就是把开发环境的代码转化成运行环境代码。一般来说,开发环境的代码是为了更好的阅读,而运行环境的代码则足为了能够更快地执行。因此开发环境和运行环境的代码形式也不相同。比如,开发环境的代码,要通过混淆压缩后才能放在线上运行,这样代码体积更小,而且对代码执行也不会有任何影响。一般需要构建工具处理的几种情况: 代码压缩:将JS、CSS代码混淆压缩,让代码体积更小,

橘猫吃不胖的博客 525

webpack 从入门到精通

视频链接 第 1 章:webpack 简介 1.1webpack 是什么 webpack 是一种前端资源构建工具,一个静态模块打包器(modulebundler)。 在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/…)都会作为模块处理。 它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)。 1.2webpack 五个核心概念 1.2.1Entry 入口(Entry)指示 webpack 以哪个文件为入口起点开始打包,分析构建内部依赖图。

m0_46403734的博客 1411

webpack系列教程一之初识webpack

最近在详细的学习webpack,准备进行一系列的总结。 教程一是先简单的认识一下webpack。 webpack简介 1.1 webpack 是什么 webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。 webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。 在webpack看来,前端的所有资源文件(js/json/css/img/less/…)都会作为模块处理。 它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bun

时清云的博客 285

【webpack】初识webpack

自动化处理模块,webpack把一切当成模块,当webpack处理应用程序时,它会递归地构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。

QDCXYXZ_的博客 262

webpack4系列教程(十):总结

在前端开发日益复杂的今天,我们需要一个工具来帮助我们管理项目资源,打包、编译、预处理、后处理等等。webpack的出现无疑是前端开发者的福音,我的博文只是本人的学习经验和积累,如果能对你有所帮助那是再好不过了。我的JS真的很一般,所以如果有误人子弟的地方希望你能指出来,大家一起学习,共同进步。话说互联网寒冬来了,我却在这个时候裸辞了(对公...

weixin_34074740的博客 92

webpack安装_干货丨WebPack 快速入门

随着前端工程化逐渐深入,WebPack 什么的已经成为当前前端工程师的一个必备技能了。但是,我经常能听到有小伙伴反应,“究竟什么是前端构建工具?”,“究竟什么又是 WebPack?”这里,我就来替这些有困惑的小伙伴进行一下解答。本文大致会包含以下几点内容:· 前端为什么需要构建工具· 为什么选择 WebPack· WebPack 安装· WebPack 快速入门案例前端为什么需要构建工具首先,我们...

weixin_39985472的博客 65

[webpack] webpack 从入门到 所有

官网地址 webpack中文 以server.js为接入点: 'use strict'; require('core-js/fn/object/assign'); const webpack = require('webpack'); const WebpackDevServer = require('webpack-dev-server'); const config = requir...

haliofwu的专栏 2349

初识WebPack

初识WebPack 一、什么是webpack 我所理解的webpack,主要是从两个方面出发,一是webpack是一个前端构建器,二是webpack是一个静态模块打包器。 1、前端构建工具 1-1、为什么要使用构建工具      由于目前的浏览器种类繁多,大部分对于Es6等语法还是不能够兼容的。使用构建工具可以帮助转换Es6语法、转换JSX、css前缀补全、预处理器等。    2、静态模块打包器 webpack会从入口文件开始,根据依赖关系,一层一层的递归打包成bundles输出到目标文件中。 二、为什么要

SuperGiraffe的博客 208

webpack入门(快速实例)一

前言: webpack入门系列主要参考了姜瑞涛的教程,内容深入浅出,作为入门教学,对webpack系统化学习十分有帮助,感兴趣的小伙伴可以去看一看姜瑞涛的官网。这里的文章主要是结合自己的操作,与可能面临的问题做的个人总结。 前两篇文章已经分享了如何安装node环境与配置,以及利用vue-cli3来初步构建我们的项目,但vue-cli3内部高度集成了webpack,所以没有暴露webpack的配置文件,但项目上一般我们依然需要创建vue.config.js去修改默认的webpack,因此下面我们来系统学习

qq_30764777的博客 537
上一篇: Vue 进阶系列丨Pinia 的基本使用
下一篇: Vue 进阶系列丨vue2和vue3定义插件的区别
HFun TM
博客等级 码龄5年 98粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值