前端工程化与 webpack:webpack 的基本使用

news2025/1/13 3:08:19

1. 什么是 webpack

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

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

好处:让程序员把工作的重心放到具体功能的实现上,提高了前端开发效率和项目的可维护性。

注意:目前 Vue,React 等前端项目,基本上都是基于 webpack 进行工程化开发的。

2. 创建列表隔行变色项目

① 新建项目空白目录,并运行 npm init –y 命令,初始化包管理配置文件 package.json

② 新建 src 源代码目录

③ 新建 src -> index.html 首页和 src -> index.js 脚本文件

④ 初始化首页基本的结构

⑤ 运行 npm install jquery –S 命令,安装 jQuery

⑥ 通过 ES6 模块化的方式导入 jQuery,实现列表隔行变色效果

记:程序员写的源代码放到src目录下 

 -S是将包的名字和版本记录到dependencies节点下面--save是它的完整名字

报错这行代码有兼容性问题,右侧的导入代码是es6的东西。 

3. 在项目中安装 webpack

在终端运行如下的命令,安装 webpack 相关的两个包:

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

记录到devDependencies下 -D 是  --save-dev的简写

dependencies开发上线阶段

devDependencies开发阶段 

4. 在项目中配置 webpack

① 在项目根目录中,创建名为 webpack.config.js 的 webpack 配置文件,并初始化如下的基本配置:

 ② 在 package.json 的 scripts 节点下,新增 dev 脚本如下:

在scripts节点下的脚本,可以通过npm run执行。例如npm run dev

注意后面的“webpack"是固定的写法 

③ 在终端中运行 npm run dev 命令,启动 webpack 进行项目的打包构建

node.js版本的问题,要将版本降低到16.0才行 

node版本过高,将node版本降低_小喵咪汪汪叫(*^▽^*)的博客-CSDN博客

 我们会发现安装成功之后会出现一个dist文件夹,里面有个main.js,而这个mian.js就是webpack帮我们解决好的,因此我们应该导入index.js而是main.js

mode 的可选值

这个是没有压缩的,我们可以清晰的看见,存在换行,空格等等,而我们想要修改这个为压缩就只需要将 mode: 'production‘即可

mode 节点的可选值有两个,分别是:

① development

开发环境

不会对打包生成的文件进行代码压缩性能优化

打包速度快,适合在开发阶段使用

② production

生产环境

对打包生成的文件进行代码压缩性能优化

打包速度很慢,仅适合在项目发布阶段使用

webpack.config.js 文件的作用

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

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

webpack 中的默认约定

在 webpack 4.x 和 5.x 的版本中,有如下的默认约定:

① 默认的打包入口文件为 src -> index.js

② 默认的输出文件路径为 dist -> main.js

注意:可以在 webpack.config.js 中修改打包的默认约定

这样就报错了 

自定义打包的入口与出口

在 webpack.config.js 配置文件中,通过 entry 节点指定打包的入口。通过 output 节点指定打包的出口。 示例代码如下:

const path=require('path')
// 使用node.js中的到处语法,向外到处一个webpack的配置对象
module.exports = {
    // mode代表webpack运行的模式,可选值有两个development(测试模式)和production(上线模式)
    mode: 'development',
    // entry: '指定要处理哪个文件'
    entry:path.join(__dirname, './src/index1.js'),
    // 指定生成的文件要存放到哪里
    output:{
        // 存放的目录
        path:path.join(__dirname,'dist'),
        // 生成的文件名
        filename:'bundle.js'
    }
}

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

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

相关文章

自动控制原理笔记-信号流图-Mason公式-控制系统的传递函数

目录 信号流图与结构图的比较: 掌握结构图与信号流图的转换: Mason增益公式: 式子详解: 使用Mason增益公式步骤: 使用Mason增益公式的例题: ​编辑 控制系统的传递函数 : 开环传递函数…

当红齐天再捧“绽放杯”金奖:全流程算力网络夯实元宇宙“底座”

近日,由工信部主办的第五届“绽放杯”5G应用征集大赛在深圳落幕。本届大赛以“5G赋能数字化,扬帆助力新征程 ”为主题,超7000家单位的2.8万个项目参赛,共享5G赋能实体经济的新技术、新成果。英特尔联合行业合作伙伴再获佳绩。 其…

java ssm热带水果网上商城系统--

目录 第一章 绪论 5 1.1 研究背景 5 1.2系统研究现状 5 1.3 系统实现的功能 6 1.4系统实现的特点 6 1.5 本文的组织结构 6 第二章开发技术与环境配置 7 2.1 Java语言简介 7 2.2JSP技术 8 2.3 MySQL环境配置 8 2.4 MyEclipse环境配置 9 2.5 mysql数据库介绍 9 2.6 B/S架构 9 第三…

Matter理论介绍-通用-1-06:桥接设备-其他功能

【源码、文档、软件、硬件、技术交流、技术支持,入口见文末】 【所有相关IDE、SDK和例程源码均可从群文件免费获取,免安装,解压即用】 持续更新中,欢迎关注! 一、桥接设备的功能更新 桥接设备能够独立与桥接器进行软…

一文带你快速搭建框架(最全MyBatis笔记修改篇)

