webpack-前置知识

news2024/11/18 1:17:18

前置知识-node的内置模块path

path模块用于对路径和文件进行处理,
从路径中获取信息
dirname: 获取文件的父文件夹。
basename:获取文件名。
extname: 获取文件拓展名。

 const path = require("path")
 const fileName = "C://test/a/b/c.txt"
 //.txt
 console.log(path.extname(fileName))
 //c.txt
 console.log(path.basename(fileName))
 //C://test/a/b
 console.log(path.dirname(fileName))

路径的拼接path.join()

如果希望将多个路径进行拼接时,由于不同的操作系统(Mac OS 和Linux的Unix操作系统上使用/来作为文件路径的分割符,window上使用\或 \作为文件的分割符,目前也支持/ )可能使用不同的分隔符,拼接时需要区分,但是使用path.join()就不用考虑操作系统的问题。
与path.resolve()相比path.join()用的比较少

//path.join()方法会将path2路径相对于path1路径进行拼接,得到最终的路径。由于path2是一个相对路径
const path = require("path")
const path1  = "/test/t"
const path2  = "../a/b/c.js"

console.log(path.join(path1,path2))
//结果: C://test/a/b\test\a\b\c.js
//path1是一个绝对路径(以/开头),而path2是一个相对路径(以..开头),在拼接时会根据相对路径的规则进行处理。在这种情况下,path2的..表示返回上一级目录,所以最终结果会是"/a/b/c.js"。
//结果中的斜杠符号可能会因为操作系统的不同而有所差异。在Windows系统中,路径分隔符通常是反斜杠\

拼接绝对路径:path.resolve()

  1. 会把一个路径或路径片段的序列解析为一个绝对路径,
console.log(path.resolve("/test/a.js"))
//结果: C:\test\a.js
  1. 给定的路径序列使用右往左被处理的,后面的path会依次被解析,直到构造完成一个绝对路径。
console.log(path.resolve("./a.js","./b.js","/c.js"))
console.log(path.resolve("./a.js","/b.js","./c.js"))
console.log(path.resolve("/a.js","./b.js","./c.js"))
// C:\c.js
// C:\b.js\c.js
// C:\a.js\b.js\c.js
  1. 如果在处理完所有给定的path片段后,还没有生成绝对路径,则使用当前工作目录。
console.log(path.resolve("./a.js","./b.js","./c.js"))
//  C:\Users\28376\Desktop\新建文件夹\a.js\b.js\c.js
  1. 生成的路径被规范化并删除尾部斜杠,零长度的path片段会被忽略。
console.log(path.resolve("/test/a.js/"))
//  C:\test\a.js
console.log(path.resolve("./a.js","","./c.js"))
//C:\Users\28376\Desktop\新建文件夹\a.js\c.js
console.log(path.resolve("./a.js"," ","./c.js"))
// C:\Users\28376\Desktop\新建文件夹\a.js\ \c.js
  1. 如果没有path片段,path.resolve() 将会返回当前工作目录的绝对路径。
    console.log(path.resolve())
    //  C:\Users\28376\Desktop\新建文件夹
    

webpack

webpack的概念

webpack是一个静态的模块化打包工具:
1.最终会把代码打包成静态资源,部署到静态服务器。
2. webpack默认支持各种模块化开发,如ES Module, CommonJS等
3. 可以解决现代前端开发中的各种问题,比如代码的压缩和并,实时监听文件的变化,并映射到浏览器上,提高开发效率,使用一些高级的语法。

需要打包的文件:
1.js将es6转换为es5,将ts转换为js.
2.css模块的加载,less,sass等预处理器的处理。
3.图片img和文字font文件的加载
4.打包html资源文件
5. 处理vue项目的sfc文件(Single File Component,的缩写,)

webpack的安装和使用

webpack的安装分为两个webpack,webpack-cli
webpack:

//通过代码运行,用的很少
const webpack =require(" webpack")
webpack.compile()

webpack-cli:

//命令行的形式,使用较多
webpack --entry

webpack,webpack-cli的关系:
执行webpack命令,会执行node_modules下的.bin目录下的webpack
webpack在执行时是依赖webpack-cli的,如果没有安装会报错
webpack-cli执行时,才是webpack进行编译和打包的过程。
安装webpack的同时还需要安装webpack-cli

