Node.js笔记入门篇

ops/2025/2/12 23:47:02/

黑马程序员视频地址:

Node.js与Webpack-01.Node.js入门

基本认识

概念

定义:Node.js® 是一个免费、开源、跨平台的 JavaScript 运行时环境, 它让开发人员能够创建服务器 Web 应用、命令行工具和脚本 

作用:使用Node.js 编写服务器端程序

✓ 编写数据接口,提供网页资源浏览功能等等

✓ 前端工程化:为后续学习Vue 和React 等框架做铺垫


下载

官网:

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

v16.19.0(指定版本:兼容vue-admin-template 模板)

Node.js安装包-windows版本.zip - 蓝奏云

Node.js安装包-mac版.zip - 蓝奏云

安装过程:默认下一步即可
注释事项:
1. 安装在非中文路径下
2. 无需勾选自动安装其他配套软件
成功验证:
1. 打开cmd 终端,输入node -v命令查看版本号
2. 如果有显示,则代表安装成功


使用方法

命令:在VSCode 集成终端中,输入node xxx.js,回车即可执行


fs 模块

模块:类似插件,封装了方法/属性

fs 模块:封装了与本机文件系统进行交互的,方法/属性

加载fs模块对象

模块使用前需加载

const fs = require("fs")

 写入文件内容

fs.writeFile("文件路径", "写入内容", error => {//写入后的回调函数
})

报错会传值给error,成功则error值为空 


 读取文件内容

fs.readFile("文件路径", (error, data) => {//读取后的回调函数
})

error同上,data为读取的内容,类型为Buffer数据流(直接打印会以16进制形式显示) 

 

 若想正常显示内容,需要调用toString方法


path 模块

__dirname 内置变量 

Node.js 代码中,相对路径是根据终端所在路径来查找的,可能无法找到你想要的文件

建议:在Node.js 代码中,使用绝对路径

//内置变量(获取当前模块目录-绝对路径)
__dirname


path.join() 拼接路径

path.join() 会使用特定于平台的分隔符,作为定界符,将所有给定的路径片段连接在一起

path.join(片段1, 片段2, ..., 片段n)


 path.resolve() 与path.resolve()的区别

特性path.joinpath.resolve
返回路径类型相对或绝对路径始终为绝对路径
处理绝对路径参数直接拼接重置解析过程
依赖工作目录不依赖依赖(若无绝对路径参数)
主要用途路径拼接与标准化生成绝对路径

URL中的端口号


http 模块

加载http 模块,创建Web 服务对象

const http = require("http")
const server = http.createServer()

设置监听请求事件

设置监听事件(request),回调函数参数req为接收数据参数,res为响应参数 

req.url:获取请求资源路径 

server.on("request", (req, res) => {})

设置响应头

"Content-Type":内容类型

"text/plain;charset=utf-8":普通文本以及中文编码格式

“text/html;charset=utf-8”:超文本以及中文编码格式

server.on("request", (req, res) => {res.setHeader("Content-Type", "text/plain;charset=utf-8")})

结束本次请求与响应

server.on("request", (req, res) => {res.end("响应语句")})

配置端口号并启动web服务

server.listen(3000, () => {console.log("web 服务启动成功")
})

本地测试:

浏览器请求http://localhost:3000 测试

(localhost:固定代表本机的域名)

启动成功后会持续监听,等待下一步操作,可以按CTRL+C退出 


案例:返回html超文本文件

const fs = require("fs")
const path = require("path")
const http = require("http")
const server = http.createServer()
server.on("request", (req, res) => {if(req.url === "/index.html"){fs.readFile(path.join(__dirname, "page/index.html"), (err, data) => {res.setHeader("Content-Type", "text/html;charset=utf-8")res.end(data.toString())})}else{res.setHeader("Content-Type", "text/plain;charset=utf-8")res.end("你要访问的路径不存在")    }
})
server.listen(3000, () => {console.log("web 服务启动成功")
})


模块化


CommonJS 标准

模块名或路径:

✓ 内置模块:直接写名字(例如:fs,path,http)

✓ 自定义模块:写模块文件路径(例如:./02.js) 

//01.js    导入const obj = require(__dirname + "/02.js")
console.log(obj)
//02.js    导出const userName = "User_A001" 
const userGender = "男"module.exports = {name: userName,gender: userGender    //name和gender是对外属性名
}


ECMAScript 标准

 注意:

Node.js 默认支持CommonJS 标准语法

使用ECMAScript 标准语法:

在运行模块所在文件夹新建package.json 文件