前言:最近收到小伙伴们的私信说这一篇有点问题,因为我是用Typora搬运笔记没考虑到这个问题,感谢这个小伙伴反映的问题~ 目录 一.概述 1.简介 2.maven构建 二.相关概念 1.Mapper接口 2.ORM思想 三.映射配置文件 1.文件结构 2.映射配…

31. 填充和步幅的代码实现

1. 填充 我们创建一个高度和宽度为3的二维卷积层,并在所有侧边填充1个像素。给定高度和宽度为8的输入,则输出的高度和宽度也是8。 import torch from torch import nn# 为了方便起见,我们定义了一个计算卷积层的函数。 # 此函数初始化卷积层…

互异数

这道题是实验舱举办的"编程一小时"千人马拉松竞赛的第三题! 目录 #C、互异数 题目描述 输入格式 输出格式 输入样例1 输出样例1 输入样例2 输出样例2 数据规模 思路: 1.最大互质数 2.互质数的数量 3.贪心策略 总代码: 总结: 题目链接: #C、互异数 题目…

Typora使用之在腾讯云建立远程图床【多图】

1 安装PicGo PicGo是一款功能非常强大的图床的工具,支持SM.MS、腾讯COS、GitHub图床、七牛云图床、Imgur图床、阿里云OSS等多种图床平台。 下载地址:https://github.com/Molunerfinn/PicGo/releases 一般安装PicGo-Setup-2.3.0-beta.7-ia32.exe。 可以选…

C++模板特化

前言 模板特化对函数和函数都可以使用。它的作用是以某一模板函数或某个模板类为例,大部分情况下需要写的函数或内容是一致的,但是有些特别情况,所以我们需要单独拎出来。 模板参数 模板参数可分为类型形参和非类型形参。 类型形参&#x…

消息中间件(消息队列)

简介 MQ(message queue)消息队列,也叫消息中间件。消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。它是类似于数据库一样需要…

残差网络~

搬来这个 给自己学学啊,残差网络解决了什么,为什么有效 从深度神经网络的两大难题入手,说说残差网络的形式化定义与实现,并深入探讨其作用的机制,并结合文献对残差网络有效性进行了一些可能的解释。 残差网络是深度学习中的一个…

【论文阅读】(2020)Knapsack polytopes: a survey(下)

文章目录六、Valid inequalities, separation and computations 有效的不等式,分离和计算七、Complete linear descriptions of particular knapsack polytopes 特定背包多形体的完整线性描述7.1 Extended formulations7.2 Complete linear descriptions 完整的线性…

JavaFx TreeView TreeItem 设置额外属性

在使用JavaFx 编写GUI程序时,不可避免的需要创建一个树组件,下面是一个简单的树组件的代码。 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.TreeItem; import javafx.scene.control.TreeView; import javafx.s…

clickhouse笔记05--快速部署3节点集群

clickhouse笔记05--快速部署3节点集群1 介绍2 方法步骤2.1 部署 zookeeper 集群2.2 拉起 clickhouse 集群2.3 测试集群3 注意事项4 说明1 介绍 clickhouse笔记01–快速部署clickhouse 介绍了如何快速部署单节点clickhouse服务,本文基于该博文继续介绍如何快速部署3…

Java进阶—JUC编程

1、线程和进程 获取CPU核数 /*** author java小豪* version 1.0.0* date 2022/12/15* description 测试*/ public class Test {public static void main(String[] args) {// 获取CPU核数// CPU 密集型,IO密集型System.out.println(Runtime.getRuntime().available…

响应式营销策划文化传媒公司网站模板源码

模板信息: 模板编号:8071 模板编码:UTF8 模板颜色:蓝色 模板分类:设计、广告、文化、影视 适合行业:影视传媒类企业 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统&#xf…

qt5实现pdf阅读器(三)——pdfjs

目录 1、参考 2、实现 3、开发记录 1、参考 使用Qt的WebEngine和javascript的pdf.js模块构建的PDF查看器。 参考链接1:GitHub - Archie3d/qpdf: PDF viewer widget for Qt 参考链接2:GitHub - yshurik/qpdfjs: Desktop PDF Viewer based on Qt and…

讯飞听见SaaS服务迈入全新时代

配图来自Canva可画 随着数字化时代的来临,国内各企业为了提升行业竞争力,纷纷开始利用数字化技术,来实现以降本增效为核心的数字化转型,得益于此,助力企业数字化转型升级的SaaS也开始进一步升温。 众所周知&#xff…

【代码审计-2】PHP框架MVC类文件上传断点测试挖掘

1.文件上传漏洞挖掘: (1)关键字搜索(函数、键字、全局变量等):比如$_FILES,move_uploades_file等 (2)应该功能抓包:寻找任何可能存在上传的应用功能点,比如前台会员中心,后台新闻添…

电力系统两阶段随机优化(Matlab实现)

目录 目录 1 概述 2 单级随机优化算法 2.1 随机化-最小化 2.2 随机逐次凸近似 (SCA) 3 两级随机优化算法 3.1 批处理算法 3.2 在线算法 4 Matlab代码实现 1 概述 在与随机系统状态向量关联的两阶段随机优化问题中,优化变量分为两组…