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,即可监听客户端的访问请求
延伸学习node中的模块
每个文件都是独立的模块,上述三个都是node.js内置的模块,导入的时候直接写名字,比如 require('path')。如果导入自定义模块,则需要写模块文件的路径,比如require('./utils.js')。
**Node.js**默认遵循CommonJS**规范**。
- 导出:module.exports = {}
- 导入:require('模块名或路径')
如果要使用ECMAScript标准,需要在运行模块所在的文件夹新建package.json文件,并设置{"type":"module"}
ECMAScript标准的语法:
- 导出:export default {}
- 导入:import 变量名 from '模块名或路径'