【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}`)
})

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音视频开发30 FFmpeg 视频编码- 流程以及重要API,H264编码原理说明,该章节使用h264编码说明

一.H264编码原理 1 视频为什么需要进行编码压缩 ◼ 一张为 720x480 的图像&#xff0c;用 YUV420P 的格式来表示&#xff0c;其大小为&#xff1a; 720*480*1.5 约等于 0.5MB 。 ◼ 如果是 25 帧&#xff0c; 10 分钟的数据量 0.5M*10*60*25 7500MB -> 7GB 多 ◼ …

Open3D(C++) 删除点云中重复的点

目录 一、算法原理1、重叠点2、主要函数二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、重叠点 原始点云克隆一份   构造重叠区域   合并点云获得重叠点 2、主要…

2024 Parallels Desktop for Mac 功能介绍

Parallels Desktop的简介 Parallels Desktop是一款由Parallels公司开发的桌面虚拟化软件&#xff0c;它允许用户在Mac上运行Windows和其他操作系统。通过强大的技术支持&#xff0c;用户无需重新启动电脑即可在Mac上运行Windows应用程序&#xff0c;实现了真正的无缝切换。 二…

Python变量的命名规则与赋值方式

第二章&#xff1a;Python 基础语法 第一节&#xff1a;变量的命名规则与赋值方式 2.1.1 引言 在编程中&#xff0c;变量是存储数据的基本单元。变量的命名和赋值是编程语言中表达和操作数据的基础。了解和遵循变量命名规则对于编写清晰、可维护的代码至关重要。 2.1.2 变量…

基于Spring Boot的药房信息管理系统

1 项目介绍 1.1 研究的背景及意义 随着社会的飞速进步和药房行业竞争的白热化&#xff0c;传统的手工管理模式已难以适应药房信息管理的现代化需求。在计算机科学技术日臻完善的背景下&#xff0c;药房信息管理者们日益认识到运用计算机技术进行信息管理的迫切性和重要性。计…

【PL理论深化】(13) 变量与环境:文法结构 | 真假表达式:isZero E | let 表达式叠放 | 定义的规则 | 条件语句的使用

&#x1f4ac; 写在前面&#xff1a;从现在开始&#xff0c;让我们正式设计和实现编程语言。首先&#xff0c;让我们扩展在之前定义的整数表达式语言&#xff0c;以便可以使用变量和条件表达式。 目录 0x00 文法结构 0x01 真假表达式&#xff1a;isZero E 0x02 let 表达式叠…

Vite: 高阶特性 Pure ESM

概述 ESM 已经逐步得到各大浏览器厂商以及 Node.js 的原生支持&#xff0c;正在成为主流前端模块化方案。 而 Vite 本身就是借助浏览器原生的 ESM 解析能力( type“module” )实现了开发阶段的 no-bundle &#xff0c;即不用打包也可以构建 Web 应用。不过我们对于原生 ESM 的…

【2024-热-办公软件】ONLYOFFICE8.1版本桌面编辑器测评

在今日快速发展的数字化办公环境中&#xff0c;选择一个功能全面且高效的办公软件是至关重要的。最近&#xff0c;我有幸体验了ONLYOFFICE 8.1版本的桌面编辑器&#xff0c;这款软件不仅提供了强大的编辑功能&#xff0c;还拥有众多改进&#xff0c;让办公更加流畅和高效。在本…

【Linux】进程优先级 | 环境变量

目录 Ⅰ. 进程优先级&#xff08;Process Priority&#xff09; 1. 什么是进程优先级&#xff1f; 2. 查看系统进程 3. 修改进程优先级 4.优先级调度原理 Ⅱ. 进程的切换&#xff08;Process Switch&#xff09; 1. 竞争与独立 2. 并行与并发 3. 进程抢占 4.实现切换…

Python技术笔记汇总(含语法、工具库、数科、爬虫等)

对Python学习方法及入门、语法、数据处理、数据可视化、空间地理信息、爬虫、自动化办公和数据科学的相关内容可以归纳如下&#xff1a; 一、Python学习方法 分解自己的学习目标&#xff1a;可以将学习目标分基础知识&#xff0c;进阶知识&#xff0c;高级应用&#xff0c;实…

医院管理系统带万字文档医院预约挂号管理系统基于spingboot和vue的前后端分离java项目java课程设计java毕业设计

文章目录 仓库管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 仓库管理系统 一、项目演示 医院管理系统 二、项目介绍 基于springbootvue的前后端分离医院管…

LabVIEW遇到无法控制国外设备时怎么办

当使用LabVIEW遇到无法控制国外产品的问题时&#xff0c;解决此类问题需要系统化的分析和处理方法。以下是详细的解决思路和具体办法&#xff0c;以及不同方法的分析和比较&#xff0c;包括寻求代理、国外技术支持、国内用过的人请教等内容。 1. 了解产品的通信接口和协议 思路…

如何利用python画出AHP-SWOT的战略四边形(四象限图)

在企业或产业发展的相关论文分析中&#xff0c;常用到AHP-SWOT法进行定量分析&#xff0c;形成判断矩阵后&#xff0c;如何构造整洁的战略四边形是分析的最后一个环节&#xff0c;本文现将相关代码发布如下&#xff1a; import mpl_toolkits.axisartist as axisartist import …

基于FPGA的温湿度检测

初始化部分就不过多赘述&#xff0c;我会给出对应的文件&#xff0c;我只说明这部分里面涉及到使用的代码部分 1、数据的读取和校验 数据的读取和检验代码如下 always (posedge clk_us)if (data_temp[7:0] data_temp[39:32] data_temp[31:24] data_temp[23:16] data_te…

centos7 xtrabackup mysql 基本测试(5)mysql 建立 测试 数据库及内容

centos7 xtrabackup mysql 基本测试&#xff08;5&#xff09;mysql 建立 测试 数据库及内容 登录 mysql -u etc -p 1234aA~1创建数据库 名字是company show databases ; create database company;在 company里面 创建表employee use company; DROP TABLE IF EXISTS employ…

vue+canvas画布实现网页签名效果

1、签名自定义组件代码示例&#xff1a; qianMing.vue <template><!-- 容器&#xff0c;包含画布和清除按钮 --><div class"signature-pad-container"><!-- 画布元素&#xff0c;用于用户签名 --><canvasref"canvas" <!--…

C++旋转点坐标计算

/// 获取A点绕B点旋转P度后的新坐标/// </summary>/// <param name"Angle">角度</param>/// <param name"CirPoint">圆心坐标</param>/// <param name"MovePoint">移动点的坐标</param>/// <param…

成为画图大师,用图表讲故事

这些问题你是否遇到过: 项目总结会上&#xff0c;如果用数据呈现你做的价值&#xff1f; 完善详尽的数据分析得出了让人信服的结论&#xff0c;如何呈现在BOSS面前? 我们要的不是数据&#xff0c;而是数据告诉我们的事实 数据很重要&#xff0c;但只是原料&#xff0c;所以…

微服务之服务保护策略【持续更新】

文章目录 线程隔离一、滑动窗口算法二、漏桶算法三、令牌桶算法 面试题1、Sentinel 限流和Gateway限流的区别 线程隔离 两种实现方式 线程池隔离&#xff08;Hystix隔离&#xff09;&#xff0c;每个被隔离的业务都要创建一个独立的线程池&#xff0c;线程过多会带来额外的CPU…

大模型笔记1: Longformer环境配置

论文: https://arxiv.org/abs/2004.05150 首先保证电脑上配置了git. git环境配置: https://blog.csdn.net/Andone_hsx/article/details/87937329 3.1、找到git安装路径中bin的位置&#xff0c;如&#xff1a;D:\Program Files\Git\bin 找到git安装路径中git-core的…