当前位置:   article > 正文

node.js的那些事_writefilesync第三个参数

writefilesync第三个参数

前言

nodejs这个东西呢,说起来挺复杂的,但是我们还是得了解一下它,毕竟多一门技术也多一条路嘛,今天刚好有时间,就把以前学过的东西来整理一下,最开始学的时候,给我留下了不可磨灭的印象。

nodejs是什么

官方的概念是:Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时
我自己的理解是:是一个基于Chrome V8引擎的运行js代码的运行环境,它不是一个js文件,而是一个软件

学习node.js的意义

  • 能够提高自己的竞争力
  • 了解后端的一些工作流程
  • 这是学习框架(Vue、React)的一个基础

node.js学习的内容

  1. 首先,node.js不是一个新的编程语言
  2. 一个是node.js的模块系统,利用这些模块系统可以来完成不同的功能,比如创建web服务器、写接口等等
  3. 另外一个就是NPM包管理工具

下载和安装

  • 下载直接去官网搜就可以了,这里附上中文网的地址,里面有很多的API可以供我们查询(nodejs.cn/)
  • 安装就很简单了,和其他普通的软件安装是一样的
  • 安装后,怎么测试我们有没有安装成功呢,按下window键+R,在打开的窗口输入cmd打开命令提示符,就是下面这个小黑窗啦,然后输入命令 node -v,如果出现版本号,就显示我们安装成功了

image.png

打开小黑窗的四种方式

  • 方法一:cmd窗口(window+R, —>运行–>录入cmd,回车)

image.png

  • 方法二:在资源管理器中,打开任意目录,直接在地址栏中写入 cmd,并回车
  • 方法三:powershell(window10操作系统),在资源管理器中按下shift,同时点击鼠标右键,可以选择在此处打开powershell/命令行窗口。

image.png

  • 方法四:vscode中的右键,在命令行中运行

image.png

在node环境下怎么运行js代码

  1. 先准备一个js文件
  2. 写命令来执行

格式是:node 要执行的文件的路径
注意:node后面有一个空格
其实说白了,nodejs是一个环境,可以来跑js代码

node.js里面的常用命令

node 空格 某个js文件        # 调用 node 程序,运行某个js文件

clear  或者  cls           # 清空界面

ls/dir                    #  查看列表(list)

cd 目录名                  # 进入到目录中去

cd ..                     # 返回上一级目录

cd \								       # 直接回到根目录
                   
Ctrl+C                  	 # 停止 Node 程序

输入部分文件名后按下 Tab 键  // 补全文件名 或 目录名, 多次tab会进行切换

↑ ↓ 上下箭头         			 # 切换历史输入 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

浏览器端和node.js的区别

相同点:

  1. 都是一个运行js代码的容器
  2. 都是一个宿主环境

不同点:

  1. node.js环境运行js的时候不能使用DOM,BOM以及window对象
  2. node.js环境可以去实现后端的一些功能
  3. 浏览器端环境可以去实现前端的一些功能

node.js里面的模块分类

  • 核心模块:就是node.js内置或者自带的模块,我们可以直接拿过来使用
  • 自定义:我们程序员自己写好的模块,相当于js里面的自定义一个函数
  • 第三方模块:别人写好的模块,我们拿过来使用的

核心模块fs

  • 核心模块就是Node内置的模块,需要通过唯一的标识码来进行获取
  • 每一个核心模块都是暴露了一个对象,里面包含一些方法来供我们使用
  • 一般加载核心模块的时候,变量的起名最好和核心模块的标识名一样

例如:

//1. 引入
const fs = require('fs')
console.log(fs)
//2. 调用
fs.各种API(实参) 
  • 1
  • 2
  • 3
  • 4
  • 5

1. fs.readFileSync-文件读取

const fs=require('fs')
let res=fs.readFileSyn('文件路径','utf8')
//res就是读出来的内容
console.log(res) 
  • 1
  • 2
  • 3
  • 4

注意:api的名字结尾有Sync(async是异步的,sync表示同步的)
如果读取成功,会获取读出来的数据,如果读取失败,后面的代码就不会执行
解决这个问题的方法:用try.catch结构

try {
    //可能会有错误的代码
    let res = fs.readFileSync('./01-第一个在node上面跑的文件.js', 'utf-8')
    console.log(res)

} catch (error) {
    //如果try里面的代码有错误,就会进入catch,并把错误传进来(在这里处理错误)外面的代码还是会执行
    console.log('报告,有错误发送')
    console.log(error)
}
console.log(125)

