前端学习----webpack入门学习

news2024/11/25 18:45:06

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

主要功能:它提供了友好的前端模块化开发支持,以及
代码压缩(将空格和注释全部消除,变成一行代码)、
处理浏览器端JavaScript的兼容性(只管写高级语法,自动向下兼容。例如ie8不支持let 语法,webpack自动转换为var)、
性能优化(c3动画在低端浏览器时,自动不展示,不会报错)
等强大功能。

当然这些功能需要进行webpack配置

1、webpack的基本使用

通过实现一个小需求的方式学习webpack初使用:
1、新建项目空白目录,运行 npm init -y 命令,初始化包管理配置文件 package.json
执行过后,json文件自动生成。
在这里插入图片描述

2、新建src源代码目录
后期不用自己手动创建,现在是为了熟悉项目结构:
在这里插入图片描述

3、新建 src -> index.html 首页和 src -> index.js 脚本文件
使用VSCode 打开项目目录:创建对应文件
在这里插入图片描述

4、初始化首页基本的结构
便捷语法:生成9个li元素
在这里插入图片描述

5、运行 npm intall jquery -S 命令,安装jQuery
-S 含义:安装完成之后,将包的名字和对应的版本号记录在 dependencies下面 【尽管-S可以省略,但是加了更加明确目的】
在这里插入图片描述
jQuery安装完成之后,对应pack.json文件。就和java的maven差不多
在这里插入图片描述

6、通过ES6模块化方式导入JQuery,实现需求
在这里插入图片描述
在这里插入图片描述

代码运行:但是并没有出现想象中的效果。
并且浏览器报错:
在这里插入图片描述

报错原因:import $ from ‘jquery’ 这行代码有兼容性问题。

1.2 在项目中安装webpack

在终端运行如下命令,安装webpack相关的两个包
npm install webpack@5.42.1 webpack-cli@4.7.2 -D
在这里插入图片描述
-D 的作用和前面 -S作用一样,记录到package.json文件中
在这里插入图片描述
dependencies 节点记录的信息是,开发和上线都需要用到的依赖包
devDependencies 节点记录的信息是,只有在开发阶段会被用到的依赖包

1.3 在项目中配置webpack

1、在项目根目录中,创建名为 webpack.config.js的webpack配置文件,并初始化如下配置
module.exports 这是node里面的导出语法。webpack.config.js配置文件中,向外导出一个配置对象。这个配置对象给webpack使用。
mode 代表webpack的运行模式
在这里插入图片描述
2、在package.json的script节点下,新增dev脚本
// script 节点下的脚本,可用通过npm run执行 例如 npm run dev
在这里插入图片描述

3、在终端运行npm run dev 命令,启动webpack进行项目打包

自己电脑 node.js 和 webpack版本不匹配
在这里插入图片描述
解决方法:要么降低你nodeJS的版本,要么升级你webpack的版本。
npm install webpack -D 安装最新版本的webpack
在这里插入图片描述
通过上方信息, webpack将 index.js和jquery.js 合并成了一个文件

运行成功之后,你会看见你的工程目录下 多了一个dist目录,里面有个main.js文件。这个文件就是webpack给你生成的。
将main.js 替换之前的index.js。那么之前的兼容性问题就解决了。
在这里插入图片描述

2、webpack代码压缩

上面学习了webpack的安装。
然后还使用了webpack解决浏览器兼容问题。

但是我们查看main.js文件,可以发现,并没有进行代码压缩,依然存在换行符和注释
在这里插入图片描述

2.1 webpack代码压缩步骤

只需要将webpack.config.js文件中的 development 换成 production就行了。然后重新运行 脚本 npm run dev
在这里插入图片描述
明显看到,体积变小,打包时间变长
在这里插入图片描述

3、webpack运行说明

webpack.config.js 是webpack的配置文件。webpack在真正开始打包构建之前,会先读取这个配置文件,从而基于给定的配置,对象项目进行打包。

注意:由于webpack是基于node.js开发出来的打包工具,因此在它的配置文件中,支持使用node.js相关的语法和模块进行webpack的个性化配置。

在webpack 4和5 的大版本中,有如下默认约定:
1、默认的打包入口路径为 src - > index.js (如果找不到这个路径文件,打包就会操作)
2、默认的输出文件路径为 dist - > main.js
注意:可以在webpack.config.js中修改打包的默认约定

