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

Node.js笔记入门篇

黑马程序员视频地址:

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简介


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

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

npm init -y

下载本地软件包

npm i 软件包名称

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

npm i

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

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

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

删除软件包 

npm uni 软件包名

http://www.kler.cn/a/541386.html

相关文章:

  • 【AI学习】关于 DeepSeek-R1的几个流程图
  • PyQt学习记录
  • 半导体制造工艺讲解
  • GitHub分支与标签完全指南:从入门到高效管理
  • 基于html写一个音乐动态爱心盒子有音乐和导航基本功能实现
  • 2025web寒假作业二
  • 【从零开始入门unity游戏开发之——C#篇54】C#补充知识点——元组(Tuple)
  • 【SpringBoot实现全局API限频】 最佳实践
  • AWS Savings Plans 监控与分析工具使用指南
  • 开源AI终端工具Wave Terminal从安装到远程连接内网服务器全流程攻略
  • 深度整理总结MySQL——MySQL加锁工作原理
  • 【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案
  • 安卓基础(第一集)
  • 嵌入式音视频开发(一)ffmpeg框架及内核解析
  • hive数仓的分层与建模
  • 食品饮料生产瓶颈?富唯智能协作机器人来 “破壁”
  • 使用 DeepSeek 进行图像描述:多模态 AI 技术实践
  • 【Linux】Linux命令:crontab
  • SpringBoot和Spring主要区别
  • React Vite 项目增加 eslint 和 prettier
  • 【网络法医】基线取证和常见反取证技术
  • 【DeepSeek】Deepseek辅组编程-通过卫星轨道计算终端距离、相对速度和多普勒频移
  • Ajax-介绍
  • 深度学习|表示学习|Layer Normalization 全面总结|24
  • CSS入门学习笔记(二)
  • 客户端渲染和服务端渲染