Node第一天学习总结—— Node.js与内置模块(Node.js 简介、fs文件系统模块、path 路径模块、http模块)

(一)Node.js简介

1. Node.js

Node.js是一个基于 Chrome V8 引擎的 JavaScript运行环境

Node.js 的官网地址: https://nodejs.org/zh-cn/

2. Node.js中的 JavaScript 运行环境

在这里插入图片描述

3. Node.js 可以做什么

Node.js作为一个JavaScript 的运行环境,仅仅提供了基础的功能和 API。然而,基于Node.js 提供的这些基础能,很多强大的工具和框架如雨后春笋,层出不穷,所以学会了Node.js,可以让前端程序员胜任更多的工作和岗位:

基于 Express框架(http://www.expressjs.com.cn/),可以快速构建 Web 应用

基于Electron 框架(https://electronjs.org/),可以构建跨平台的桌面应用

基于 restify框架(http://restify.com/),可以快速构建 API 接口项目

读写和操作数据库、创建实用的命令行工具辅助前端开发、etc…

4.Node.js怎么学

浏览器中的JavaScript学习路径

JavaScript基础语法 + 浏览器内置API(DOM + BOM) + 第三方库(jQuery、art-template 等)

Node.js的学习路径

JavaScript基础语法 + Node.js内置 API 模块(fs、path、http等)+ 第三方API 模块(express、mysql 等)

5. Node.js 环境的安装

如果希望通过 Node.js来运行Javascript代码,则必须在计算机上安装Node.js环境才行。

安装包可以从Node.js的官网首页直接下载,进入到 Node.js 的官网首页(https://nodejs.org/en/),点击

绿色的按钮,下载所需的版本后,双击直接安装即可。

在这里插入图片描述

区分 LTS 版本和 Current 版本的不同

  • LTS为长期稳定版,对于追求稳定性的企业级项目来说,推荐安装 LTS 版本的 Node.js

  • Current为新特性尝鲜版,对热衷于尝试新特性的用户来说,推荐安装Current 版本的Node.js。但是,Current版本中可能存在隐藏的 Bug 或安全性漏洞,因此不推荐在企业级项目中使用Current版本的 Node.js

6.查看已安装的 Node.js 的版本号

打开终端,在终端输入命令 node –v 后,按下回车键,即可查看已安装的 Node.js的版本号。

Windows 系统快速打开终端的方式

  • 使用快捷键(Windows徽标键 + R)打开运行面板,输入cmd后直接回车,即可打开终端。

在这里插入图片描述

  • 点击Windows徽标键 ,然后右击,会有Windows PowerShellWindows PowerShell(管理员)

在这里插入图片描述

  • 快速打开终端的方法:打开文件所处的这层目录,按shift键,点击右键,点击 在此处打开Powershell窗口
  • git 同样也可以使用
  • 终端运行文件命令: node 文件路径

7.终端

终端(英文:Terminal)是专门为开发人员设计的,用于实现人机交互的一种方式。

8. Node.js环境中执行 JavaScript 代码

① 打开终端

②输入node要执行的js文件的路径 node 空格 文件名

终端中的快捷键

在 Windows 的 powershellcmd 终端中,我们可以通过如下快捷键,来提高终端的操作效率:

① 使用 键,可以快速定位到上一次执行的命令

② 使用 tab 键,能够快速补全路径

③ 使用 esc 键,能够快速清空当前已输入的命令

④ 输入 cls 命令,可以清空终端(ctrl + L)

(二)fs文件系统模块

1.fs文件系统模块

fs 模块Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

例如:

  • fs.readFile() 方法,用来读取指定文件中的内容
  • fs.writeFile() 方法,用来向指定的文件中写入内容

如果要在javaScript代码中,使用fs模块来操作文件,则需要使用如下的方式先导入它:

const fs  = require('fs')

2.fs.readFile()读取指定文件中的内容

2.1fs.readFile() 的语法格式

使用 fs.readFile() 方法,可以读取指定文件中的内容,语法格式如下:

在这里插入图片描述

fs.readFile(path[,options] , callback)

参数

  • 参数1:必选参数,字符串,表示文件的路径。

  • 参数2:可选参数,表示以什么编码格式来读取文件。(默认utf8)

  • 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。err失败的结果,dataStr成功的结果

2.2 fs.readFile()的示例代码

utf8 的编码格式,读取指定文件的内容,并打印 errdataStr的值:

// 1.导如fs模块
const fs = require('fs')

// 2.调用fs.readFile()方法 读取文件
// 参数1:读取文件的存放路径
// 参数2:读取文件时候采用的编码格式,一般默认指定utf8
// 参数3:回调函数,拿到读取失败和成功的结果 err dataStr
fs.readFile('./files/1.txt' , 'utf8' , function(err, dataStr){
   
  // 2.1打印失败的结果
  // 如果读取成功,则 err 的值为 null
  // 如果读取失败,则 err 的值为 错误对象,dataStr的值为undefined
  console.log(err);
  console.log('-------');
  // 2.2打印成果的结果
  console.log(dataStr);
})

2.3 判断文件是否读取成功

可以判断err 对象是否为null,从而知晓文件读取的结果:

const fs = require('fs')

fs.readFile('./files/1.txt', 'utf8', function (err, dataStr) {
   
  if (err) {
   
    return console.log('读取文件失败!' + err.message);
  }
  console.log('读取文件成功' + dataStr);
})

3. fs.writeFile() 向指定的文件中写入内容

3.1fs.writeFile()的语法格式

使用 fs.writeFile() 方法,可以向指定的文件中写入内容,语法格式如下:

在这里插入图片描述

fs.writeFile(file , data[,options] , callback)

参数

  • 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。

  • 参数2:必选参数,表示要写入的内容

  • 参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。(可省略)

  • 参数4:必选参数,文件写入完成后的回调函数只有一个参数 err

调用fs.writeFile()方法,写入文件的内容,如果文件不存在则新建,如果文件存在则覆盖原有的内容

3.2 fs.writeFile()的示例代码

向指定的文件路径中,写入文件内容:

// 1.导入 fs 文件系统模块
const fs = require('fs')

// 2.调用 fs.writeFile() 方法,写入文件的内容
fs.writeFile('./files/2.txt' , 'abcd' , function(err){
   
  // 2.1 如果文件写入成功,则 err 的值等于 null
  // 2.2 如果文件写入失败,则 err 的值等于一个 错误对象
  console.log(err);
})

3.3 判断文件是否写入成功

可以判断 err对象是否为null,从而知晓文件写入的结果:

// 1. 导入 fs 文件系统模块
const fs = require('fs')

// 2. 调用 fs.writeFile() 方法,写入文件的内容
// 如果文件不存在则新建,如果文件存在则覆盖原有的内容
//    参数1:表示文件的存放路径
//    参数2:表示要写入的内容
//    参数3:回调函数
fs.writeFile('./files/3.txt', 'ok123', function(err) {
   
  // 2.1 如果文件写入成功,则 err 的值等于 null
  // 2.2 如果文件写入失败,则 err 的值等于一个 错误对象
  // console.log(err)

  if (err) {
   
    return console.log('文件写入失败!' + err.message)
  }
  console.log('文件写入成功!')
})

4.fs.appendFile()向文件追加内容的异步方法

fs.appendFile(path, data[, options], callback)

异步地追加数据到文件,如果文件尚不存在则创建文件,如果文件存在则追加

5.fs.appendFileSync()向文件追加内容的同步方法

fs.appendFileSync(path, data[, options])

同步地将数据追加到文件,如果文件尚不存在则创建该文件

6.fs.mkdir()创建文件夹

fsPromises.mkdir(path[, options])

path:<string> |<Buffer> | <URL>
options:<Object> |<integer>

  • recursive:<boolean> 默认值: false
  • mode:<string> |<integer>

返回:<promise>

异步地创建目录,然后在成功时解决 Promise,且不带参数,或者带上创建的第一个目录的路径(如果 recursivetrue)。

可选的 options 参数可以是整数(指定 mode(权限和粘滞位))、或对象{具有 mode 属性和 recursive 属性(指示是否要创建父目录)}。 当 path 是已存在的目录时,调用 fsPromises.mkdir() 仅在 recursive 为 false 时才导致拒绝。

7.fs.rmdir()删除文件夹

fsPromises.rmdir(path[, options])

8.fs.unlink()删除文件

fs.unlink(path, callback)

9.练习 - 考试成绩整理

使用fs文件系统模块,将素材目录下成绩.txt文件中的考试数据,整理到成绩-ok.txt文件中。

整理前,成绩.txt文件中的数据格式如下

在这里插入图片描述

整理完成之后,希望得到的成绩-ok.txt文件中的数据格式如下:

在这里插入图片描述

核心实现步骤

① 导入需要的 fs 文件系统模块

② 使用 fs.readFile() 方法,读取素材目录下的 成绩.txt 文件

③ 判断文件是否读取失败

④ 文件读取成功后,处理成绩数据

⑤ 将处理完成的成绩数据,调用 fs.writeFile() 方法,写入到新文件 成绩-ok.txt

示例代码:

方法一

// 1. 导入 fs 模块
const fs = require('fs')

// 2. 调用 fs.readFile() 读取文件的内容
fs.readFile('../素材/成绩.txt', 'utf8', function(err, dataStr) {
   
  // 3. 判断是否读取成功
  if (err) {
   
    return console.log('读取文件失败!' + err.message)
  }
  // console.log('读取文件成功!' + dataStr)

  // 4.1 先把成绩的数据,按照空格进行分割
  const arrOld = dataStr.split(' ')
  // 4.2 循环分割后的数组,对每一项数据,进行字符串的替换操作
  const arrNew = []
  arrOld.forEach(item => {
   
    arrNew.push(item.replace('=', ':'))
  })
  // 4.3 把新数组中的每一项,进行合并,得到一个新的字符串
  const newStr = arrNew.join('\r\n')

  // 5. 调用 fs.writeFile() 方法,把处理完毕的成绩,写入到新文件中
  fs.writeFile('./files/成绩-ok.txt', newStr, function(err) {
   
    if (err) {
   
      return console.log('写入文件失败!' + err.message)
    }
    console.log('成绩写入成功!')
  })
})

方法二

// 1.导入 fs 模块
const fs = require('fs')

// 2.调用 fs.readFile() 读取文件的内容
fs.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值