【NodeJs】入门

目录

一、前导

二、 url模块

三、path模块

四、buffer模块

五、fs模块

六、stream流模块

七、os模块

八、crypto模块

九、util模块

十、http模块


nodejs官网 Node.js — 在任何地方运行 JavaScript

nmp是Node.js包管理器,用来安装各种库、框架和工具,官网 https://www.npmjs.com/

一、前导

查看安装的版本:

node -v
npm -v

查看当前镜像源:

npm get registry

 设置淘宝镜像源:

npm config set registry https://registry.npmmirror.com/

安装Vs插件:

  • Code Runner,并勾选Whether to clear prcvious output before each run.

二、 url模块

import url from 'url'

let __filename = url.fileURLToPath(import.meta.url)
console.log('当前文件的路径:', __filename) 

 输出:

当前文件的路径: e:\vue\node\demo\demo.js

1、导入包出现如下错误:

解决方法:

初始化配置文件:

npm init

在package.json中添加以下一行:

"type": "module",

2、出现错误:安装node后,在cmd中运行node -v正常,但在VS中运行node -v,报如下错误:

解决方法:

以管理员身份运行VS code,若不成功,则重启电脑。

三、path模块

import url from 'url'
import path from 'path'

//file:// 的使用场景: 1.跨平台兼容性 2.url相关的操作
console.log('当前文件的url格式路径:', import.meta.url) 

let __filename = url.fileURLToPath(import.meta.url)
console.log('当前文件的路径:', __filename) 

let __dirname = path.dirname(__filename)
console.log('当前文件所在目录的路径:', __dirname)

let basename = path.basename(__filename) 
console.log('文件名:', basename)

let extname = path.extname(__filename) 
console.log('扩展名:', extname)

输出:

当前文件的url格式路径: file:///e:/vue/node/demo/tempCodeRunnerFile.js
当前文件的路径: e:\vue\node\demo\tempCodeRunnerFile.js
当前文件所在目录的路径: e:\vue\node\demo
文件名: tempCodeRunnerFile.js
扩展名: .js
  • 路径拼接:
path.join(__dirname,"/test.jpg")
  • 路径解析:
path.parse(__filename)

 输出:

pathObj: {
  root: 'e:\\',
  dir: 'e:\\vue\\node\\demo',
  base: 'demo.js',
  ext: '.js',
  name: 'demo'
}

四、buffer模块

  • 以十六进制形式显示每个字节;
  • 内部存储的是二进制数据;
  • 在打印buffer对象时,会将每个字节的数据转换为十六进制形式。
//Buffer.alloc(8)创建了一个大小为8字节的Buffer, 并使用0填充 [作用:内存分配]
console.log('创建 Buffer:', Buffer.alloc(8))
console.log('Buffer 的长度:', Buffer.alloc(8).length)

//String 转换为 Buffer (常用于将数据写入文件、通过网络发送数据等)
let urlBuffer = Buffer.from('nodejs.com', 'utf8') //创建一个包含字符串 'nodejs.com' 的 Buffer
console.log('字符串转换为 Buffer:', urlBuffer)

//Buffer 转换为 String (常用于从文件读取数据、接收到网络数据后解析内容)
console.log('Buffer 转换为字符串:', urlBuffer.toString('utf8'))

//Buffer 转换为 Base64 (常用于在文本协议中传输二进制数据,如:嵌入图像资源、电子邮件附件等)
const urlBase64 = urlBuffer.toString('base64')
console.log('Buffer 转换为 Base64:', urlBase64)

//Base64 转换为 Buffer
console.log('Base64 转换为 Buffer:', Buffer.from(urlBase64, 'base64'))

输出:

创建 Buffer: <Buffer 00 00 00 00 00 00 00 00>
Buffer 的长度: 8
字符串转换为 Buffer: <Buffer 6e 6f 64 65 6a 73 2e 63 6f 6d>
Buffer 转换为字符串: nodejs.com
Buffer 转换为 Base64: bm9kZWpzLmNvbQ==
Base64 转换为 Buffer: <Buffer 6e 6f 64 65 6a 73 2e 63 6f 6d>

