当前位置: 首页 > news >正文

(二)Node.js 基础模块

(二)Node.js 基础模块

  • 1. fs文件系统模块
      • 1.1 什么是fs文件系统模块
      • 1.2 读取指定文件中的内容
          • 1. fs.readFile()的语法格式
          • 2. fs.readFile()的示例代码
      • 1.3 向指定的文件中写入内容
          • 1. fs.writeFile()的语法格式
          • 2. fs.writeFile()的实例代码
      • 1.4 __dirname 表示当前文件所处的目录
  • 2. path路径模块
      • 2.1 路径拼接
          • 1. path.join()的语法格式
          • 2. path.join()的代码示例
      • 2.2 获取路径中的文件名
          • 1. path.basename()的语法格式
          • 2. path.basename()的代码示例
      • 2.3 获取路径中的文件扩展名
          • 1. path.extname()的语法格式
          • 2. path.extname()的代码示例
  • 3. http模块
      • 3.1 创建最基本的web服务器
      • 3.2 根据不同url响应不同的html内容
          • 动态响应内容

1. fs文件系统模块

1.1 什么是fs文件系统模块

fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作要求。

例如:

  • fs.readFile()方法,用于读取指定文件中的内容
  • fs.writeFile()方法,用于向指定的文件中写入内容

如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用如下的方式先导入它:

const fs = require('fs')

1.2 读取指定文件中的内容

1. fs.readFile()的语法格式

使用fs.readFile()方法,可以读取指定文件中的内容,语法格式如下:

fs.readFile(path[, options], callback)

参数解读:

  1. 参数1:必选参数,字符串,表示文件路径
  2. 参数2:可选参数,表示以什么编码格式读取文件
  3. 参数3:必选参数,文件读取完成后,通过回调函数拿到读取结果
2. fs.readFile()的示例代码

以utf8的编码格式,读取指定文件的内容,并打印err和dataStr的值:

 const fs = require('fs')fs.readFile('./11.txt', 'utf8', function(err, dataStr){console.log(err)console.log('-----')console.log(dataStr)
})

1.3 向指定的文件中写入内容

1. fs.writeFile()的语法格式
fs.writeFile(file, data[, options], callback)
2. fs.writeFile()的实例代码
const fs = require('fs')
fs.writeFIle('./files/2.txt', 'Hello Node.js!', function(err){if(err){return console.log('文件写入失败!' + err.message)}console.log('文件写入成功!')
})

1.4 __dirname 表示当前文件所处的目录

可用于解决拼接文件绝对路径问题

// test.js
console.log(__dirname)

2. path路径模块

path模块是Node.js官方提供的、用于处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

例如:

  • path.join()方法,用来将多个路径片段拼接成一个完整的路径字符串
  • path.basename()方法,用来从路径字符串中,将文件名解析出来

如果要在JavaScript代码中,使用path模块来处理路径,则需要使用如下的方式先导入它:

const path = require('path')

2.1 路径拼接

1. path.join()的语法格式

使用path.join()方法,可以把多个路径片段拼接位完整的路径字符串,语法格式如下:

path.join([...paths])

参数解读:

  • …paths <string> 路径片段的序列
  • 返回值:<string>
2. path.join()的代码示例

使用path.join()方法,可以吧多个路径片段拼接位完整的路径字符串:

const path = require('path')
const pathStr = path.join('/a', '/b/b', '../', '/d', 'e')
console.log(pathStr) //输出 /a/b/d/econst pathStr2 = path.join(__dirname, './files/demo.txt')
console.log(pathStr2) //输出 当前文件所处目录/files/1.txt

2.2 获取路径中的文件名

1. path.basename()的语法格式

使用path.basename()方法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名,语法格式如下:

path.basename(path[, ext])

参数解读:

  • path <string> 必选参数,表示一个路径的字符串
  • ext <string> 可选参数,表示文件扩展名
  • 返回:<string> 表示路径中的最后一部分
2. path.basename()的代码示例

使用path.basename()方法,可以从一个文件路径中,获取到文件的名称部分:

const fpath = '/a/b/c/index.html'var fullName = path.basename(fpath) //输出 index.html
console.log(fullName)var nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt)  //输出 index

2.3 获取路径中的文件扩展名

1. path.extname()的语法格式

使用path.extname()方法,可以获取路径中的扩展名部分,语法格式如下:

path.extname(path)
2. path.extname()的代码示例
const path = require('path')
const fpath = '/a/b/c/index.html'
const fext = path.extname(fpath)
console.log(fext)  //输出 .html

