运行在服务端的JavaScript——nodejs(一)

初识nodejs

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

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

  • Chrome浏览器    =>   v8
  • Firefox 浏览器     =>   OdinMondkey(奥丁猴)
  • Safri浏览器        =>   JSCore
  • IE浏览器        =>   Chakra(查克拉)
  • etc...

其中,Chrome的v8解析引擎的性能最好


浏览器中的JavaScript运行环境

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

总结:

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

nodejs简介

什么是Node.js

\(Node.js is JavaScript runtime built on Chrome's v8 JavaScript engine.\)
Node.js 是一个基于Chrome V8 引擎的JavaScript运行环境。

Node.js中的JavaScript运行环境

image


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

nodejs可以做什么

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

  1. 基于Express框架官网,可以快速构建Web应用

  2. 基于Elecron框架官网,可以构建跨平台的桌面应用

  3. 基于restify框架官网,可以快速构建API接口项目。

  4. 读写和操作数据库、创建实用的命令行工具富足前端开发、etc...

nodejs环境,LTS版本和Current版本的不同

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

fs文件系统模块

什么是fs文件系统模块

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

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

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

const fs = require('fs')

读取指定文件中的内容

fs.readFile()的语法格式

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

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

参数解读:

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

判断文件是否读取成功

使用if进行判断,如果error为null,如果error为null则读取成功。否则读取失败。

向指定文件写入内容

fs.writeFile()的语法格式

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

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

参数解读:

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

fs模块-路径动态拼接的问题

在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题。
原因:代码在运行的时候,会议执行node命令时所处的目录,动态拼接处被操作文件的完整路径。
解决方案:在使用fs模块操作文件时,直接提供完整的路径,不要提供./或者../开头的相对路径,从而防止路径动态拼接问题。
但是以上绝对路径又太过繁琐,不利于移植和维护,这时node为我们提供了一个变量__dirname表示当前文件所处的目录。

path路径模块

什么是path路径模块

path模块是Node.js官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。
例如:

  • path.join()方法,用来将多个片段拼接成一个完整的路径字符串
  • path.basename()方法,用来从路径字符串中,将文件名解析出来

如果要在JavaScript代码中,使用path模块来处理路径,则需要使用如下的方式先导入它:

const path = require('path')

路径拼接

path.join()的语法格式

使用path.join()方法,可以把多个路径片段拼接位完整的路径字符串,语法格式如下:

path.join([...paths])

参数解读:

  • ...paths<string> 路径片段的序列
  • 返回值:<sting>

path.join()的代码示例

使用path.join()方法,可以把多个路径片段拼接位完整的路径字符串:

const pathStr = path.join('\a','\b\c','..\','e')
console.log(pathStr); // 输出 \a\b\d\e

const pathStr2 = path.join(__dirname,'./files/1.txt')
console.log(pathStr2) // 输出 当前文件所处目录\files\1.txt
今后凡是涉及到路径拼接的操作,都要使用path.join()方法进行处理。不要直接使用+进行字符串拼接。

获取路径中的文件名

path.basename()的语法格式
使用path.basename()方法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名,语法格式如下:

path.basename(path[,ext])

参数解读:

  • path<sting> 必选参数,表示路径的字符创
  • ext<string> 可选参数,表示文件扩展名
  • 返回:<sting> 表示路径中的最后一部分

获取路径中的文件扩展名

path.extname()的语法格式

使用path.extname()方法,可以获取路径中的扩展名部分,语法格式如下:

path.extname(path)

参数解读:

  • path<string>必选参数,表示一个路径的字符串

  • 返回:<string>返回得到的扩展名字符串


reg.exec()方法用来将传入参数解析成为一个字符串数组,其数组的第一个元素则是正则表达式匹配的结果。

posted @ 2022-05-25 23:56  maplerain  阅读(395)  评论(0编辑  收藏  举报