#NodeJS学习笔记
什么是node.js?
node.js是基于谷歌开发的
V8引擎
以及JavaScript
,并且以事件驱动和非阻塞I/O的可以在服务器端运行 JavaScript 代码的执行环境。
node.js有啥用处
- 可以实现对文件的读取与写入删除等管理。
- 可以利用后端框架,开发桌面应用
例如:
基于 Socket 技术,开发类似于聊天室之类的即时通讯项目
使用 Node.js 开发一些实用的工具 或 包
node.js与JavaScript的差别
JavaScript构成为:ECMAscript , DOM , BOM
(其中ECMAscript规定了JavaScript的语言规范,DOM为文档对象模型,顶级对象为
document
,BOM为浏览器对象模型,顶级对象为Window
)node的构成为:ECMAscript核心 , 全局成员 , node自带的核心API模块
其中的全局成员为:
console
,setInterval
,setTimeout
…等核心API是node平台独有的。由于node的服务运行端中,没有浏览器跟HTML的概念,所以也就没有
BOM
跟DOM
模型。
文件读写修改
因为 nodeJS是基于模块化的,所以在使用什么功能之前,就需要在该文件内引入对应的模块。
1、文件内容读取
fs.readFlie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22const fs = require("fs"); //语法:require("模块名")
fs.readFile("./index,js","utf8",function(err,data){
if(err) return console.log(err.message);
console.log(data);
})
```
其中使用 `fs` 模块中的 `readFile` 方法;内有三个参数,参数1:读取文件的路径;参数2:读取文件的编码;参数3:回调函数(回调函数内,有两个参数,参数1:错误函数;参数2:读取回来的文件内容),读取之后进行的操作
- **2、文件内容写入 `fs.writeFile` **
> 用这个方法,虽然可以将内容写入到指定文件内,但是会将目标文件内原有的内容覆盖掉。所以这个方法不推荐使用
```javascript
const fs = require("fs");
fs.writeFile("./test.txt","你今天还好吗?","utf8",function(err){
if(err) return console.log(err.message)
console.log("写入成功")
})
参数解读:写入文件方法,有四个参数:参数1:写入文件的路径;参数2:写入的内容,参数3(默认:utf8):写入文件内的内容编码格式,参数4:回调函数(回调函数有一个参数:参数1:写入文件内容时是否发生错误。)
- *3、文件内容追加
fs.appendFile
*
这个方法的参数跟上面的写入方法一样。
1 | const fs = require("fs"); |
- *4、读取文件信息
fs.stat
*
这个方法能将指定文件内的信息
参数解读:参数1:读物目标的路径;参数2:读取的信息编码;参数3:读取信息之后的回调函数(回调函数有两个参数,参数1:读取的错误信息,参数2:读取的全部信息)。
1 | const fs = require("fs"); |
- 5、读取指定文件的文件名 fs.readdir
1 | //写法1: |
fs.readdir
这个函数中的参数1为要读取的文件URL路径,这个路径是相对于代码的
题目:
将同级目录下的 img 文件夹内的图片实行分类,将 jpg 图片跟 png 图片分别放在对应的文件夹内,并且对每个图片重新对其命名。
思路: 先用 fs.readdir
读取出 img 文件夹下每张图片的名字,然后用 ES6 中的 endsWith
方法,区分是以 jpg 结尾的还是以 png 结尾的,然后分别放在对应的数组中,下一步循环数组,用 fs.readFile
读取img文件夹内对应数组中的每一项图片信息,然后将每一项利用 fs.appendFile
将 img 文件夹内匹配的图片追加到已经建好的文件夹内。
1 | const fs = require("fs"); |
上面的写法可以再次进行精简
1 | const fs = require("fs"); |
当然,上面还是可以精简一些的,利用 fs.copyFile
可以省略掉一步,找到对应的图片信息,然后直接copy到对应的文件夹内,并对其进行改名操作。
fs
文件模块 路径问题
__dirname
可以获得当前文件的路径,但是不包括当前文件的文件名。1
console.log(__dirname);
path.join
:这个方法可以分辨./
以及../
,可以将路径拼接,在 window系统的上显示的是\
分割,在 Mac 等系统中,显示的是/
分割。1
2const psth = require("path"); //要使用 path 模块,需要先引入。
console.log('c:/', 'a', './b', '/c', './d/e', 'f', '../g') // c:\a\b\c\d\e\g;用法:主要用来在使用
fs
文件等模块…操作时,不再依赖相对路径。这样就算运行的文件移动了,那么也不会出错。1
2
3
4
5
6const path = require("psth");
const fs = require("fs");
fs.readFile(path.join(__dirname,"./img"),function(err,data){
if(err) return console.log(err.message);
console.log(data);
})path.extname
:可以获得当前文件的扩展名。1
2
3const path = require("path")
const str = path.join(__dirname,"./1.txt");
console.log(path.extname(Str)) // 输出结果为: .txtpath.basename
:可以获得指定文件的文件名,包括扩展名1
2
3const path = require("path")
const str = path.join(__dirname,"./1.txt");
console.log(path.basename(str)) //输出结果为: 1.txt
评论加载中