npm install webpack webpack-cli -Dnpm install webpack webpack-cli -g
安装后直接运行npx webpack可以看到打包后生成了一个文件,

在这里插入图片描述
入口文件默认就是这里的Index.js文件名是固定的,改成其他的会报错:
在这里插入图片描述
这时候就需要指定打包的文件,即入口entry npx webpack --entry ./src/main.js

在这里插入图片描述
同理文件的出口也是默认的默认是dist/main.js ,如果要修改的话要通过--output-filename指定 npx webpack --entry ./src/main.js --output-filename bundle.js
在这里插入图片描述
如果还要修改打包的文件名output 要通过 --output-path
npx webpack --entry ./src/main.js --output-filename bundle.js --output-path ./build:
在这里插入图片描述
这样敲命令很麻烦,尤其是命令很长时,可以建立一个 webpack.config.js,然后在通过npx webpack运行

module.exports={
    "entry":"./src/main.js",
     "output":{
        "filename":"bundle.js",
        "path":"./build"
     }
}

在这里插入图片描述
可以通过path.resolve('path):
在这里插入图片描述
也可以进一步优化,在不同的操作系统中都没问题,需要使用__dirname获取当前文件所在的路径:

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

这里的webpack.config.js和入口和出口设置是一样的,文件名固定,如果要修改还要进行额外配置:
在这里插入图片描述
要修改webpack.config.js文件名要通过 --config 指定修改的文件名:
npx webpack --config wk.config.js
在这里插入图片描述

每次运行时都需要敲明了很麻烦,可以在package.json中编写脚本:
在这里插入图片描述

最终版本

使用webpack.config.js编写一些配置:
在这里插入图片描述

使用package.json的脚本执行命令:
在这里插入图片描述

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

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

相关文章

租用阿里云的服务器多少钱?30元、61元、99元、165元、199元

租个阿里云的服务器多少钱?很便宜,云服务器2核2G3M固定带宽99元一年、2核4G服务器30元3个月、199元一年,轻量应用服务器2核2G3M配置61元一年、2核4G4M带宽165元一年,可以在阿里云CLUB中心查看 aliyun.club 当前最新的优惠券和活动…

专注项目管理的Mac工具 - Project Office Pro 最新版

Project Office Pro for Mac是一款功能强大的项目管理软件,旨在帮助用户更好地管理和跟踪项目进展,提高工作效率和质量。以下是该软件的主要功能介绍: 项目创建与编辑:用户可以根据自己的需求自定义项目计划,包括设置…

使用 Cloudflare 和全栈框架实现快速开发

去年 Cloudflare 发布了一系列新功能,使在 Cloudflare 上部署 Web 应用程序变得更加容易,我们看到 Astro、Next.js、Nuxt、Qwik、Remix、SolidStart、SvelteKit 和其他托管 Web 应用程序的大幅增长。 近日 Cloudflare 对这些 Web 框架的集成模块进行了重…

【Java网络编程】IP网络协议与TCP、UDP网络传输层协议

1.1、IP协议 当应用层的数据被封装后,想要将数据在网络上传输,数据究竟要被发往何处,又该如何精准的在网络上定位目标机器,此时起到关键作用的就是“IP协议”。IP协议的作用在于把各种数据包准确无误的传递给目标方,其…

LeetCode 378 有序矩阵中第K小的元素

题目信息 LeetoCode地址: . - 力扣(LeetCode) 题解内容大量转载于:. - 力扣(LeetCode) 题目理解 题意很直观,就是求二维矩阵中所有元素排序后第k小的数。 最小堆写法 该写法不再赘述,维护…

好看流光风格个人主页HTML源码

这是一款好看流光风格个人主页HTML源码,感觉挺喜欢的,需要的自行下载! 源码下载 好看流光风格个人主页源码

“进击的巨人”:服务器硬件基础知识解析

引言: 服务器是网络环境中负责处理数据、运行应用程序和服务多用户的高性能计算机系统。了解服务器的硬件构成有助于更好地管理和优化IT资源。 服务器和普通PC的差异: 服务器具有比个人电脑更高的处理能力、稳定性和可靠性,它们通常运行在没…

【JavaEE】浅谈线程(一)

线程 前言线程的由来线程是什么线程的属性线程更高效的原因举个例子(线程便利性的体现) 多线程代码线程并发执行的代码jconsole(观测多线程) 线程的调度问题创建线程的几种方法1)通过继承Thread 重写run2)使用Runnable接口 重写ru…

