引言----学习node.js的目的就是帮助大家打开服务端这个黑盒子,只有懂了解服务端才能更好配合服务端开发人员进行协同开发
1.1回顾与思考
1.为什么javaScript可以在浏览器中被执行?
2.为什么javaScript可以操作DOM和BOM
3.浏览器中的javaScript 运行环境
运行环境是指代码正常运行所需的必要环境。
4.使用javaScript能否做后端?
-
可以,借助node.js可以实现。
一,为什么要学习 node.js?
-
企业需求
-
具有服务端开发经验更好
-
front-end 前端
-
back-end 后端
-
全栈开发工程师(幽默点说是”全干“)
二,Node.js 是什么?
(1) Node.js 是一个javaScript 运行时环境 (简单说node.js可以解析和执行javaScript代码)
1.Node.js 中的javaScript 运行环境
三,Node 可以做什么
Node
作为一个 JavaScript 的运行环境,仅仅提供了基础的功能和 API
。然而,基于 Node
提供的这些基础能,很多强大 的工具和框架如雨后春笋,层出不穷,所以学会了 Node
,可以让前端程序员胜任更多的工作和岗位
-
基于 Express 框架,可以快速构建
Web
应用 -
基于 Electron 框架,可以构建跨平台的桌面应用
-
基于 restify 框架,可以快速构建
API
接口项目 -
读写和操作数据库、创建实用的命令行工具辅助前端开发、etc…
四, 区分 LTS
版本和 Current 版本的不同
-
LTS
为长期稳定版,对于追求稳定性的企业级项目来说,推荐安装LTS
版本的Node.js
-
Current
为新特性尝鲜版,对热衷于尝试新特性的用户来说,推荐安装Current
版本的Node.js
。但是,Current
版本中可能存在隐藏的Bug
或安全性漏洞,因此不推荐在企业级项目中使用Current
版本的Node.js
五, 什么是终端
-
终端(英文:Terminal)是专门为开发人员设计的,用于实现人机交互的一种方式
-
作为一名合格的程序员,我们有必要识记一些常用的终端命令,来辅助我们更好的操作与使用计算机
1.1 如何快速的打开终端
(1)在文件夹地址栏区域,输入cmd,按回车键。
(2)按住鼠标shif,同时点击鼠标左键,在此处打开命令窗口(powershell)。
1.2 终端中的快捷键
在 Windows
的 powershell
或 cmd
终端中,我们可以通过如下快捷键,来提高终 端的操作效率:
-
使用
↑
键,可以快速定位到上一次执行的命令 -
使用
tab
键,能够快速补全路径 -
使用
esc
键,能够快速清空当前已输入的命令 -
输入
cls
命令,可以清空终端
六,fs
文件系统
1 .1 fs
文件系统模块
1.fs
模块是 Node.js
官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求
2 .2 读取指定文件中的内容
2.1 fs.readFile()
的语法格式(读取内容)
参数解读:
-
参数1:必选参数,字符串,表示文件的路径
-
参数2:可选参数,表示以什么编码格式来读取文件
-
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果
2.2 判断文件是否读取成功
-
结果是 null ,说明文件读取成功
-
如果不为 null,说明文件读取失败
-
const fs = require('fs')
fs.readFile('./files/1.txt','utf8',function(err,dataStr){
if(err){
return console.log('读取文件失败'+err.message);
}
console.log('读取文件失败'+dataStr);
})
2.3fs.writeFile()
的示例代码(写入内容)
参数解读:
3.3 判断文件是否写入成功
const fs = require('fs')
fs.writeFile('./files/2.txt','abcdok',function(err){
if(err){
return console.log('文件写入失败'+err.message)
}
console.log(文件写入成功);
})
4.4 fs
整理考试成绩案例
4.4.1 需求分析
使用 fs
文件系统模块,将素材目录下成绩 .txt
文件中的考试数据,整理到 成绩-ok.txt
文件中,整理前,成绩.txt
文件中的数据格式如下:
小红=99 小白=100 小黄=70 小黑=66 小绿=88
整理完成之后,希望得到的 成绩-ok.txt
文件中的数据格式如下:
小红: 99
小白: 100
小黄: 70
小黑: 66
小绿: 88
4.4.2 实现步骤
1.读取成绩文件
const fs = require('fs')//导入fs模块
//调用fs.readFile()读取文件的内容
fs.readFile('./files1/成绩-ok.txt','utf8',function(err,dataStr){
//判断是否读取成功
if(err){
return console.log('读取文件失败'+err.message)
}
console.log('读取文件成功'+dataStr)
})
2.处理成绩
const fs = require('fs')//导入fs模块
//调用fs.readFile()读取文件的内容
fs.readFile('./files1/成绩-ok.txt','utf8',function(err,dataStr){
//判断是否读取成功
if(err){
return console.log('读取文件失败'+err.message)
}
//1.先把成绩的数据,按照空格进行分割
const arrOld = dataStr.split('')
//2.循环分割后的数组,对每一项数据,进行字符串的替换操作
const arrNew = []
arrOld.forEach(item =>{
arrNew.push(item.replace('=',':'))
})
//3.把新数组中的每一项,进行合并,得到一个新的字符串
const newStr = arrNew.join('\r\n')
console.log(newStr);
})
3.将整理好的成绩写入到新文件
const fs = require('fs')//导入fs模块
//调用fs.readFile()读取文件的内容
fs.readFile('./files1/成绩-ok.txt','utf8',function(err,dataStr){
//判断是否读取成功
if(err){
return console.log('读取文件失败'+err.message)
}
//1.先把成绩的数据,按照空格进行分割
const arrOld = dataStr.split('')
//2.循环分割后的数组,对每一项数据,进行字符串的替换操作
const arrNew = []
arrOld.forEach(item =>{
arrNew.push(item.replace('=',':'))
})
//3.把新数组中的每一项,进行合并,得到一个新的字符串
const newStr = arrNew.join('\r\n')
//4.调用fs.writeFile()方法,把处理完毕的成绩,写入到新文件中
fs.writeFile('./files1/成绩-ok.txt',newStr,function(err){
if(err){
return console.log('写入文件失败'+err.message)
}
console.log('成绩写入成绩');
})
})
七. fs
路径问题
1. fs
模块路径动态拼接的问题
在使用 fs
模块操作文件时,如果提供的操作路径是以 ./
或 ../
开头的相对路径时,很容易出现路径动态拼接错误的问题
原因:代码在运行的时候,会以执行 node 命令时所处的目录
,动态拼接出被操作文件的完整路径
解决方案:在使用 fs
模块操作文件时,直接提供完整的路径,不要提供 ./
或 ../
开头的相对路径,从而防止路径动态拼接的问题
-
使用完整路径替换相对路径
在
js
里 \ 代表转议,\ \ 代表斜线使用完整路径替换相对路径,但这种写法移植性比较差,不利于后期的维护
const fs = require('fs') fs.readFile('C:\\Users\\Lenovo\\Desktop\\code.js基础\\node.js第一天\\files1\\1.txt','utf8',function(err,dataStr){ if(err){ return console.log('获取文件失败'+err.message) } console.log('获取文件成功'+err.message) })
-
使用
__dirname
解决路径拼接问题__dirname 属性 Node 给提供的一个全局的属性,表示当前文件所处的目录 const fs = require('fs') // __dirname 属性解决路径拼接问题 fs.readFile(__dirname + '/files1/1.txt', 'utf8', function (err, data) { // 判断 err 对象是否为 null if (err) { return console.log('文件读取失败:', err.message) } console.log('文件读取成功,内容是:', data) })
-
八,path
路径模块
1.什么是 path 路径模块
-
path
模块是Node.js
官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求,例如:-
path.join()
方法,用来将多个路径片段拼接成一个完整的路径字符串 -
path.basename()
方法,用来从路径字符串中,将文件名解析出来
-
2.如果要在 JavaScript 代码中,使用 path 模块来处理路径,则需要使用如下的方式先导入它
const path = rquire('path')
2.path.join()
的语法格式
使用 path.join()
方法,可以把多个路径片段拼接为完整的路径字符串,语法格式如下
path.join([...paths])
../
有抵消前面一个路径的功能,一个./
没有这个功能
-
path.basename()
的语法格式使用
path.basename()
方法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名,语法格式如下
path.basename(path[,ext])
参数解读:
-
path <string> 必选参数,表示一个路径的字符串
-
ext <string> 可选参数,表示文件扩展名
-
返回: <string> 表示路径中的最后一部分
1.1 path.basename()
的代码示例
使用 path.basename()
方法,可以从一个文件路径中,获取到文件的名称部分
2.2path.extname()
的语法格式
path.extname(path)
参数解读:
-
path
<string >必选参数,表示一个路径的字符串 -
返回: <string> 返回得到的扩展名字符串
3.path.extname()
的代码示例