node.js内置api

231 阅读3分钟

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。就比如谷歌浏览器里面包含很多内置api,可以操作bom,dom等可以让javascript代码运行在前端,node.js就和谷歌浏览器相似,它也有很多内置api可以使javascript代码运行在后端,所以当我们使用js语言开发后端接口时就需要用到node.js,下面让我们一起学习下它的常用内置api。

fs文件模块

fs模块是用来操作文件的模块,它提供了一系列方法和属性,用来满足用户对文件的操作需求,当我们使用fs模块来操作文件时,需要先导入它

const fs = require('fs') 然后就可以使用它的方法,比如:

fs.readFile()方法,用来读取指定文件中的内容。

格式:fs.readFile(path,[options],callback)

path:必写参数,字符串,标识文件的路径

第二个可选参数,表示以什么编码格式来读取文件,比如"utf-8"

callback:必写回调函数,有两个参数第一个err,读取失败的值,第二个dataStr,读取成功返回的结果值,默认是Buffer 16进制数据流 对象可以用toString()转换成字符串

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

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

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

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

第三个参数,表示以什么格式写入文件内容,默认值utf8

callback回调参数,只有一个参数,无论成功失败都返回这个值。

path模块

path模块是用来处理路径的模块,导入方式:

const path = require('path')

path.join() 用来将多个路径片段拼接成一个完整的路径字符串

 const path = require('path')

// ../会覆盖一层路径
const pathStr = path.join('/a', '/b','/c/e/f', '../')
console.log(pathStr) // \a\b\c\e\

// __dirname表示当前路径
const pathStr2 = path.join(__dirname, 'g.js')
console.log(pathStr2) // D:\学习文件\node\g.js

path.basename(),用来从路径字符串中,将文件名解析出来

const filePath =  './a/b/c/index.html'
const fullName = path.basename(filePath)
console.log(fullName) // inde.html
//去掉文件后缀
const fileName = path.basename(filePath, '.html')
console.log(fileName) // index

path.extname(),用来获取路径中的扩展名

const extName = path.extname(filePath)
console.log(extName) // .html

http模块

http模块是node.js官方提供的,用来创建web服务器的模块。通过http模块提供的http.createServer()方法,就能方便的把一台普通的电脑,变成一台web服务器,从而对外提供web资源服务。

创建一个web服务器的基本步骤:

// 1.导入http
const http = require('http')

// 2.创建web服务器实例
const server = http.createServer()

// 3.为服务器绑定request事件,监听客户端请求
server.on('request', (req, res) => {
    // 只要有客户端请求我们服务器,就会触发request事件,从而调用这个事件处理函数
    console.log('客户端正在请求服务端')
    //req 是请求对象
    //req.url 是客户端请求的url地址,从端口号后面开始
    // req.method 客户端请求类型
    const str = '响应完毕'
    //调用res.end(),向客户端响应一些内容
    //解决中文乱码 设置响应头
    res.setHeader('Content-Type', 'text/html; charset=utf-8')
    res.end(str)
})

// 4.启动服务器
// 调用server.listen(端口号,cb回调)方法,即可启动web服务器
server.listen(80, () => {
    //本地测试
    console.log("http://127.0.0.1")
})

然后在终端中执行命令node 服务器.js,即可监听客户端的访问请求

image.png

延伸学习node中的模块

每个文件都是独立的模块,上述三个都是node.js内置的模块,导入的时候直接写名字,比如 require('path')。如果导入自定义模块,则需要写模块文件的路径,比如require('./utils.js')。

‌**Node.js**默认遵循CommonJS**规范**‌。

  • 导出:module.exports = {}
  • 导入:require('模块名或路径')

如果要使用ECMAScript标准,需要在运行模块所在的文件夹新建package.json文件,并设置{"type":"module"}

ECMAScript标准的语法:

  • 导出:export default {}
  • 导入:import 变量名 from '模块名或路径'