邂逅Webpack和打包过程

article/2025/8/3 23:23:30

前端开发方向

目前国内的前端开发 主要使用Vue和React

一般你写个项目,过程就是:npm/yarn --> webpack架构 --> Vue/React框架

而针对Vue和React都有脚手架的,脚手架是基于webpack搭建的

你写.jsx或者ts之类的浏览器是不认识的,所以要对已经写好的代码进行打包以生成html、css和js

常见的打包工具有gulp、rollup、webpack(架构和生态都很好)、vite

打包工具里面也都是js代码,是执行一些文件操作的,而这个操作又依赖于node

内置模块path

这个模块对path十分重要

path模块对于路径和文件进行了处理,提供了很多好用的方法

在不同操作系统的路径分隔符不一样,windows上是\或者\\

mac和Linux则是/

所以路径不是写死的,而是由path模块根据对应的os生成的

POSIX(可移植操作系统接口):Linux和Mac都实现了POSIX接口

Windows部分电脑实现了POSIX接口

path常见的API

从路径中获取信息:

dirname:获取文件的父文件夹

basename:获取文件名

extname:获取文件拓展名

如果对多个路径进行拼接的话,就可以用path.join,不同的操作系统可能使用的是不同的分隔符

如果是绝对路径拼接的话,那就是path.resolve

这个方法会把一个路径或者路径片段的序列解析成一个绝对路径

给定的路径序列是从右往左被处理的,后面的每一个path依次被解析,直到构造完成一个绝对路径

在处理完所有给定的path段之后,还没有生成绝对路径,则使用当前的工作目录

生成的路径被规范化并删除尾部斜杠,零长度path段被忽略

如果没有path传递段,path.resolve将返回当前工作目录的绝对路径

const path = require('path');const filePath = "C://abc/cba/nba.txt"//可以从一个路径中获取一些信息
console.log(path.dirname(filePath));
console.log(path.extname(filePath));
console.log(path.basename(filePath));// 将多个路径拼接在一起
const path1 = "/abc/cba"
const path2 = "../why/kobe/james.txt"
console.log(path.join(path1, path2));// 将多个路径拼接在一起,最后返回一个绝对路径
console.log("----------resolve---------")
console.log(path.resolve('./abc/cba', './why/kobe','./abc.txt'));

生成绝对路径是需要的,因为有的地方只能传绝对路径

认识webpack

随着前端的快速发展,前端的开发已经变的越来越复杂了

比如使用模块化的方式进行开发

也会使用一些高级的特性来加快我们开发的效率或者安全性(ES6+、TS、sass、less)

还会希望实时的监听文件的变化并且反映到浏览器上,提高开发效率,还有对代码进行压缩,合并以及其他相关的优化

但是很多前端开发者都不用在乎这些,因为有Vue、React和脚手架的存在

脚手架依赖webpack

webpack是一个静态(最终可以将代码打包成静态资源,部署到静态服务器)的模块化(支持各种模块化开发,ES_Module、CommonJS、AMD)打包(帮助我们进行打包)工具,为现代(因为现代前端发展面临各种各样的问题,所以webpack出现发展了)的JS应用程序

Vue项目加载的文件有哪些呢?

有JS的打包:

将ES6转换成ES5的语法

TS的处理将其转换成JS

有CSS的处理:

CSS文件模块的加载、提取

Less、Sass等预处理器的处理

资源文件img、font:

图片文件img的加载

字体font文件的加载

还打包了HTML资源文件和处理vue项目的SFC文件.vue文件

Webpack的使用前提

webpack的官方文档是

webpackhttps://webpack.js.org/DOCUMENTION是文档详情,也是我们最关注的

Webpack的运行是依赖Node环境的,所以我们的电脑上必须要有Node环境

先安装Node.js同时会安装npm

webpack的安装分为webpack和webpack-cli,cli是在命令行里使用webpack必备的一个东西

 首先创建个文件index.js:

import {sum} from './utils/math'const message = 'Hello World!'sum(20,30)
sum(10,30)console.log(message.length)const bar= ()=>{console.log('bar function execution')
}bar()   

