nodejs是一个基于chromeV8引擎的JavaScript的运行环境
nodejs中的内置api:
fs path http JS内置对象 querystring …
注释:
浏览器是JavaScript的前端运行环境
nodejs是JavaScript的后端运行环境
nodejs 中无法调用DOM和BOM等等浏览器内置api
基于Epress框架,可以快速构建web应用
基于Electron框架,可以构建跨平台的桌面应用
…
会JavaScript 就能学会nodejs
JavaScript基础语法+ Nodejs内置api模块 (fs path http等) + 第三方API模块(express mysql等)。
打开终端 在终端中输入命令node-v后 按下回车键 即可查看已安装的nodejs的版本号
终端是专门为开发人员设计的 用于实现人机交互的一种方式
作为一名合格的程序员 有必要记忆一些常用的终端命令
1 打开终端
2 输入node + 要执行的js文件
js文件:
console.log("hello world")
终端命令:
PS D:\前端代码\js练习文件夹> node 1.js
hello world
powershell是windows里新的终端 是cmd的升级版
1 上箭头 快捷生成历史上次的命令
2 使用tab键 能够快速补全文件路径
3 使用esc键 能够快速清空当前命令行中的命令
4 输入cls命令 可以清空终端当前页面所有的内容
fs模块是nodejs官方提供的 用来操作文件的模块
fs.readFile()方法:用来读取指定文件中的内容
fs.writeFile()方法:用来向指定的文件中写入内容
如果要使用fs模块需要先导入它
const fs = require('fs')
// 使用require方法导入模块
fs.readFile()方法的语法格式
fs.readFile(path[,options],callback)
//方括号为可选参数
参数1:必选参数 字符串 表示文件的路径
参数2:可选参数 表示以什么编码格式来读取文件
参数3: 必选参数 文件读取完后 通过回调函数拿到读取的结果
实例:
// 导入fs模块
const fs = require('fs')
// 调用fs.readfile()方法来读取文件
//参数1 读取文件的存放路径
//参数2 读取文件时候采用的编码格式 一般默认指定utf8
//参数3 回调函数,拿到读取失败和成功的结果 err dataStr
fs.readFile('./file/11.txt','utf-8',function(err,dataStr){
//打印失败的结果
console.log(err)
//打印成功的结果
console.log('------')
console.log(dataStr)
})
如果读取成功则 err的值为null
如果读取失败则 err的值为一个错误对象 dataStr的值为undifined
可以判断err对象是否为null 从而知晓文件读取的结果
if (err){
return console.log(“读取失败”,err.message)
}else{
return console.log("读取成功",dataStr)
}
使用fs.write()方法,可以向指定文件写入内容
fs.writeFile(file,data,[option],callback)
参数1 必选参数 需要指定一个文件路径的字符串 表示文件的存放路径
参数2 必选参数 表示要写入的内容
参数3 可选参数 表示以什么格式 写入文件内容 默认值是utf8
参数4 必选参数 文件写入完成后的回调函数
实例代码:
// 导入fs文件系统模块
const fs = require('fs‘)
// 调用fs.writeFile()方法 写入文件内容
//参数1 表示文件的存放路径
//参数2 表示要写入的内容
//参数3 回调函数
fs.writeFile('./11.txt','hello world',function(err){
console.log(err)
})
如果文件写入成功则err的值等于null
如果文件写入失败则err的值会是一个错误对象
if (err){
return console.log(“写入失败”,err.message)
}else{
return console.log("写入成功")
}
使用fs模块 将目录下成绩txt文件中的考试数据,整理到新文件中
原文件内容
实现步骤:
1 导入fs文件系统模块
2 使用fs.readFile()方法 读取文件
3 判断文件是否处理成功
4 读取成功后处理数据
5 把处理完成后的文件写入新文件内
const fs = require('fs')
fs.readFile('./成绩.txt','utf-8',function(err,dataStr){
if (err){
return console.log('读取失败')
}else{
return console.log(’读取成功‘,dataStr)
}
//先把成绩数据 按空格进行分割
const arrOld = dataStr.split('')
console.log(arrOld)
//循环分割后的数组 对每一项数据 进行字符串的替换操作
var arrNew = [];
arrOld.forEach(item =>{
arrNew.push(item.replace('=’,‘:’)) //将等号替换为冒号
})
//将新数组的每一项 进行合并得到一个新的字符串
var newStr = arrNew.join('\r\n')
console.log(newStr)
//调用fs.writeFile()方法把处理完毕的成绩写入到新文件中
fs.writeFile('./成绩.txt',newStr,function(err){
if (err){
return console.log('写入失败')
}else{
return console.log(成绩写入成功')
}
})
})
在使用fs模块是 如果提供的文件是相对路径是 很容易出现动态拼接的问题
原因:程序会根据执行node时所处的目录来动态拼接出文件的完整路径
解决办法:可以直接提供一个完整的文件存放路径 以防止路径动态拼接的问题
使用完整路径的缺点:移植性非常差 不利于维护
//__dirname 表示当前文件所处的路径
console.log(__dirname)
优化代码
const fs = require('fs')
fs.readFile(__dirname +'成绩.txt','utf-8',function(err,dataStr){
if (err){
return console.log('读取失败')
}else{
return console.log(’读取成功‘,dataStr)
}
//先把成绩数据 按空格进行分割
const arrOld = dataStr.split('')
console.log(arrOld)
//循环分割后的数组 对每一项数据 进行字符串的替换操作
var arrNew = [];
arrOld.forEach(item =>{
arrNew.push(item.replace('=’,‘:’)) //将等号替换为冒号
})
//将新数组的每一项 进行合并得到一个新的字符串
var newStr = arrNew.join('\r\n')
console.log(newStr)
//调用fs.writeFile()方法把处理完毕的成绩写入到新文件中
fs.writeFile(__dirname + '/成绩.txt',newStr,function(err){
if (err){
return console.log('写入失败')
}else{
return console.log(成绩写入成功')
}
})
})