【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.mzph.cn/web/36710.shtml

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

相关文章

pdf怎么转换成jpg,本地转换还是在线转换?

PDF&#xff08;Portable Document Format&#xff09;和JPG&#xff08;Joint Photographic Experts Group&#xff09;这两种文件格式在我们的日常生活和工作中扮演着举足轻重的角色。PDF因其跨平台、保持原样性强的特点&#xff0c;被广泛应用于文件传输和存储&#xff1b;而…

从0到1搭建Java开发环境(内涵超详细教程、软件、提供网盘链接直接一步到位!!!!)

软件部分 需要的软件为下面两个&#xff1a; IDEANavicat 需要的可以自行拿&#xff08;安装教程和软件&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1y3RoMt0ZapyJsj3P0DPaVA?pwdxr4p 提取码&#xff1a;xr4p 环境部分 需要的环境为以下几个&…

springboot+vue+mybatis奶茶管理系统+PPT+论文+讲解+售后

由于科学技术的快速发展&#xff0c;人们的生活也与信息时代的发展相关。同时&#xff0c;随着市场化和经济化的发展&#xff0c;国内很多行业已经意识到了这一点&#xff0c;为了提升行业的竞争力&#xff0c;就应当率先把握机会。于是在互联网的默化潜移影响下&#xff0c;餐…

【Qt+opencv】编译、配置opencv

文章目录 前言下载opencv编译opencvmingw版本 总结 前言 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;它包含了超过2500个优化的算法。这些算法可以用来检测和识别面部&#xff0c;识别对象&#x…

UML建模笔记

5个视图 设计。类&#xff0c;接口&#xff0c;对象如何协作。实现。组件&#xff0c;运行程序&#xff0c;文档关系。用例。用户功能期望。进程。并发与同步相关进程&#xff0c;线程。部署。部署到计算机。 建模目的 和客户共创追踪需求变更协同开发进度控制持续迭代测试生…

前端工程化08-新的包管理工具pnpm

1、历史原因解读 pnpm这个东西发布的时间是比较早的&#xff0c;但是在最近一两年的时候才开始流行&#xff0c;甚至是可以说非常的盛行&#xff0c;那么这个包到底是个什么东西的&#xff0c;那么我们先说下&#xff0c;原来的包管理工具到底有那些问题&#xff1f;比如说我们…

MySQL自增主键踩坑记录

对于MySQL的自增主键&#xff0c;本文记录、整理下在工作中实际遇到的问题。 下面示例均基于MySQL 8.0 修改列的类型后&#xff0c;自增属性消失 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL );上面的…

论文学习——一种自适应提升的动态多目标优化进化算法

论文题目&#xff1a;A dynamic multi-objective optimization evolutionary algorithm with adaptive boosting 一种自适应提升的动态多目标优化进化算法&#xff08;Hu Peng a,b,∗, Jianpeng Xiong a, Chen Pi a, Xinyu Zhou c, Zhijian Wu d&#xff09;IEEE Swarm and Ev…

phpstorm2024代码总是提示“no usages”或者“无用法”解决办法

问题&#xff1a;phpstorm2024使用时&#xff0c;总是会提示无用法&#xff0c;如果没有安装中文语言包的情况下会提示&#xff1a;no usages&#xff0c;如果想关闭怎么办&#xff1f; 编译器右上角点击齿轮进入设置&#xff0c;按照下图的方法点击即可关闭。或者在编译器的“…

机器学习——强化学习中的“策略π”的个人思考

这两天回顾了《西瓜书》中的最后一章——“强化学习”&#xff0c;但是忽然发现之前对于本章中的“策略π”的理解有些偏差&#xff0c;导致我在看值函数公式时有些看不明白。对此&#xff0c;我在网上查了一些资料&#xff0c;但是大部分人都是一笔带过&#xff0c;或者是照本…

c++ 设计模式 的课本范例(中)

&#xff08;10&#xff09;单例模式 singleton 。整个应用程序执行时&#xff0c;只有一个单例模式的对象。 class GameConfig // 懒汉式&#xff0c;啥时候用单例对象&#xff0c;啥时候创建。 { private:static GameConfig* ptrGameConfig; // 这些函数都作为私有函数&…

【wsl2】WIN11借助wsl2挂载ext4磁盘

我有一块ext4文件系统的硬盘&#xff0c;想要在win11上访问&#xff0c;我们可以通过wsl2进行挂载 wsl2的安装就跳过了&#xff0c;可以自行搜索安装。 安装完成后 >>> GET-CimInstance -query "SELECT * from Win32_DiskDrive"通过这个命令&#xff0c;可…

汽车电子工程师入门系列——AUTOSAR通信服务框架(上)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

Spring Boot项目如何配置跨域

1、通过SpringSecurity进行配置 2、前端跨域配置&#xff1a;proxy配置项用于设置代理规则&#xff0c;用于前端开发中与后端API交互时使用。

ROS2自定义接口Python实现机器人移动

1.创建机器人节点接口 cd chapt3_ws/ ros2 pkg create example_interfaces_rclpy --build-type ament_python --dependencies rclpy example_ros2_interfaces --destination-directory src --node-name example_interfaces_robot_02 --maintainer-name "Joe Chen" …

Java 基本数据类型【基础篇】

目录 Java 数据类型基本数据类型整数类型【byte、short、int、long】浮点类型【float、double】布尔类型【boolean】字符类型【char】 引用数据类型 Java 数据类型 Java 语言支持的数据类型分为两种&#xff1a;基本数据类型 和 引用数据类型。其数据类型结构如下图所示&#x…

24年hvv前夕,微步也要收费了,情报共享会在今年结束么?

一个人走的很快&#xff0c;但一群人才能走的更远。吉祥同学学安全https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247483727&idx1&sndb05d8c1115a4539716eddd9fde4e5c9&scene21#wechat_redirect这个星球&#x1f517;里面已经沉淀了&#xff1a; 《Ja…

30 哈希的应用

位图 概念 题目 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何判断一个数是否在这40亿个整数中 1.遍历&#xff0c;时间复杂度O(N) 2.二分查找&#xff0c;需要先排序&#xff0c;排序(N*logN)&#xff0c;二分查找&#xff0c;logN。…

2024年【焊工(初级)】考试及焊工(初级)报名考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 焊工&#xff08;初级&#xff09;考试是安全生产模拟考试一点通生成的&#xff0c;焊工&#xff08;初级&#xff09;证模拟考试题库是根据焊工&#xff08;初级&#xff09;最新版教材汇编出焊工&#xff08;初级&a…

C++ 史上首次超越 C,仅次于Python!【送源码】

TIOBE 公布了 2024 年 6 月的编程语言排行榜——C 史上首次超越 C&#xff0c;跃至榜二&#xff0c;仅次于 Python。 C 是一种广泛应用于嵌入式系统、游戏开发和金融交易软件等领域的语言&#xff0c;在本月成功超越了 C&#xff0c; 成为了 TIOBE 指数中新的第二名。 这是 C …