有的浏览器不支持箭头函数,不打包难以运行这个,所以先

npm init -y

创建一个配置文件,再进行一个webpack的安装:

npm install webpack webpack-cli

加个-D是开发时依赖(用户界面不需要有webpack)

打包的命令:

npx webpack

打包后可以生成一个main.js:

(()=>{"use strict";function o(o,n){return o+n}console.log(o(20,30)),console.log(o(10,30)),console.log(12),console.log("bar function execution")})();

打包后可以正确运行代码:

打包的时候也可以进行重命名:

webpack --entry ./src/main.js --output-filename bundle.js

这就是把文件成功的重命名,但是这个每一次运行都这样很麻烦,我们可以通过写webpack的配置文件(webpack.config.js)来简化操作

module.exports = {entry: "./src/index.js",output:{filename:"bundle.js",path: path.resolve(__dirname,"./build")}
}

写完配置文件后就可以npx webpack来打包了,如果文件名不是默认的那个的话,就可以加个--config 文件名   的选项,帮助webpack找到我们写的配置文件 

如果还是觉得麻烦,可以直接在package.json里面加一个scripts,把命令命名一下,就像这样:

{"name": "webpackbasic","version": "1.0.0","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","build":"webpack --config wk.config.js"},"keywords": [],"author": "","license": "ISC","description": "","dependencies": {"webpack": "^5.99.9","webpack-cli": "^6.0.1"}
}

http://www.hkcw.cn/article/cbLGEBMOnQ.shtml

相关文章

计算机网络第1章(下):网络性能指标与分层模型全面解析

目录 一、计算机网络的性能指标1.1 性能指标1:速率1.2 性能指标2:带宽1.3 性能指标3:吞吐量1.4 性能指标4:时延1.5 性能指标5:时延带宽积1.6 性能指标6:往返时延1.7 性能指标7:信道利用率 二、计…

多模态大语言模型arxiv论文略读(102)

Chat2Layout: Interactive 3D Furniture Layout with a Multimodal LLM ➡️ 论文标题:Chat2Layout: Interactive 3D Furniture Layout with a Multimodal LLM ➡️ 论文作者:Can Wang, Hongliang Zhong, Menglei Chai, Mingming He, Dongdong Chen, Ji…

python学习打卡day42

DAY 42 Grad-CAM与Hook函数 知识点回顾 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 作业:理解下今天的代码即可 1.回调函数 Hook本质是回调函数,所以我们先介绍一下回调函数 回调函数是作为参数传递给其他函数的函数&#xff0…

VeriFree:无需Verifier的通用RL框架

文章目录 前言1. 研究背景与挑战1.1 传统强化学习框架(RLVR)的领域局限性1.2 引入LLM作为验证器的新挑战1.3 研究目标的提出 2. VeriFree方法核心原理2.1 问题定义与形式化建模2.2 核心思想:隐式验证与概率最大化2.3 训练技术细节 3. 实验4. …

uniapp uni-id 如果是正式项目,需自行实现发送邮件的相关功能

(3) 使用云对象sendEmailCode 发送邮箱验证码,报错送邮箱验证码失败 Error: 已启动测试模式,直接使用:123456作为邮箱验证码即可。 如果是正式项目,需自行实现发送邮件的相关功能 - DCloud问答 uni-id 没有实现邮箱验证码逻辑&am…

HiEV独家 | 整合智能化战线,奇瑞辅助驾驶驶向何方?

作者 |德新 编辑 |王博 组织调整是战略变革的映射,而战略变革最终要在产品上体现。 5月30日,奇瑞汽车官宣整合旗下雄狮科技、大卓智能与研发总院相关业务,成立「智能化中心」。智能化中心下设有智能座舱、智能辅助驾驶、电子电气架构等子中…

什么是软件需求可视化?如何实际运用?

一、什么是软件需求可视化? 将软件需求可视化是一个有助于团队成员更好地理解项目需求、促进沟通和协作的重要过程。以下是几种常见的方法和技术,可以帮助你有效地实现这一目标: 用户故事地图:这是一种通过创建一个从用户角度出发…