// 1.一般情况下  程序报错后面的代码就不会执行
// 2.加了try catch后,处理错误后,外面的代码会正常执行 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2. fs-writeFileSync-文件写入

功能:向指定文件中写入字符串, 如果没有该文件则尝试创建该文件。
格式:

const fs=require('fs')
fs.writeFileSync(pathName, content, option)
//1. 第一个参数是文件的路径
//2. 第二个参数是要写入的内容(类型是字符串类型或者Buffer类型)
//3. 第三个参数是配置项(可选),设置写入的字符集,默认是utf-8 
  • 1
  • 2
  • 3
  • 4
  • 5

注意:它是覆盖写入,会把文件中的内容全部删除,再填入新的内容。

  • 写入普通的字符串类型的数据
const fs = require('fs')
fs.writeFileSync('./a.txt', 'hello world! \n 换一行') 
  • 1
  • 2
  • 把数据写入文件中
const fs = require('fs')
const data = [{name: '小王', age: 20}]
fs.writeFileSync('./a.txt', data) 
  • 1
  • 2
  • 3

上面的写法会直接报错,因为data不是一个字符串或者Buffer
解决的方法:调用JSON.stringify先对内容做处理,转成字符串,再保存

const fs = require('fs')
const data = [{name: '小王', age: 20}]
fs.writeFileSync('./a.txt', JSON.stringify(data)) 
  • 1
  • 2
  • 3

路径问题-使用绝对路径

nodejs中提供了两个全局变量来获取获取绝对路径:

  • __filename:获取当前被执行的文件的绝对路径
  • __dirname:获取当前被执行的文件的文件夹所处的绝对路径

在文件操作时,使用绝对路径

只需要在读入文件时,在文件名的前面拼接上路径:

// 拼接html5.jpg的绝对路径
// 1) 找到当前文件夹的绝对路径
console.log(__dirname)
// 2) 加上 html5.jpg
const fs = require('fs')
const filePath = __dirname + '\\rs.txt'
// 走一步,看一步
console.log(filePath)
const rs = fs.readFileSync(filePath) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

核心模块path

1.引入模块
const path = require('path')
2. 调用API
path.各种api(参数)
###常用的Api

  • path.basename() :此方法返回 path 的最后一部分。一般可用来获取路径中的文件名。
  • path.join() :路径拼接。
  • path.parse(pathurl) :把一个路径转成一个对象

使用path模块解决文件读写中的路径拼写

// 拼接html5.jpg的绝对路径
// 1) 找到当前文件夹的绝对路径
console.log(__dirname)
// 2) 加上 html5.jpg
const fs = require('fs')
const path = require('path')
const filePath = path.join(__dirname, 'html5.jpg')
// const filePath = __dirname + '\\html5.jpg'
// 走一步,看一步
console.log(filePath)

fs.readFile(filePath,function(err, data) {
  if(err) {
    console.log(err)
    return
  }
  console.log(data)
}) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

需求:对JSON数据进行操作,往data.json文件里面的数组中添加一条内容

文件data.json里面的内容如下

[{"name":"小王"},{"name":"小李"}] 
  • 1

我们自己写的js文件

//1. 先引入模块
const fs = require('fs')
const path = require('path')

//2. 看一下自己的模块引进来没有
// console.log(fs)

//3.调用api
//3.1 使用绝对路径
let fileName = path.join(__dirname, 'data.json')
// console.log(fileName)
//3.2 读取这个文件,并把文件里面的内容转换成对象
let arr = JSON.parse(fs.readFileSync(fileName, 'utf-8'))
//3.3 往这个对象里面添加我们要加的内容
arr.push({ name: '小张' })
//3.4 把我们添加好的数据,转换成json格式,并写入到data文件中
arr = JSON.stringify(arr)
fs.writeFileSync(fileName, arr, 'utf-8') 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

最后运行的结果:

[{"name":"小王"},{"name":"小李"},{"name":"小张"}] 
  • 1

成功添加一条数据!

结语:当然node.js里面还有非常多的方法,这里不能一一说完,有兴趣的朋友可以多去查官方文档,今天的回顾就到这里吧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/283507
推荐阅读
相关标签
  

闽ICP备14008679号