在webpack.config.js配置文件中,通过entry节点指定打包的入口。通过output节点指定打包的出口。
__dianame 双下划线dianme 代表当前文件所处的目录
在这里插入图片描述

现在有一个问题,在项目开发阶段,我修改了index.js的代码,修改之后我还需要 执行 npm run dev脚本才能生效。这样非常麻烦。

4、webpack插件介绍

4.1、webpack-dev-server插件

上面的问题,修改了index.js文件之后,还要重新运行脚本,很麻烦。这个插件就会解决这个问题。
每当修改了源代码,webpack就会自动进行项目的打包和构建。

安装插件
npm install webpack-dev-server@3.11.2 -D

配置插件
1、修改package.json - > script中的dev命令:

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

2、再次运行npm run dev 命令

3、在浏览器中访问 http://localhost:8080地址,查看自动打包效果
注意:webpack-dev-server 会启动一个实时打包的http服务器
终端不会退出,一直监听代码变换。
如果 安装了 server执行npm run dev 报错,那么又是版本问题,要想webpack从命令行调用,还需要安装CLI。
安装即可 npm i --save-dev webpack-cli
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499234.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Shell】一天快速入门

1 Shell解析器 Linux提供的shell解析器有6种: /bin/sh /bin/bash /sbin/nologin /bin/csh /bin/dash /bin/tashsh是bash的软连接。 2 Shell脚本 2.1 hello.sh脚本 #!/bin/bash echo hello world!#! 告诉系统这个脚本需要什么解释器来执行; 脚本以#!…

NCNN----Monodepthv2单目深度估计 小米手机部署

题目要求:学习了解单目深度估计模型MonoDepthv2,基于NCNN推理框架部署到小米手机 MonoDepthv2 论文:Digging Into Self-Supervised Monocular Depth Estimation MonoDepthv2 源码:Monodepth2 GitHub 分析: 1&#xff0…

Illustrator如何进行任务自动化之实例演示?

文章目录 0.引言1.动作的录制2.对文件播放动作3.批处理 0.引言 因科研等多场景需要进行绘图处理,笔者对Illustrator进行了学习,本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结,本文对任务自动化进行…

Cadence技巧总结学习(DRC、Annotate)持续更新~

Cadence技巧总结学习持续更新~ 你还可以再哪里看到这篇文章:知乎 1. 画叉 对于芯片上不用的引脚信号画上号,如下: 按大写X就可以了,或是双脚引脚,在跳出的界面中,Is No Connect上✔。 2. 画线快捷键&#…

【关于C++中----智能指针】

文章目录 一、概念引入二、内存泄漏2.1 内存泄漏概念及其危害2.2 内存泄漏分类2.3 避免内存泄漏 三、智能指针的原理3.1 RAII3.2 像指针一样 四、三类智能指针4.1 auto_ptr4.2 unique_ptr4.3 shared_ptr 五、循环引用和weak_ptr 一、概念引入 在我们日常写代码过程中&#xff…

ARM学习(21)STM32 外设Can的认识与驱动编写

笔者来聊聊can的认识以及can接收数据的驱动编写 1、STM32 Can 外设的认识 Can的特性就不多说了,主要来聊聊can的一些标识符以及收发状态。can有一套收发机制,发送和接收都有硬件缓存,叫邮箱,通过下面的图可以看出,下面…

ESP32学习笔记 -- ESP32-S3 使用外部 PSRAM

ESP32-S3是乐鑫科技推出的一款专为物联网而生的SOC芯片,该芯片同时支持WIFI和BLE蓝牙功能,集成了高性能的Xtensa 32位LX7双核处理器,最高主频可达240MHz。 根据乐鑫官方资料介绍,该芯片内置512KB SRAM片上内存,并且具有45个可编程GPIO管脚和丰富的通信接口。为了更好地扩…

Flask框架之路由与蓝图的使用

路由与蓝图 路由路由概述路由的基本使用查看路由信息url_map对象命令行方式 HTTP请求方法 蓝图概述蓝图的基本使用蓝图的拆分指定蓝图的url前缀蓝图构造URL蓝图静态文件蓝图模板目录 路由 路由概述 在Flask中,路由用于将HTTP请求与特定的Python函数相匹配。通过定义…

