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.join | path.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 软件包名