Node.js(一)

Node.js 第一天

一、Node.js的相关概念

1、什么是 Node.js [http://nodejs.cn/]

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境1

2、Node.js 运行环境

主要包含了 V8 解析引擎 和 内置的 API 接口

3、注意:

  1. Node.js 中并不包含浏览器相关的 BOM 和 DOM 接口, 不能使用 document, window 这些对象

  2. Node.js 是 Javascript 在后端的运行环境, 浏览器是 Javascript 在前端的运行环境

二、Node.js作用

1、Node.js 在前端中的应用

  1. 制作一些实用的命令行工具

  2. 基于 express 框架快速构建 Web 服务

  3. 基于 electron 框架构建桌面应用程序

  4. 基于 restify 框架构建 API 接口项目

  5. 微服务和中间件

2、Node.js 的主要特点

  1. 事件驱动编程

  2. 非阻塞异步 I/O 处理

3、Node.js 的学习方式

学习的路径主要是: 内置 API 模块的使用 + 第三方 API 模块的使用

三、Node.js安装

方式一:打开官网的安装页 (https://nodejs.org/en/download/), 下载对应操作系统的安装包

方式二:使用 nvm 命令安装不同版本的 Node 软件

  • 检测版本

    在终端执行 node -v / node –version 命令检查是否安装成功

四、在node中运行js文件

1、在 Node 中运行 js 文件的方法

  1. 打开 gitbash 终端或直接在vscode中拉起终端

  2. 执行命令 node js的文件路径

2、了解终端中的常用快捷键

(1) 使用 ↑ 箭头可以直接返回上一条运行的命令

(2) 使用 Tab 可以快速补全剩下的文件路径

(3) 使用 CTRL + U 可以清空当前输入的命令

(4) 使用 clear 可以清空可视区命令

(5) 使用ctrl+左右箭头每次移动一个字节光标

五、fs文件系统模块

1、读文件: fs.readFile()

fs.readFile(路径, 编码, 回调函数)

注意:nodejs 的回调函数参数中,永远是“错误优先”

1
2
3
4
5
6
7
8
9
10
11
12
// 1. 引入模块: require('模块名')
const fs = require('fs');

// 2. 调用方法来读取文件
fs.readFile('./hello.js', 'utf8', (err, res) => {
console.log(err);
// 读取成功err就为null
// res显示读取的文件内容代码
console.log('---');
// res就是读取的文件
console.log(res);
})

2、写文件: fs.writeFile()

  • writeFile(路径,写入的内容,回调函数)

  • 注意:如果不存在这个文件,会直接创建一个新的文件

  • 写入的内容会直接覆盖原来的内容

1
2
3
4
5
6
7
8
9
10
11
12
// 引入fs模块
const fs = require('fs')

// 调用方法向文件中写入内容
fs.writeFile('D:/world123.txt', 'hello 123', (err) => {
// 写入失败,err为错误对象
// 写入成功,err为null
if (err) {
return console.log(`写入文件失败${err.message}`);
}
console.log(('写入文件成功'));
})

3、js文件的相对路径

  1. Node 中的相对路径

    在 js 文件中的相对路径并不是相对自身文件所处目录, 而是相对当前执行 node 命令的所处目录

  2. 总结

    在 Node.js 中使用完整的绝对路径代替不稳定的相对路径

4、内置变量:__dirname

每个js文件都内置了一个变量__dirname,它会返回当前文件的绝对路径

1
2
3
4
5
6
7
8
9
// 使用__dirname优化我们读取文件的路径
const fs = require('fs');

fs.readFile(__dirname + '/hello.js', 'utf8', (err, res) => {
if (err) {
return console.log(`读取失败:${err.message}`);
};
console.log('读取成功');
})

六、path路径模块

1、多个路径片段进行组合: path.join()

1
2
3
4
// 引入path路径模块
const path = require('path');

console.log(path.join('/a/b/c', './d', '../f', 'e')); // /a/b/c/f/e

2、获取路径中的文件名称: path.basename()

1
2
3
4
5
6
7
8
9
const { basename } = require('path');
const path = require('path');

// 调用方法 basename
// 返回值: 路径的最后一部分,如果添加了第二个参数,那么就直接返回文件名
const name = path.basename('/c/d/e/123.txt', '.txt');
console.log(name);//123

console.log(path.basename(__dirname)); // js

3、获取路径的拓展名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const path = require('path');
const fs = require('fs');
// 调用方法:extname('路径')
// 返回值:返回路径最后一部分的拓展名(后缀名)

console.log(path.extname('./A/B/C.json'));//.json
const filePath = path.join(__dirname, 'world.txt');
fs.readFile(filePath, 'utf8', (err, res) => {
// 使用文件后缀判断文件类型
if (path.extname(filePath) == '.txt') {
console.log('正在读取纯文本内容');
} else if (path.extname(filePath) == 'js') {
console.log('正在读取js脚本内容');
}
})

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!