Node.js基础(一)

1. 初识Node.js

1.1 回顾与思考

掌握了哪些技术?

HTML、CSS、JavaScript

浏览器中的 JavaScript 的组成部分?

  1. JS核心语法:变量、数据类型、循环、分支、判断、函数、作用域、this、etc
  2. WebAPI:DOM操作、BOM操作、基于XMLHttpRequest 的Ajax 操作、etc

思考:为什么 JavaScript 可以在浏览器中被执行

JS代码之所以能够在浏览器中运行,是因为浏览器中它嵌入了一种JavaScript引擎(在这里我们把JavaScript引擎称为JS引擎,又称为:JavaScript虚拟机),而JS引擎它可以把JS代码解析成浏览器能够识别的代码,因此JS代码可以在含有JS引擎的浏览器中运行。

不同的浏览器使用不同的 JavaScript 解析引擎:

  • Chrome 和 Opera ------V8引擎
  • Firefox------OdinMonkey
  • Safari-----JSCore
  • IE------Chakra引擎
  • Microsoft Edge------ChakraCore引擎

其中,Chrome 浏览器的 V8 解析引擎性能最好!

思考:为什么 JavaScript 可以操作 DOM 和 BOM

每个浏览器都内置了 DOM、BOM 这样的 API 函数,因此,浏览器中的 JavaScript 才可以调用它们。
在这里插入图片描述

浏览器的 JavaScript 运行环境

运行环境是指代码正常运行所需的必要环境。

Chrome 浏览器运行环境

总结:

  1. V8 引擎负责解析和执行 JavaScript 代码。
  2. 内置 API 是由运行环境提供的特殊接口,只能在所属的运行环境中被调用。

思考:JavaScript 能否做后端开发

JavaScript可以写后端。JavaScript可以通过Node.js技术来实现后端开发,Node.js是一个让JavaScript运行在服务端的开发平台。

1.2 Node.js 简介

什么是 Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 的官网地址: https://nodejs.org/zh-cn

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

注意:

  1. 浏览器 是 JavaScript 的前端运行环境
  2. Node.js 是 JavaScript 的后端运行环境
  3. Node.js无法调用 DOM 和 BOM 等浏览器内置 API

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…

总之:Node.js 是大前端时代的“大宝剑”,有了 Node.js 这个超级 buff 的加持,前端程序员的行业竞争力会越来越强!

1.3 Node.js 环境的安装

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

区分 LTS 版本Current 版本的不同

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

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

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

1.4 在 Node.js 环境中执行 JavaScript 代码

步骤:

  1. 打开终端
  2. 输入 node 要执行的js文件的路径

终端中的快捷键

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

  • 使用 键,可以快速定位到上一次执行的命令
  • 使用 tab 键,能够快速补全路径
  • 使用 esc 键,能够快速清空当前已输入的命令
  • 输入 cls 命令,可以清空终端

2. fs 文件系统模块

2.1 什么是 fs 文件系统模块

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

例如:

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

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

const fs = require("fs")

如果出现了以下提示,不用管

var require: NodeRequire
(id: string) => any
文件是 CommonJS 模块; 它可能会转换为 ES 模块。

2.2 读取指定文件中的内容

2.2.1 fs.readFile() 的语法格式

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

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

参数解读:

  • 参数1:必选参数,字符串,表示文件的路径。
  • 参数2:可选参数,表示以什么编码格式来读取文件。一般默认utf8
  • 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。

2.2.2 fs.readFile() 的示例代码

文件夹框架

文件夹框架

示例代码

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

const fs = require("fs")
fs.readFile('./files/test.txt', 'utf8', function (err, dataStr) {
   
  // 打印失败结果
  console.log(err);
  console.log('-------');
  // 打印成功结果
  console.log(dataStr);
})

执行test.js代码:直接定位到当前文件所处目录,在空白处,shift + 鼠标右键,点击“在此处打开PowerShell 窗口”打开终端并输入命令。

运行成功结果:

PS D:\code> node test.js
null
-------
11
PS D:\code>
  • 如果读取成功,则err 的值为null
  • 如果读取失败,则err 的值为错误对象,dataStr 的值为undefined

运行失败结果:

PS D:\code> node test.js
[Error: ENOENT: no such file or directory, open 'D:\code\files\test1.txt'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'open',
  path: 'D:\\code\\files\\test1.txt'
}
-------
undefined
PS D:\code>

判断文件是否读取成功

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

const fs = require('fs')
fs.readFile('./files/test.txt', 'utf8', function (err, dataStr) {
   
  if(err){
   
    return console.log('文件读取失败!' +err.message);
  }
  console.log('文件读取成功,内容是:'+ dataStr);
})

运行成功/失败结果:

PS D:\code> node test.js
文件读取失败!ENOENT: no such file or directory, open 'D:\code\files\test1.txt'
PS D:\code> node test.js
文件读取成功,内容是:11
PS D:\code>

2.3 向指定的文件中写入内容

2.3.1 fs.writeFile() 的语法格式

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

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

参数解读:

  • 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。
  • 参数2:必选参数,表示要写入的内容。
  • 参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。
  • 参数4:必选参数,文件写入完成后的回调函数。

2.3.2 fs.writeFile() 的示例代码

示例代码

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

const fs = require('fs')
fs.writeFile('./files/test.txt', 'Hello Node.js', function (err) {
   
  // 如果文件写入成功,则 err 的值等于一个null
  // 如果文件写入失败,则 err的值等于一个错误对象
  console.log(err);
})

运行成功结果:

PS D:\code> node test.js
null
PS D:\code>

注意:

  • 如果运行成功,err 的值为null
  • 如果文件存在并且有内容,会直接覆盖原先的内容
  • 如果文件不存在会创建文件并写入内容

判断文件是否写入成功

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

fs.writeFile('./files/test.txt', 'Hello Node.js', function (err) {
   
  if(err){
   
    return console.log('文件写入失败!'
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js是一个建立在谷歌V8引擎的运行环境,用于解析和执行JavaScript代码。它使得JavaScript不再局限于浏览器环境,可以在后端创建动态数据。\[1\]严格来说,Node.js不是一个框架,而是一个平台。它的技术栈包括核心模块、框架(如Express、KOA)、模板引擎(如Pug、EJS)、编译型CSS(如Lass/Sass/Stylus)和数据库(如MongoDB、MySQL)等。\[2\] Node.js基础知识包括了如何执行另一个模块中的功能。例如,在一个模块中使用require函数引入另一个模块,然后可以调用该模块中的功能。例如,如果有一个b.js模块和一个first.js模块,可以在first.js模块中使用require('./b')来引入b.js模块,并调用其中的功能。执行node first.js即可运行该程序。\[3\] #### 引用[.reference_title] - *1* [【入门级基础】Node基础知识总结](https://blog.csdn.net/pakerder/article/details/125191636)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [node.js基础知识](https://blog.csdn.net/weixin_45459904/article/details/107508639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值