Node.js基础(1)

Node.js是一个JavaScript运行时,允许JavaScript在服务器端运行,不再依赖浏览器。它基于V8引擎,提供了fs模块等标准库,方便进行文件操作。示例展示了如何使用Node.js进行文件的读写操作。
摘要由CSDN通过智能技术生成

在 Node.js 之前,JavaScript 只能运行在浏览器中,作为网页脚本使用,为网页添加一些特效,或者和服务器进行通信。有了 Node.js 以后,JavaScript 就可以脱离浏览器,像其它编程语言一样直接在计算机上使用,不需要依托浏览器运行。

它是一套 JavaScript 运行环境,用来支持 JavaScript 代码的执行。

Node.js 是一个 JavaScript 运行时(Runtime)
 

node.js的组成

1) V8 引擎

V8 引擎就是 JavaScript 解释器,借鉴了 Java 虚拟机和 C++ 编译器的众多技术,它将 JavaScript 代码直接编译成原生机器码,使用了缓存机制来提高性能,这使得 JavaScript 的运行速度可以媲美二进制程序。

2) 本地模块

Node.js 集成了众多高性能的开源库,它们使用 C/C++ 语言实现

3) 标准库

本地模块使用 C/C++ 编写,而 Node.js 必须要封装本地模块的 C/C++ 接口,提供一套JavaScript 接口,保持接口在不同操作系统上一致,就是 Node.js 标准库。

fs模块

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

// 2. 调用 fs.writeFile() 方法,写入文件的内容
//    参数1:表示文件的存放路径
//    参数2:表示要写入的内容
//    参数3:回调函数
fs.writeFile('./files/helloword.txt', '你好世界', function (err) {
  if (err) {
  } else {
    console.log('写入成功')
    fs.readFile('./files/helloword.txt', 'utf-8', function (err, dataStr) {
      if (err) {
        return
      } else console.log(dataStr)
    })
  }
})

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)
  } else console.log('文件写入成功!')
})

整理成绩案例

// 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(' ')
  console.log(arrOld)
  // 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('成绩写入成功!' + newStr)
  })
})

// 可能出现路径拼接错误的问题,是因为提供了 ./ 或 ../ 开头的相对路径

// 如果要解决这个问题,可以直接提供一个完整的文件存放路径就行

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

path模块

//用 + 拼接不正规 使用path方法处理路径拼接更正规

const path = require('path')
const fs = require('fs')

fs.readFileSync('./files/1.txt')
// fs.readFileSync(__dirnamed)
//用 + 拼接不正规 使用path方法处理路径拼接更正规
//使用 ./ ../不正规  使用 __dirname 表示当前文件路径
console.log(__dirname)
fs.readFile(
  path.join(__dirname + '/files/1.txt'),
  'utf8',
  function (err, dataStr) {
    if (err) {
      console.log(err)
    } else console.log(dataStr)
  }
)
const path = require('path')

// 定义文件的存放路径
const fpath = '/a/b/c/index.html'

//path.basename() 获取文件路径的最后一部分 (文件名和后缀)
const fullName = path.basename(fpath)
console.log(fullName) //index.html

const nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt) //index
const path = require('path')

// 这是文件的存放路径
const fpath = '/a/b/c/index.html'

// path.extname 获取文件路径后缀
const fext = path.extname(fpath)
console.log(fext) //.html

const basename = path.basename(fpath, '.html')
const extname = path.extname(fpath)
console.log(basename + extname)
const { log } = require('console')

// 遍历数组
const xiyou = ['唐僧', '孙悟空', '猪八戒', '沙僧']

//使用 for...of 遍历数组
for (let v of xiyou) {
  console.log(v)
}

//同样便利数组
// 用来遍历数组中的每一项,不影响原数组,性能差
// 缺陷 你不能使用break语句中断循环,也不能使用return语句返回到外层函数。
xiyou.forEach((element) => {
  console.log(element)
})

const honglou = ['贾宝玉', '林黛玉', '薛宝钗', '何熙凤']

for (let k in honglou) {
  console.log(k)
  console.log(honglou[k])
}

for (let k in xiyou) {
  console.log(k)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值