五、fs模块

import fs from 'fs'

//创建目录并写入文件
const test = async (dir, path, content) => {
  try {
    await fs.promises.mkdir(dir, { recursive: true }) // recursive: true 允许递归创建多级目录
    console.log("目录创建成功")
    fs.promises.writeFile(path, content)
    console.log("写入成功")
  } catch (err) {
    console.error(`目录创建失败: ${err}`)
  }
}

let dir = "zx/log/"
let name = "test.txt"
let path = dir + name 
let content = "nodejs.com"
test(dir, path, content)
  • 追加文件:
fs.promises.appendFile(path, content)
  • 读取文件:
fs.promises.readFile(path)
console.log(String(data))
  • 文件或目录重命名:
fs.promises.rename(oldPath, newPath)
  • 删除文件:
fs.promises.unlink(path)
  • 删除目录:
fs.promises.rm(path, { recursive: true }) // recursive: true 允许递归删除多级目录

六、stream流模块

流是一种处理数据的方式,对于比较大的文件,流可以逐步处理数据,而不是一次性将整个文件加载到内存中,口节省内存资源,避免内存溢出等问题。

通过fs实现的功能也可以通过stream实现。

import fs from 'fs'

const test = async (dir, path, content) => {
  try {
    await fs.promises.mkdir(dir, { recursive: true }) // recursive: true 允许递归创建多级目录
    console.log("目录创建成功")
    const writeStream = fs.createWriteStream(path)
    writeStream.on('error', err => {  
        console.error(`文件写入失败: ${err}`)
        writeStream.close() // 出错时关闭流
    })
  
    writeStream.on('finish', () => {  
        console.log("文件写入成功")
    })
    
    writeStream.write(content, 'utf8')
    writeStream.end()

  } catch (err) {
    console.error(`目录创建失败: ${err}`)
  }
}

let dir = "zx/test/"
let name = "web.txt"
let path = dir + name 
let content = "nodejs.com"
test(dir, path, content)
  • 追加文件:
const appendStream = fs.createWriteStream(path, { flags: 'a' })
  • 读取文件:
const readStream = fs.createReadStream(path)
  
let content = ''
readStream.on('data', chunk => {
  console.log(chunk) //chunk是指在流中传输的数据块
  content += chunk.toString('utf8') //将Buffer转换为UTF-8编码的字符串
})

七、os模块

用于获取操作系统类型、系统架构、CPU核心数等。

八、crypto模块

提供加密与解密功能,支持各种哈希算法、对称加密与非对称加密等。

九、util模块

提供一些工具函数,如格式化输出字符串,将参数插入到占位符所在的位置,%s 是一个字符串(String)类型的占位符, %d 是一个十进制整数(Decimal Integer)类型的占位符。

import util from 'util'

const url = 'nodejs.com'
const user = 23
const msg = util.format('网址: %s, 在线人数: %d', url, user)
console.log(msg)

//将对象转换为字符串
const webObj = { url: 'www.nodejs.com', user: 50 }
console.log('webObj:', typeof webObj, webObj)
const webStr = util.inspect(webObj)
console.log('webStr:', typeof webStr, webStr)

输出:

网址: nodejs.com, 在线人数: 23
webObj: object { url: 'www.nodejs.com', user: 50 }
webStr: string { url: 'www.nodejs.com', user: 50 }

十、http模块

import http from 'http'

const hostname = '127.0.0.1' 
const port = 8008 //服务器监听的端口号

const server = http.createServer((request, response) => {
  response.write("nodejs.com") //发送响应数据
  response.end() //结束响应
})

//启动 http 服务器,并在指定的ip地址(127.0.0.1)和端口(8008)上监听连接请求
server.listen(port, hostname, () => {
  console.log(`服务器已启动: http://${hostname}:${port}`)
})

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32的八位数码管显示和闹钟计时【Proteus仿真】

