什么是Node.js
Node.js是基于V8引擎的js运行环境
前端开发中JavaScript代码可以基于浏览器的内置引擎来运行。如果脱离浏览器的js运行环境,js代码将不能执行。
借助Node.js,开发者可以更方便地使用JavaScript开发后端代码。
Node.js可以做什么
1、基于Express框架(http://www.expressjs.com.cn/),快速构建web应用
2、基于Electron框架(https://electronjs.org/),可以构建跨平台桌面应用
3、基于restify框架(http://restify.com/),可以快速构建API接口项目
4、读写和操作数据库、创建实用的命令行工具辅助前端开发等
Node.js的内置模块
fs文件系统模块
fs模块是Node.js官方提供的、用来操作文件的模块,它提供了一系列的方法和属性,用来满足用户对文件的操作需求
1、读取指定文件中的内容
使用fs.readFile()方法,可以读取指定文件中的内容,语法格式如下:
fs.readFile(path[,options],callback)
- 参数1:必选参数,字符串,表示文件的路径
- 参数2:可选参数,表示以什么编码格式来读取文件
- 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。
判断文件是否读取成功
// 1.导入fs模块,来操作文件
const fs = require('fs')
// 2.调用fs.readFile()方法读取文件
fs.readFile('./file/1.txt', 'utf8', function (err, dataStr) {
// 打印失败的结果,如果读取成功,则err的值为null
// 如果读取失败,则err的值为错误对象,dataStr的值为undefined
if (err) {
return console.log('读取文件失败' + err.message)
}
console.log('读取文件成功' + dataStr)})
2、向指定的文件中写入内容
使用fs.writeFile()方法,可以向指定文件中写入内容,语法格式如下:
fs.writeFile(file, data[, options], callback)
- 参数1:必选参数,字符串,表示文件的存放路径
- 参数2:必选参数,表示要写入的内容
- 参数3:可选参数,表示以什么编码格式来读取文件,默认值是utf8
- 参数4:必选参数,文件写入完成后的回调函数。
const fs = require('fs')
fs.writeFile('f:/files/2.txt','abcd',function(err) {
console.log(err);
})
path路径模块
path模块是Node.js内置的处理路径需求的模块,使用path模块来处理路径,则需要使用以下的方式先导入它
const path=require('path')
1、使用path.join()方法,可以把多个路径片段拼接为较为完整的路径字符串
path.join([...paths])
示例:
const pathStr = path.join(_dirname, './files/1.txt')
2、使用path.basename()方法 ,可以获取路径中的最后一部分
path.basename(path[,ext])
示例:
const fpath = '/a/b/c/index.html'//文件存放路径
var fullName = path.basename(fpath)
console.log(fullName) // 输出 index.html
3、使用path.extname()方法可以获取路径中的拓展名部分,语法格式如下
path.extname(path)
示例:
const fpath = '/a/b/c/index.html' //路径字符串
const fext = path.extname(fpath)
console.log(fext) // 输出 .html
http模块
Http模块是Node.js官方提供的,用来创建web服务器的模块。通过http模块提供的。Http.createServer()方法,就能方便的把一台普通电脑,变成一台web服务器,从而对外提供Web资源服务。
const http=require('http')
创建最基本的web服务器
1、导入http模块
const http=require('http')
2、创建web服务器实例
const server=http.createServer()
3、为服务器实例绑定request事件,监听客户端的请求
//使用服务器实例的.on()方法,为服务器绑定一个request事件
server.on('request',(req,res)=>{
//只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数
console.log('someone visit our web server.')
})
4、启动服务器
//调用server.listen(端口号,cb回调)方法,即可启动web服务器
server.listen(80,()=>{
console.log('http server running at http://127.0.0.1')
})
5、request请求对象
服务器收到客户端请求时,会调用server.on()为服务器绑定的request事件处理函数,在事件处理函数中访问与客户端相关的数据或属性,可以使用如下方式:
server.on('request',(req,res)=>{
//req是请求对象,它包含了与客户端相关的数据和属性,例如:
//req.url是客户端相关的数据和属性,例如:
//req.url是客户端请求的url地址
//req.method 是客户端的method请求类型
const str='Your request url is ${req.url},and request method is ${req.method}'
console.log(str)
})
6、response响应对象
server.on('request',(req,res)=>{
//res是响应对象,它包含了与服务器相关的数据和属性,例如:
//要发送到客户端的字符串
const str='Your request url is ${req.url},and request method is ${req.method}'
//res.end()方法的调用:
//向客户端发送指定内容,并结束这次请求的处理过程
res.end(str)
})