Node
- node是对ES标准的实现,Node也是一个JS引擎
- 通过Node 可以使 JS 代码在服务器端执行
- Node 仅仅是对 ES 标准进行了实现,所以在Node中不包含DOM 和 BOM
- Node 可以使用所有的内建对象 String Number Boolean Math Date Function Object Array RdgExp 也可以使用 console 和定时器(setTimeout、setInterval)但是不能使用 DOM 和 BOM
- Node 可以在后台来编写服务器,编写的服务器是单线程的服务器
- cmd命令行执行 js 文件,node ***.js 执行
readFile方法读取文件内容
- 导入 fs 模块,来操作文件
- 使用 fs.readFile() 方法读取文件
- 三个参数,第三个参数可选,参数1:读取文件的存放路径;参数2:读取文件时候采用的编码格式,一般默认是 utf8;参数3:回调函数,拿到读取文件失败和成果的结果,err、dataStr
const fs = require('fs')
fs.readFile('./file/11.text', 'utf8', function(err, dataStr) {
console.log(err)
console.log(dataStr)
})
- 判断文件是否读取成功,只需要判断 err 的值是否为true
writeFile方法写入文件内容
- 导入 fs 模块
- 使用 fs.writeFile() 方法写入文件
- 四个参数,第三个参数可选,参数一:写入文件的存放路径;参数2:写入文件的内容;参数三:写入文件的编码格式,默认 utf8;参数四:回调函数
const fs = require('fs)
fs.writeFile('./file/2.txt', 'abddg', 'utf8可不写', function(err) {
console.log(err)
})
- 判断写入是否成功,还是判断 err 的值是否为 true
- fs.writeFile() 方法只能创建文件,不能创建路径,使用此方法写入的新的内容会覆盖旧的内容
文件路径拼接问题
- cmd运行 js 文件时会存在目录拼接问题,因为默认是在当前目录下直接动态拼接 js 文件写入的路径
- 那么解决方法一呢就是直接在 js 文件写一个绝对路径,但是问题就是移植性差,不易维护
- 解决方法二,就是利用 node 文件提供的 __dirname,代表的就是当前文件所在的目录,后边直接拼接相对路径就可以
fs.readFile(__dirname + '/files/1.txt', 'utf8', function(err, dataStr) {
if(err){
return console.log('读取文件失败' + err.message)
}
console.log('读取文件成功', + dataStr)
})
path路径 path.join() 路径拼接
- 导入 path 模块
- 使用 path.join() 方法拼接多个路径片段, …/ 会抵消前面的一个路径
const path = require('path')
const pathStr = path.join('/a', '/b/c', '../', './d', 'e')
console.log(pathStr)
- 可以将上边的使用 __dirname 的拼接路径优化
const path = require('path')
const fs = require('fs')
fs.readFile(path.join(__dirname, '/file/1.txt'), 'utf8', function(err, dataStr) {
if(err){
return console.log('读取文件失败' + err.message)
}
console.log('读取文件成功', + dataStr)
})
path.basename() 获取路径中的文件名
- 同样是引入 path 模块
- 只写一个参数那么就可以获得完整的文件名
- 第二个参数可以移除文件的扩展名,也就是后缀不输出,index.html 只输出 index
const path = require('path')
const fpath = 'a/b/c/index.html'
const fullName = path.basename(fpath)
const nameWithoutExt = path.basename(fpath, '.html')
path.extname() 获取路径中文件扩展名
- 传入参数只需要传一个 path 路径,会返回文件的扩展名
const path = require('path')
const fpath = 'a/b/c/index.html'
const pathExt = path.extname(fpath)