3. http模块

http模块是Node.js官方提供的、用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑,编程一台web服务器,从而对外提供Web资源服务。

3.1 创建最基本的web服务器

步骤:

  1. 导入http模块
  2. 创建web服务器实例
  3. 为服务器实例绑定request时间,监听客户端的请求
  4. 启动服务器

导入模块:

//1. 导入模块
const http = require('http')
//2. 调用http.createServer()方法,即可快速创建一个web服务器实例
const server = http.createServer()
//3. 绑定request事件,监听网络请求
server.on('request', (req, res) => {//只要有客户端请求我们自己的服务器,就会触发request事件console.log('Someone visit our web server.')
})
//4.调用服务器实例的.listen()方法,启动80端口
server.listen(80, () => {console.log('http server running at http://127.0.0.1')
})

3.2 根据不同url响应不同的html内容

动态响应内容
server.on('request', (req, res) => {const url = req.urllet content = '<h1>404 Not found!</h1>'if (url === '/' || url === '/index.html'){content = '<h1>首页</h1>'}else if (url === '/about.html') {content = '<h1>关于页面</h1>'}res.setHeader('Content-Type', 'text/html; charset=utf-8')res.end(content)
})

相关文章:

(二)Node.js 基础模块

&#xff08;二&#xff09;Node.js 基础模块 1. fs文件系统模块1.1 什么是fs文件系统模块1.2 读取指定文件中的内容1. fs.readFile()的语法格式2. fs.readFile()的示例代码 1.3 向指定的文件中写入内容1. fs.writeFile()的语法格式2. fs.writeFile()的实例代码 1.4 __dirname …...

AUC及其拓展GAUC

AUC及其拓展GAUC auc的定义 auc用来评估一个分类器的排序质量&#xff0c;它的物理含义&#xff1a;给定一堆正负样本&#xff0c;随机取一个正样本&#xff0c;一个负样本&#xff0c;学习器将正样本排在负样本前面的概率 auc的计算 具体计算方法&#xff1a;给定m个正样本…...

【CSS】CSS 选择器

CSS 选择器 1.基础选择器 1.1 元素选择器 语法&#xff1a;标签名{...} 元素选择器会选中对应标签名的HTML元素&#xff0c;例如&#xff1a;p{...}&#xff0c;div{...}&#xff0c;span{...}等 1.2 类选择器 语法&#xff1a;.类名{...} 类选择器会选中class属性为指定…...

2023-08-07力扣今日四题-好题

链接&#xff1a; 剑指 Offer 03. 数组中重复的数字 题意&#xff1a; 如题 解&#xff1a; 看到一个很牛的时间复杂度O(n)的原地算法&#xff1a;由于数组长度n&#xff0c;数组内只有0到n-1&#xff0c;那么&#xff0c;我们用对应-n到-1表示nums[index]出现过一次&…...

Packet Tracer - IPv4 和 IPv6 编址故障排除

Packet Tracer - IPv4 和 IPv6 编址故障排除 地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 IPv6 地址/前缀 R1 G0/0 10.10.1.1 255.255.255.0 N/A G0/1 192.168.0.1 255.255.255.0 N/A 2001:DB8:1:1::1/64 N/A G0/2 2001:DB8:1:2::1/64 N/A S0/0/0 …...

PHP国外在线教育系统源码 在线课程系统源码 直播课程系统源码提供在线课程,现场课程,测验

Proacademy是在线教育一体化的解决方案&#xff0c;用于创建类似于Udemy、Skillshare、Coursera这种在线教育市场。 这个平台提供在线课程&#xff0c;现场课程&#xff0c;测验等等&#xff0c;并有一个基于实际业务需要的高级认证插件&#xff0c;程序基于Laravel强大的安全框…...

Abaqus 中最常用的子程序有哪些 硕迪科技

在ABAQUS中&#xff0c;用户定义的子程序是一种重要的构件&#xff0c;可以将其插入到Abaqus分析中以增强该软件的功能和灵活性。这些子程序允许用户在分析过程中添加自定义材料模型、边界条件、初始化、加载等特定操作&#xff0c;以便更精准地模拟分析中的现象和现象。ABAQUS…...

容器——3.Collection 子接口之 Set

文章目录 3.1. comparable 和 Comparator 的区别3.1.1. Comparator 定制排序3.1.2. 重写 compareTo 方法实现按年龄来排序 3.2. 无序性和不可重复性的含义是什么3.3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同 3.1. comparable 和 Comparator 的区别 comparable 接口…...

将整数,结构体,结构体数组,链表写到文件

