Node.js
基于Chrome V8引擎的JavaScript运行环境
node 文件名.js
运行一个js文件
FS 模块
文件系统模块
导入模块
const fs = require('fs');
// 或者是针对默认暴露的方式引入
import fs from "fs";
读取文件
fs.readFile(path[, options], callback)
-
参数1为路径字符串(必选)
-
参数2使用
[]
包括起来的,表示这个参数可选,为字符串,将以这个参数作为编码格式读取文件 -
参数3为必选参数,表示文件读取完成后通过处理的回调函数
参数3为回调函数,需要两个参数
- 当文件存在时,参数1的值为
null
,参数2的值为文件内容 - 当文件不存在时,参数1为错误对象,参数2为
undefined
const fs = require("fs");
fs.readFile("../file/11.txt", "utf-8", (a, b) =>{
console.log(a);
console.log("---");
console.log(b);
});
无论读取成功或者失败,都会调用回调函数
所以说判断文件是否读取成功只需要判断回调函数的第一个参数是否为null
const fs = require("fs");
fs.readFile("../file/1.txt", "utf-8", (a, b) =>{
if (a != null){
return console.log("文件读取失败")
}
console.log("文件读取成功,文件内容为:", b);
});
写入文件
fs.writeFile("文件路径字符串", "文件内容", "字符集编码字符串", 回调函数)
- 参数1必须标明
- 参数2必须标明
- 参数3可不写,默认为
utf-8
- 回调函数表示文件写入完成后调用的函数
回调函数需要1个参数,如果写入成功,这个参数的值为null
,如果写入失败,这个参数将会是一个对象
const fs = require("fs");
fs.writeFile("../file/2.txt", "你好,nodejs!", (e) => {
if (e === null){
return console.log("写入成功");
}
console.log("写入失败,详情信息为:", e);
})
path路径模块
const path = require("path");
path.basename("路径")
在路径中获取文件名
path.join("参数1", ..., "参数n")
返回string,会将多个参数合并为一个路径
../
会抵消掉一级路径

http模块
const http = require("http");
大体的步骤:
- 引入
http
模块 - 创建
server
实例 - 使用
server.on()
绑定request
事件 - 启动服务器并指定端口
// 导入http模块
const http = require("http");
// 创建http实例
const server = http.createServer();
// 绑定request事件
server.on("request", (request, response) => {
console.log("访问服务器了");
})
//启动服务器
server.listen(3143, () => {
console.log("启动服务器后的回调函数")
})
// 导入http模块
const http = require("http");
// 创建http实例
const server = http.createServer();
// 绑定request事件
server.on("request", (request, response) => {
console.log("访问服务器了");
console.log("请求地址:",request.url);
console.log("请求方式:",request.method);
// 设置响应头,解决中文乱码
response.setHeader("Content-Type", "text/html; charset=utf-8");
// 向服务器返回内容
response.end("<h1>响应</h1>");
})
//启动服务器
server.listen(3143, () => {
console.log("启动服务器后的回调函数")
})
模块化
模块分类:
- 内置模块,例如之前所用到的都是内置模块
- 自定义模块,用户创建的每个js文件都是一个自定义模块
- 第三方模块
模块的加载
内置模块、第三方模块:
- 直接使用
require("模块名")
自定义模块:
- 需要
require("路径/模块名")
,需要写入路径
module对象
使用这个对象可以查看一些信息
console.log(module);
Module {
id: '.',
path: 'C:\\Users\\singx\\OneDrive\\前端\\Node\\hello1\\js',
exports: {},
filename: 'C:\\Users\\singx\\OneDrive\\前端\\Node\\hello1\\js\\1.js',
loaded: false,
children: [],
paths: [
'C:\\Users\\singx\\OneDrive\\前端\\Node\\hello1\\js\\node_modules',
'C:\\Users\\singx\\OneDrive\\前端\\Node\\hello1\\node_modules',
'C:\\Users\\singx\\OneDrive\\前端\\Node\\node_modules',
'C:\\Users\\singx\\OneDrive\\前端\\node_modules',
'C:\\Users\\singx\\OneDrive\\node_modules',
'C:\\Users\\singx\\node_modules',
'C:\\Users\\node_modules',
'C:\\node_modules'
]
}
其中exports
属性中的内容为暴露出的对象
如果想要对外共享对象,那么定义变量/函数/对象时,需要module.exports.变量名 = xxx;
由于module.exports
写起来比较复杂,因此nodejs
提供了exports
对象,module.exports
和exports
指向的是同一个对象,两者都可以随便改变指向,最终暴露出来的变量还是以module.exports
为准
在require
一个模块时,得到的永远都是module.exports
中的对象
common
读音为ˈkɑːmən
,中文为常见
Nodejs遵循CommonJS
模块化规范
包和NPM
Nodejs中的第三方模块称为包
NPM全称为Node Package Manager
安装包
npm install 包名
npm i 包名
在当前项目下安装包后,会自动生成文件夹node_modules
、文件package-lock.json
这些文件中保存着依赖以及包的引入信息,npm
会自动维护,一般不需要修改
安装指定版本的包
npm i 包名@版本号
package.json
npm
规定在项目的根目录下必须要有这个文件,这个文件中保存着项目的相关信息
- 版本号
- 描述
- 那些包在开发时用得到
- 那些包在部署时用得到
快速创建package.json
命令,一般在没有写任何内容时创建此文件,只需要写一次
npm init -y
-
此命令只能在英文目录下执行,并且不能包含空格
-
当使用
npm
安装包的时候,将会自动的在这个文件中放入包的名称、版本 -
在创建新的这个文件时,不会有
dependencies
属性,当执行过npm i 包名
后会自动的创建 -
当误删
node_modules
文件夹或者打开了一个剔除所有的依赖的项目时需要再次引入依赖包(前提时存在package.json
),此时只需要运行:-
npm install
-
npm i
-
以上命令中的任何一个就可以安装所有的依赖
-
-
一个标准的
npm
包中的package.json
文件中必须包含name
、version
、main
属性,这三个属性代表着包的名字、版本号、包的入口
卸载包
卸载包没有任何简写形式,有一种方式:
npm uninstall 包名
卸载后会自动的在package.json
的dependencies
属性中移除这个包,并在node_modules
文件夹中删除这个依赖
仅在开发期间使用的依赖
如果一些包仅在开发期间使用,可以将这些包移至devDependencies
属性中,如果开发期间和上线期间都能用得到,则需要放到dependencies
属性中
写法:
npm i 包名 -D
包名和最后的参数的顺序位置没有特别的要求,例如以下的写法也是允许的
npm i -D 包名
以上写法是简写形式,完整写法为
npm install 包名 --save-dev
包的分类
npm
所下载的包的种类有两种,分别是项目包和全局包
项目包
- 被安装到
node_modules
文件夹中的包 - 又分为两类:
- 开发依赖包(
devDependencies
属性中包) - 核心依赖包(
dependencies
属性中包)
- 开发依赖包(
全局包
在执行npm i 包名
时添加了-g
参数所安装的包为全局包,例如
npm i 包名 -g
在Windows系统中,全局包会被安装到C:\Users\user\AppData\Roaming\npm\node_modules
中
卸载全局包
npm uninstall 包名 -g
- 只有工具包才有必要全局安装
- 工具包提供了一些终端命令
一些全局包举例:
i5ting_toc
将markdown
文件转换为html
文件
Q.E.D.