Node.js学习笔记1——
1、初识Node.js
1.1、Node.js简介
1.1.1、什么是Node.js
Node.js是一个基于Chrome V8 引擎的JavaScript运行环境。
Node.js的官网地址:https://nodejs.org/zh-cn/
1.1.2、Node.js中的JavaScript运行环境
- V8引擎;
- 内置API:fs、path、http、JS内置对象、querystring、...
注意:
- 浏览器是JavaScript的前端运行环境;
- Node.js是JavaScript的后端运行环境;
- Node.js中无法调用DOM和BOM等浏览器内置API。
1.1.3、Node.js可以做什么
Node.js作为一个JavaScript运行环境,仅仅提供了基础的功能和API。然而,基于Node.js提供的这些基础的功能,很多强大的工具和框架如雨后春笋层出不穷。
- 基于Express框架,可以快速构建Web应用;
- 基于Electron框架,可以构建跨平台的桌面应用;
- 基于restify框架,可以快速构建API接口项目;
- 读写和操作数据库、创建实用的命令行工具辅助前端开发。
1.2、Node.js环境的安装
如果希望通过Node.js来运行JavaScript代码,则必须在计算机上安装Node.js环境才行。
安装包可以从Node.js的官网首页直接下载,进入到Node.js的官网首页(http://nodejs.org/en/),点击绿色的按钮,下载所需的版本后,双机直接安装即可。
1.2.1、区分LTS版本和Current版本的不同
LTS为长期稳定版,对于追求稳定性的企业级项目来说,推荐安装LTS版本的Node.js。
Current为新特性稳定版,对热衷于尝试新特性的用户来说,推荐安装Current版本的Node.js。但是,Current版本中可能存在隐藏的Bug或安全性漏洞,因此不推荐在企业级项目中使用Current版本的Node.js。
1.2.2、查看已安装的Node.js版本号
打开终端,在终端输入命令node -v后,按下回车键,即可查看已安装的Node.js的版本号。
Windows系统中快速打开终端的方式:使用快捷键(Win + R)打开运行面板,输入cmd后直接回车,即可打开终端。
1.2.3、什么是终端
终端(Terminal)是专门为开发人员设计的,用于实现人机交互的一种方式。
1.3、在Node.js环境中执行JavaScript代码
- 打开终端;
- 输入node 要执行的文件路径。
1.3.1、终端中的快捷键
在Windows的powershell或cmd终端中,我们可以通过如下快捷键,来提高终端的操作效率:
- 使用↑键,可以快速定位到上一次执行的命令;
- 使用tab键,可以快速补全路径;
- 使用esc键,能够快速清空当前已输入的命令;
- 使用cls命令,可以清空当前终端内容。
2、fs文件系统模块
2.1、什么是fs文件系统模块
fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。例如:
- fs.readFile()方法,用来读指定文件中的内容;
- fs.writeFile()方法,用来向指定的文件中写入内容;
如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用如下的方式先导入它:
const fs = require("fs");
2.2、读取指定文件中的内容
2.2.1、fs.readFile()
-语法格式:
fs.readFile(path[, options], callback);
path:必须参数,字符串,表示文件的路径;
options:可选参数,表示以什么编码格式来读取文件;
callback:必选参数,文件读取完成后,通过回调函数拿到读取的结果。
-示例:以utf9的形式,读取指定文件的内容,并打印err和dataStr的值
const fs = require("fs");
fs.readFile("./files/11.txt", "utf8", function(err, dataStr) {
console.log(err);
console.log("------");
console.log(dataStr);
});
2.2.2、判断文件是否读取成功
可以判断err对象是否为null,如果为null,说明读取成功;反之则读取失败。
const fs = require("fs");
fs.readFile("./files/11.txt", "utf8", function(err, dataStr) {
if(err) {
return console.log('文件读取失败!' + err.message);
}else {
console.log('文件读取成功!' + dataStr)
}
});
2.3、向指定文件中写入内容
2.3.1、fs.writeFile()
-语法格式
fs.writeFile(file, data[, options], callback);
file:必选参数,需要指定一个文件路径字符串;
data:必选参数,表示要写入的内容;
options:可选参数,表示以什么格式写入文件内容,默认值是utf8;
callback:必选参数,文件写入完成后的回调函数。
-示例代码
const fs = require('fs');
fs.writeFile('./files/2.txt', 'Hello Node.js', function (err) {
console.log(err);
});
2.3.2、判断文件是否写入成功
可以判断err对象是否为null,如果为null,说明写入成功;反之则写入失败。
2.4、fs模块 - 路径动态拼接错误的问题
在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题。
原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接出被操作文件的完整路径。
解决方案:在使用fs模块操作文件时,直接提供完整的路径,不要提供./或../开头的相对路径,从而防止路径动态拼接的问题。但移植性非常差,不利于维护。
改进方案:
// __dirname 表示当前文件所处的目录
console.log(__dirname);
const fs = require('fs');
fs.readFile(__dirname + '\\files\\2.txt',
'utf8', function (err, dataStr) {
if(err) {
return console.log('读取文件失败!' + err.message);
}
console.log('读取文件成功!' + dataStr);
});
3、path路径模块
3.1、什么是path模块
path模块是Node.js官方提供的、用来处理路径的模块,它提供了一系列的方法和属性,用来满足用户对路径的处理需求。例如:
- path.join()方法,用来将多个路径片段拼接成一个完整的路径字符串;
- path.basename()方法,用来将路径字符串中,将文件名解析出来。
如果要在JavaScript代码中,使用path模块来处理路径,则需要使用如下的方式先导入它:
const path = require('path');
3.2、路径拼接
3.2.1、path.join()
使用path.join()方法,可以吧多个路径片段拼接为完整的路径字符串。
-语法格式;
path.join([...paths]);
paths<string>路径片段的序列;
返回值:<string>
-示例
const path = require('path');
const pathStr = path.join('/a', '/b/c', '../', './d', 'e')
console.log(pathStr) //输出 \a\b\d\e
const pathStr2 = path.join(__dirname, './files/2.txt')
console.log(pathStr2) //输出 当前文件所处目录\files\2.txt
注意:今后凡是涉及到路径拼接的操作,都要使用path.join()方法进行处理,不要直接使用+进行字符串的拼接。
3.3、获取路径中的文件名
3.3.1、path.basename()
-语法格式
path.basename(path)