在之前的学习中&#xff0c;忘文件中写的内容都是字符串或字符&#xff0c;本节学习如何写入其他各种类型的数据。 回看write和read函数的形式&#xff1a; ssize_t write(int fd, const void *buf, size_t count); ssize_t read(int fd, void *buf, size_t count); 其中&a…...

UNIX基础知识:UNIX体系结构、登录、文件和目录、输入和输出、程序和进程、出错处理、用户标识、信号、时间值、系统调用和库函数

引言&#xff1a; 所有的操作系统都为运行在其上的程序提供服务&#xff0c;比如&#xff1a;执行新程序、打开文件、读写文件、分配存储区、获得系统当前时间等等 1. UNIX体系结构 从严格意义上来说&#xff0c;操作系统可被定义为一种软件&#xff0c;它控制计算机硬件资源&…...

IDEA2021.3.1-优化设置IDEA2021.3.1-优化设置、快捷方式改为eclipse、快捷键等

IDEA2021.3.1-优化设置IDEA2021.3.1-优化设置、快捷方式改为eclipse、快捷键等 一、主题设置二、鼠标悬浮提示三、显示方法分隔符四、代码提示忽略大小写五、自动导包六、取消单行显示tabs七、设置字体八、配置类文档注释信息模板九、设置文件编码9.1、所有地方设置为UTF-89.2、…...

使用C#的窗体显示与隐藏动画效果方案 - 开源研究系列文章

今天继续研究C#的WinForm的显示动画效果。 上次我们实现了无边框窗体的显示动画效果(见博文&#xff1a;基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章 )&#xff0c;这次介绍的是未在任务栏托盘中窗体的显示隐藏动画效果的实现代码。 1、 项目目录&#xff1b…...

09_Vue3中的 toRef 和 toRefs

toRdf 作用&#xff1a;创建一个 ref 对象&#xff0c;其 value 值指向另一个对象中的某个属性。语法&#xff1a; const name toRef(person,name) 应用&#xff1a;要将响应式对象中的某个属性单独提供给外部使用时。扩展&#xff1a;toRef 与 toRefs 功能一致&#xff0…...

JAVA获取视频音频时长 文件大小 MultipartFileUtil和file转换

java 获取视频时长_java获取视频时长_似夜晓星辰的博客-CSDN博客 <dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>2.5.1</version></dependency>Slf4j public class VideoTimeUtil…...

刷题笔记 day9

1658 将 x 减到 0 的最小操作数 解析&#xff1a;1. 当数组的两端的数都大于x时&#xff0c;直接返回 -1。 2. 当数组所有数之和小于 x 时 &#xff0c;直接返回 -1。 3. 数组中可以将 x 消除为0&#xff0c;那么可以从左边减小为 0 &#xff1b;可以从右边减小为 0 &#xff1…...

小白解密ChatGPT大模型训练;Meta开源生成式AI工具AudioCraft

&#x1f989; AI新闻 &#x1f680; Meta开源生成式AI工具AudioCraft&#xff0c;帮助用户创作音乐和音频 摘要&#xff1a;美国公司Meta开源了一款名为AudioCraft的生成式AI工具&#xff0c;可以通过文本提示生成音乐和音频。该工具包含三个核心组件&#xff1a;MusicGen用…...

1 swagger简单案例

1.1 加入依赖 <!--swagger图形化接口--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> </dependency><dependency><groupId>io.spri…...

Flutter写一个android底部导航栏框架

废话不多说&#xff0c;上代码&#xff1a; import package:flutter/material.dart;void main() {runApp(MyApp()); }class MyApp extends StatelessWidget {overrideWidget build(BuildContext context) {return MaterialApp(title: Bottom Navigation Bar,theme: ThemeData(…...

关于自动化测试用例失败重试的一些思考

自动化测试用例失败重跑有助于提高自动化用例的稳定性&#xff0c;那我们来看一下&#xff0c;python和java生态里都有哪些具体做法&#xff1f; 怎么做 如果是在python生态里&#xff0c;用pytest做测试驱动&#xff0c;那么可以通过pytest的插件pytest-rerunfailures来实现…...

JS逆向之顶像滑块

本教程仅限于学术探讨&#xff0c;也没有专门针对某个网站而编写&#xff0c;禁止用于非法用途、商业活动、恶意滥用技术等&#xff0c;否则后果自负。观看则同意此约定。如有侵权&#xff0c;请告知删除&#xff0c;谢谢&#xff01; 目录 一、接口请求流程 二、C1包 三、ac 四…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...