K8s-Pod概念、创建及常用命令

文章目录 一、Pod概念1、Pod是什么?2、Pod网络共享实现方式3、Pod存储共享方式4、创建Pod整体流程 二、使用YAML文件定义Pod资源1、Pod资源清单YAML文件书写技巧1. YAML语法格式:2. 配置Linux tab缩进两个空格3. 使用kubectl explain帮助命令 2、创建Pod…

章节2:01-Java序列化和反序列化

章节2:01-Java序列化和反序列化 01-Java序列化和反序列化 基础环境 JDK解压版:包含Java运行时环境 IDEA:开发工具 Maven:jar包依赖管理 Tomcat:HTTP服务器 Burp Suite:发送HTTP请求 Kali&#xff1…

ANSYS APDL谐响应分析——悬臂梁的频响函数计算以及幅值、角度(相位)、分贝计算

问题描述 研究一根悬臂梁,材质为钢材。长度 L 2 L2 L2 米;截面为矩形,矩形的长度为 H 5 c m H 5cm H5cm,宽度为 B 2 c m B 2cm B2cm 。 建模思路: 先建立节点,然后用节点生成单元。使用n命令&…

book-riscv-rev1.pdf 翻译(自用,更新完成)第一章 操作系统接口

Job of operating system: 操作系统使得多个程序分享一台计算机,提供一系列仅靠硬件无法支持的服务。 管理与抽象低级别硬件(如:文件处理程序不需要关注使用哪种硬盘)使得多个程序分享硬件(programs that can run at…

797. 差分(C++和Python3)——2023.5.7打卡

文章目录 QuestionIdeasCode Question 输入一个长度为 n 的整数序列。 接下来输入 m 个操作,每个操作包含三个整数 l,r,c ,表示将序列中 [l,r] 之间的每个数加上 c 。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数 n 和 m 。 第二…

高性能流媒体硬解码

目录 高性能流媒体硬解码前言1. What、Why and How1.1 What1.2 Why?1.3 How? 2. 离散傅里叶变换(DFT)2.1 JPEG编码2.2 哈夫曼编码(Huffman Coding) 3. 视频流媒体前置知识3.1 视频文件的构成3.2 视频的编码与封装3.3 H264编码的分层3.4 RTSP之RTP(Real-t…

【clang】安装clang编译器并将linux默认编译器改为clang

目录 省心操作法手动安装 本文是他人智慧的总结个人实践。 省心操作法 缺点: clang版本不能自己选择;我的系统是ubuntu 20,安装后是clang10.0版本 优点:省心,基本不会踩坑 手动安装 参考这篇文章ubuntu20.04 安装cl…

RabbitMQ --- 死信交换机

一、简介 1.1、什么是死信交换机 什么是死信? 当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter): 消费者使用basic.reject或 basic.nack声明消费失败,并且消息的requeue参数设置为false…

超详细-自动化测试从选型到落地,2023年我从10k涨到了18k*14薪...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

系统集成项目管理工程师 下午 真题 及考点(2021年上下半年)

文章目录 2021年下半年试题一:第18章 项目风险管理,风险应对策略,风险的性质(客观、偶然、相对、社会、不确定)试题二:第9章 项目成本管理,执行绩效(即CV和SV)&#xff0…

HAL库版FreeRTOS(中)

目录 FreeRTOS 任务切换PendSV 异常PendSV 中断服务函数FreeRTOS 确定下一个要运行的任务函数vTaskSwitchContext()函数taskSELECT_HIGHEST_PRIORITY_TASK() PendSV 异常何时触发FreeRTOS 时间片调度实验功能设计软件设计下载验证 FreeRTOS 内核控制函数FreeRTOS 内核控制函数预…

蓝牙设备的名称与MAC地址及UUID

每个蓝牙设备都具有各自的地址和名称,他们之间通过唯一通过地址和名称进行数据交互。本文详细讲述了蓝牙设备的名称和地址的格式及作用。 名称 蓝牙设备具有各自的名称,通常为字母与数字的组合. MAC地址 与Ethernet相同,MAC地址为48bit的…