腾讯:强化学习提高LLM机器翻译

📖标题:TAT-R1: Terminology-Aware Translation with Reinforcement Learning and Word Alignment 🌐来源:arXiv, 2505.21172 🌟摘要 最近,像DeepSeek-R1这样的深度推理大型语言模型(LLM&…

C++ IO流

目录 一、C语言的输入与输出 二、流 三、CIO流 3.1 C标准IO流 3.2 C文件IO流 3.3 stringstream字符串流 一、C语言的输入与输出 在 C 语言中,最常用的输入输出函数是 scanf() 和 printf()。它们分别用于从标准输入读取数据,以及将数据输出到标准输出…

linux文件管理(补充)

1、查看文件命令 1.1 cat 用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。 用法: cat 参数 文件名 参数: -n:显示行号,会在输出的每一行前加上行号。 -b:显示行号,…

Relational Algebra(数据库关系代数)

目录 What is an “Algebra” What is Relational Algebra? Core Relational Algebra Selection Projection Extended Projection Product(笛卡尔积) Theta-Join Natural Join Renaming Building Complex Expressions Sequences of Assignm…

操作系统:进程管理(王道+计算机操作系统)

第二章 进程与线程 2.1进程的概念、组成与特征 2.1.1 进程与程序的区别 ​ 1.程序:静态的,就是放在磁盘里的可执行文件,如:QQ.exe。 ​ 2.进程:动态的,是程序的一次执行过程,如:…

浅谈简历制作的四点注意事项

如大家所了解的,一份工作,往往是从制作一份简历开始。 对于新人来说,简历制作的注意事项,你又了解多少呢?下面一起来看看吧! 简历字数:一封合格的简历字数大概在 350 词 – 650 词之间&#xf…

软考-数据库系统工程师-程序设计语言知识要点

小房学堂,程序设计语言知识要点 汇编、编译、解释系统的基础知识 计算机只能理解由0-1组成的指令,就像一个只会本国语言的人,他听不懂其他国家的语言 而程序员编程使用的是低级语言(汇编语言)或者高级语言如C、C、Jav…

6级翻译学习

找到一个中文句子先看中文句子的主谓宾,主系表 不会写的词不要写,不会影响得分,只要其他地方写对

【Rhino】【Python】adjust repeated column marks

#codingutf-8 import rhinoscriptsyntax as rs import re import System.Guiddef process_column_marks():# 获取目标图层中的所有文本对象layer_name "03 STR. DRAFT MEMBER::COLUMN MARK"text_objects rs.ObjectsByLayer(layer_name, True)if not text_objects o…

Goreplay最新版本的安装和简单使用

一:概述 Gor 是一个开源工具,用于捕获实时 HTTP 流量并将其重放到测试环境中,以便使用真实数据持续测试您的系统。它可用于提高对代码部署、配置更改和基础设施更改的信心。简单易用。 项目地址:buger/goreplay: GoReplay is an …

YOLOv5 环境配置指南

系统要求 Windows/Linux/MacOSNVIDIA GPU (推荐) 或 CPUPython 3.8CUDA 11.8 (如果使用 GPU) 安装步骤 1. 安装 Conda 如果还没有安装 Conda,请先从官网下载并安装 Miniconda。 2. 创建虚拟环境 # 创建名为 yolov5 的新环境,使用 Python 3.8 conda…

【算法应用】虚拟力算法VFA用于WSN覆盖,无人机网络覆盖问题

目录 1.虚拟力算法VFA2.WSN覆盖&无人机覆盖应用3.参考文献4.代码获取5.读者交流 1.虚拟力算法VFA 虚拟势场(Virtual Potential Field)最早因解决机器人路径规划及避障问题而被提出。它假设待优化个体会根据某种关系与周围的环境或其他个体产生力的作…

简历制作要精而不简

不得不说,不管是春招,还是秋招,我们在求职时,第一步便是制作一份简历。不得不承认,好的简历,就像一块敲门砖,能让面试官眼前一亮,让应聘成功的概率增添一分。 对于一个初次求职者来…