.NET8 和 Vue.js 的前后端分离

在.NET 8中实现前后端分离主要涉及到两个部分:后端API的开发和前端应用的开发。后端API通常使用ASP.NET Core来构建,而前端应用则可以使用任何前端框架或技术栈,比如Vue.js、React或Angular等。下面是一个简化的步骤指南,帮助你在…

指针 基础知识

本笔记为观看56 指针-指针的定义和使用_哔哩哔哩_bilibili后的学习笔记 指针的定义和使用 1、定义指针 int main () {//1、定义指针int a 10;//指针定义的语法: 数据类型 * 指针变量名;int * p;//让指针记录变量a的地址p &a; //& 为取址符cou…

Mac资源库的东西可以删除吗?mac资源库在哪里打开 cleanmymacx是什么 cleanmymac免费下载

在使用Mac电脑的过程中,用户可能会遇到存储空间不足的问题。一种解决方法是清理不必要的文件,其中资源库(Library)文件夹是一个常被提及但又让人迷惑的目标。Mac资源库的东西可以删除吗?本文旨在解释Mac资源库的作用、…

Java常用函数接口

Java常用函数接口 Java 8 中引入的常用函数式接口,也就是 java.util.function 包中的接口。这些接口提供了一种简洁的方式来定义函数,常用于 Lambda 表达式和方法引用。下面是一些常用的接口: 一、Predicate(断言) …

应用性能分析工具CPU Profiler

简介 本文档介绍应用性能分析工具CPU Profiler的使用方法,该工具为开发者提供性能采样分析手段,可在不插桩情况下获取调用栈上各层函数的执行时间,并展示在时间轴上。 开发者可通过该工具查看TS/JS代码及NAPI代码执行过程中的时序及耗时情况…

c语言之动态内存管理及常见错误分析,柔性数组,内存划分

目录 前言 一:malloc,calloc,realloc,free四大函数 1.malloc 2.free 3.calloc 4.realloc 二:常见错误分析 1.malloc返回值不检查直接使用 2.对动态开辟空间的越界访问 3.对非动态开辟空间free 4.使用free释放动态开辟内存的一部分 5.对…

QAuth 2.0

OAuth 2.0授权框架支持第三方支持访问有限的HTTP服务,通过在资源所有者和HTTP服务之间进行一个批准交互来代表资源者去访问这些资源,或者通过允许第三方应用程序以自己的名义获取访问权限。 为了方便理解,可以想象OAuth2.0就是在用户资源和第…

多路转接-epoll/Reactor(2)

epoll 上次说到了poll,它存在效率问题,因此出现了改进的poll----epoll。 目前epoll是公认的效率最高的多路转接的方案。 快速了解epoll接口 epoll_create: 这个参数其实已经被废弃了。 这个值只要大于0就可以了。 这是用来创建一个epoll模…

用友U9 存在PatchFile.asmx接口任意文件上传漏洞

声明: 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 简介 用友U9是由中国用友软件股份有限公司开发的一款企业…

FJSP:狐猴优化算法(Lemurs Optimizer,LO)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP),是一种经典的组合优化问题。在FJSP问题中,有多个作业需要在多个机器上进行加工,每个作业由一系列工序组成&a…

Linux(Ubuntu)中创建【samba】服务,用于和Windows系统之间共享文件

目录 1.先介绍一下什么是Samba 2.安装,配置服务 安装 配置(smb.conf) 配置用户 3.出现的问题(Failed to add entry for user XXXX) 4.创建文件夹 5.windows访问 1.先介绍一下什么是Samba Samba是一个开源的软…

HTML5.Canvas简介

1. Canvas.getContext getContext(“2d”)是Canvas元素的方法,用于获取一个用于绘制2D图形的绘图上下文对象。在给定的代码中,首先通过getElementById方法获取id为"myCanvas"的Canvas元素,然后使用getContext(“2d”)方法获取该Ca…