某鱼&#xff1a;两栖电子 一、系统功能 采用矩阵键盘&#xff0c;按下对应的数字再按下确认按键&#xff0c;数码管会显示自己输入的数字&#xff0c;如果按错可以使用删除按钮进行删除。点击计时按钮可以显示当前的时间。 二、使用器件 DS1302实时时钟芯片&#xff0c;8位数…

Mac虚拟机软件有什么用?

随着苹果M系列芯片电脑的推出&#xff0c;虚拟机的使用变得越来越流行。不同于苹果以往的Intel处理器电脑&#xff0c;其M系列芯片电脑无法安装双系统。如果要使用非macOS系统&#xff0c;可以通过创建虚拟机系统的方式实现。那么&#xff0c;虚拟机软件有什么作用和用途&#…

DP(动态规划)【3】 最长公共子序列 最长回文子串

目录 1.最长公共子序列 状态转移方程需要二维数组&#xff0c;1-dim已经不太够了 又是这个问题&#xff1a;如何读入字符串 2.最长回文子串 1.最长公共子序列 状态转移方程需要二维数组&#xff0c;1-dim已经不太够了 这里dp[i][j]是说S的前i位与T的前j位公共序列&#xff…

韩顺平0基础学java——第34天

p675-689 UDP网络编程 1.类 DatagramSocket和 DatagramPacket[数据包/数据报]实现了基于UDP协议网络程序。 2.UDP数据报通过数据报套接字DatagramSocket发送和接收&#xff0c;系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。 3.DatagramPacket对象…

FastAPI教程III

本文参考FastAPI教程https://fastapi.tiangolo.com/zh/tutorial 这部分暂无需求的没有记录&#xff0c;仅放置标题。 依赖项 安全性 中间件 你可以向FastAPI应用添加中间件。 ”中间件“是一个函数&#xff0c;它在每个请求被特定的路径操作处理之前&#xff0c;以及在每个…

植物大战僵尸融合版最新版2024蓝飘飘fly

亲爱的花园守护者们&#xff0c;是否已经厌倦了传统塔防游戏的老套模式&#xff1f;是否渴望在熟悉的《植物大战僵尸》中寻找全新的刺激体验&#xff1f;那么&#xff0c;让我们一起走进《植物大战僵尸融合版》的异想世界&#xff0c;开启一场别开生面的园艺之战吧&#xff01;…

区间动态规划——最长回文子序列长度(C++)

把夜熬成粥&#xff0c;然后喝了它。 ——2024年7月1日 书接上回&#xff1a;区间动态规划——最长回文子串&#xff08;C&#xff09;-CSDN博客&#xff0c;大家有想到解决办法吗&#xff1f; 题目描述 给定一个字符串s&#xff08;s仅由数字和英文大小写字母组成&#xff0…

以太网交换机原理

没有配置&#xff0c;比较枯燥&#xff0c;二可以认识线缆&#xff0c; 三比较重要&#xff0c;慢慢理解&#xff0c;事半功倍。 各位老少爷们&#xff0c;在下给大家说段以太网交换机原理&#xff0c;说得不好大家多多包涵&#xff0c;说得好呢&#xff0c;大家叫个好&#x…

Debugging using Visual Studio Code

One of the key features of Visual Studio Code is its great debugging support. VS Code’s built-in debugger helps accelerate your edit, compile, and debug loop. Debugger extensions VS Code 内置了对 Node.js 运行时的调试支持,可以调试 JavaScript、TypeScript…

Web3 前端攻击:原因、影响及经验教训

DeFi的崛起引领了一个创新和金融自由的新时代。然而&#xff0c;这种快速增长也吸引了恶意行为者的注意&#xff0c;他们试图利用漏洞进行攻击。尽管很多焦点都集中在智能合约安全上&#xff0c;但前端攻击也正在成为一个重要的威胁向量。 前端攻击的剖析 理解攻击者利用前端漏…

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection 论文链接&#xff1a;http://arxiv.org/abs/2406.03459 代码链接&#xff1a;https://github.com/Atten4Vis/LW-DETR 一、摘要 介绍了一种轻量级检测变换器LWDETR&#xff0c;它在实时物体检测方面超越…