并设置{ "type" : "module" } 

//package.json    配置文件{"type": "module"}


默认导出和导入

//01.js    导入import obj from "./02.js"
console.log(obj)
//02.js    导出const userName = "User_A001" 
const userGender = "男"export default {name: userName,gender: userGender
}


命名导出和导入

//01.js    导入import {userName, userGender} from "./02.js"
console.log(userName, userGender)
//02.js    导出export const userName = "User_A001" 
export const userGender = "男"


npm包管理器 

官网:

npm | Home 

包的概念


npm简介


常用命令(使用时注意路径)

初始化清单文件(得到package.json 文件,有则略过此命令)

npm init -y

下载本地软件包

npm i 软件包名称

安装所有依赖(项目中不包含node_modules,下载package.json 中记录的所有软件包)

npm i

下载全局软件包(-g 代表安装到全局环境中)

npm i 软件包名 -g

删除软件包 

npm uni 软件包名

nodemon包

nodemon是全局软件包

作用:替代node 命令,检测代码更改,自动重启程序

#下载命令:
npm i nodemon -g
#运行命令:
nodemon 待执行的目标js 文件

http://www.ppmy.cn/ops/157895.html

相关文章

输入框相关,一篇文章总结所有前端文本输入的应用场景和实现方法,(包含源码,建议收藏)

前言 本篇文章所有的代码,都是在 vue vite ts 项目基础之上实现的,这样也是为了方便大家直接用源码,在开始之前建议大家阅读这篇《零基础搭建 vite项 目教程》。此项目就是这个教程搭建的,本篇文章关于输入框的相关代码是此项目…

分享一款免费的AI大模型字幕工具,支持语音识别、字幕断句、优化、翻译、视频合成等全流程自动处理(支持抖音、B站、油管等国内外多平台视频下载与处理)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 AI字幕工具:全平台视频创作的福音 📒💡 功能与特点:一网打尽⚙️ 使用⚓️ 相关链接 ⚓️📖 介绍 📖 还在为视频加字幕抓狂?🤯 平台限制多,操作又繁琐?别再挠破头皮啦!今天给大家分享的这款AI神器,简直是视频创…

Vue 3 和 <script setup> 的组件,它使用 v-for 来渲染一个嵌套的菜单结构。

Vue 3 和 <script setup> 的组件&#xff0c;它使用 v-for 来渲染一个嵌套的菜单结构。 [{"id": 1,"title": "Navigator One","children": [{"id": 11, "title": "Item One"},{"id": …

将jar制作成docker镜像运行

将jar制作成docker镜像运行 手动编写 Dockerfile 方式 1. 准备工作 确保你已经安装了 Docker&#xff0c;并且 Docker 服务正在运行。 有一个可运行的 JAR 文件&#xff0c;假设文件名为 your-application.jar。 修改springboot配置文件让日志输出到指定目录下文件中 appli…

网络安全知识--网络、网络安全产品及密码产品概述

网络、网络安全产品及密码产品概述 网络、安全产品网络安全关注重点 网络结构 网络设备&#xff1a;交换机、路由器、负载均衡 安全设备&#xff1a; 通信网络安全类:通信安全、网络监测与控制 区域边界安全类&#xff1a;隔离类、入侵防范、边界访问 安全服务&#xff…

ML.NET库学习003:基于时间序列的共享单车需求预测项目解析

文章目录 ML.NET库学习003&#xff1a;基于时间序列的共享单车需求预测项目解析项目主要目的和原理目的原理 项目概述数据来源工具与框架 Program.cs主要功能和步骤1. 数据加载与预处理2. 特征工程3. 模型训练4. 模型评估5. 模型生成 ModelScoringTester.cs分析与解读方法一&am…

JVM速成=。=

JVM跨平台原理 跨平台&#xff1a;一次编译&#xff0c;到处运行 本质&#xff1a;不同操作系统上运行的JVM不一样&#xff0c;只需要把java程序编译成一份字节码文件&#xff0c;JVM执行不同的字节码文件。 Java是高级语言&#xff0c;提前编译一下&#xff08;变成字节码文件…

错误报告:非正常关机引发OTA升级失败:缓存丢失问题的排查与解决

项目背景 该项目涉及在设备端运行的 IoT 客户端&#xff0c;该客户端与服务器之间通过 WebSocket (WS) 保持实时连接&#xff0c;进行指令下发和响应。设备在开机时自动启动客户端&#xff0c;并连接至服务器&#xff0c;等待接收指令。以下是项目的具体行为流程&#xff1a; …