matrixone集群搭建、启停、高可用扩缩容和连接数据库

1. 部署 Kubernetes 集群 由于 MatrixOne 的分布式部署依赖于 Kubernetes 集群&#xff0c;因此我们需要一个 Kubernetes 集群。本篇文章将指导你通过使用 Kuboard-Spray 的方式搭建一个 Kubernetes 集群。 准备集群环境 对于集群环境&#xff0c;需要做如下准备&#xff1a…

数据结构-期末复习题

数据结构-期末复习题 一、选择题 1、在数据结构中&#xff0c;与所使用的计算机无关的是数据的&#xff08; ) 结构。 A. 存储B. 物理C. 逻辑D. 物理和存储 【答案】C 【解析】暂无解析2、算法分析的两个主要方面是 ( )。 A. 正确性和简单性B. 可读性和文档性C. 空间复杂度…

测评推荐:企业管理u盘的软件有哪些?

U盘作为一种便携的存储设备&#xff0c;方便易用&#xff0c;被广泛应用于企业办公、个人学习及日常工作中。然而&#xff0c;U盘的使用也带来了数据泄露、病毒传播等安全隐患。为了解决这些问题&#xff0c;企业管理U盘的软件应运而生。 本文将对市面上流行的几款U盘管理软件…

【SQLmap】常用命令

文章目录 实际使用案例常用命令基本命令数据库指纹识别用户信息用户权限数据库枚举数据导出密码哈希操作系统命令执行文件操作代理和网络参数指定保存恢复自动搜索注入智能模式等级设置自动注入WAF 绕过杂项帮助和支持 SQLmap 是一款开源的自动化 SQL 注入检测和利用工具&#…

Web Based Quiz System v1.0 SQL 注入漏洞(CVE-2022-32991)

前言 CVE-2022-32991 是一个影响 Web Based Quiz System v1.0 的 SQL 注入漏洞。这个漏洞存在于 welcome.php 文件中的 eid 参数处。攻击者可以通过此漏洞在数据库中执行任意 SQL 语句&#xff0c;从而获取、修改或删除数据库中的数据。 具体细节如下&#xff1a; 攻击向量&…

【Spring Boot】Java 持久层 API:JPA

Java 持久层 API&#xff1a;JPA 1.Spring Data1.1 主要模块1.2 社区模块 2.JPA3.使用 JPA3.1 添加 JPA 和 MySQL 数据库的依赖3.2 配置数据库连接信息 4.了解 JPA 注解和属性4.1 常用注解4.2 映射关系的注解4.3 映射关系的属性 5.用 JPA 构建实体数据表 1.Spring Data Spring…

VMware虚拟机迁移:兼用性踩坑和复盘

文章目录 方法失败情况分析&#xff1a;参考文档 方法 虚拟机关机&#xff0c;整个文件夹压缩后拷贝到新机器中&#xff0c;开机启用即可 成功的情况&#xff1a; Mac (intel i5) -> Mac (intel i7)Mac (intel, MacOS - VMware Fusion) -> DELL (intel, Windows - VMw…

flask的基本使用2

上一篇我们介绍了基本使用方法 flask使用 【 1 】基本使用 from flask import Flask# 1 实例化得到对象 app Flask(__name__)# 2 注册路由--》写视图函数 app.route(/) def index():# 3 返回给前端字符串return hello worldif __name__ __main__:# 运行app&#xff0c;默认…

Linux【环境 CenOS7】部分软件安装链接整理

优质博文&#xff1a;IT-BLOG-CN 一、开启网络 【问题】&#xff1a; 刚安装完CentOS&#xff0c;当ping www.baidu.com时&#xff0c;ping不通&#xff1b; 【解决】&#xff1a; 进入cd /etc/sysconfig/network-scripts/我这里修改的是ifcfg-ens33文件&#xff0c;将ONBOOT…