最近一段时间没怎么更新,因为学了些新东西,今天开始更新以下关于学习后端的nodejs的一些学习记录。
之所以选择nodejs的原因是我是一名前端人员,学习node的成本会低很多。
思考1:为什么javascript可以在浏览器中被执行?
因为浏览器中内置了javascript的解析引擎
其中chrome浏览器是V8引擎
firefox浏览器是OdinMonkey引擎
IE浏览器是Chakra引擎
思考2:为什么javascript可以操作bom和dom
因为每个浏览器内置了bom、dom这样的api函数
1、什么是nodejs
nodejs是一个基于chromeV8引擎的javascript运行环境
2、nodejs环境配置
这个内容暂时不写(有一点乱),回头我整理以下关于前后端环境的配置。
3、fs文件系统模块
fs模块是nodejs官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求:
fs.readFile()方法:用来读取指定文件中的内容
语法:
fs.readFile(path[,options],callback)
//参数1:必选参数,字符串,表示文件的路径
//参数2:可选参数,表示以什么编码格式来读取文件
//参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果
fs.writeFile()方法:用来向指定的文件中写入内容
语法
fs.writeFile(file,data[,options],callback)
//参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
//参数2:必选参数,表示要写入的内容
//参数3:可选参数,表示以什么格式写入文件内容,默认值utf8
//参数4:必选参数,文件写入完成后的回调函数
const fs = require('fs')
fs.readFile('./01.txt', 'utf-8', (err, data) => {if (err) {console.log(err)} else {console.log(data) //123}
})
const fs = require('fs')
fs.writeFile('./02.txt', '123', (err) => {if (err) {console.log(err)} else {console.log('写入成功')}
})
关于fs模块动态路径拼接的问题
在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题。
原因:代码在运行的时候,会执行node命令时所处的目录,动态拼接出被操作文件的完整路径。
解决方案:在使用fs模块操作文件时,直接提供完整的路径,不要提供./或者../开头的相对路径,从而防止路径动态拼接的问题。
fs.readFile(_dirname + '/files/1.txt','utf8',function(err,dataStr){if(err)return console.log(err.message)console.log(dataStr)
})
4、path路径模块
path模块也是nodejs官方提供的、用来处理路径的模块。他提供了一系列的方法和属性,用来满足用户对路径的处理需求。
path.join()方法,用来将多个路径片段拼接成一个完整的路径字符串
语法
path.join([...paths])
//...paths:字符串,路径片段的序列
//返回值:字符串
使用
const path = require('path')
console.log(path.join(__dirname, '03.js')) //F:\zst\study\expressjwt\03.js
path.basename()方法,用来从路径字符串中将文件名解析出来
语法
path.basename(path[,ext])
//path:路径字符串,必选参数
//ext:可选参数,表示文件扩展名
//返回:字符串,表示路径的最后一部分
使用
const path = require('path')
console.log(path.join(__dirname, '03.js')) //F:\zst\study\expressjwt\03.js
console.log(path.basename('03.js', '.js')) //03
path.extname(),获取路径中的扩展名部分
语法
path.extname(path)
//path:字符串,必选参数
//返回:字符串,返回得到扩展名字符串
5、http模块
思考:什么是客户端,什么是服务器
在网络节点中,负责消费资源的电脑,叫做客户端;负责对外提供网络资源的电脑叫做服务器
http模块是nodejs官方提供的,用来创建web服务器的模块,通过http模块提供的http.createServer()方法,就可以把一台普通的电脑变成一台web服务器,从而对外提供web资源服务。
创建web服务器的基本步骤
//导入http模块
const http = require('http')
//创建http示例
const server = http.createServer()
//监听客户端请求
server.on('request', (req, res) => {res.end('hello world')
})
//启动服务器,监听端口
server.listen(8080, () => {console.log('server is running at http://localhost:8080')
})
req请求对象
只要服务器接收到了客户端的请求,就会调用通过server.on()为服务器绑定的request事件处理函数。在req中包含客户端相关的数据和属性。
res响应对象
res中包含与服务器相关的数据和属性。
解决中文乱码问题
当调用res.end()方法,向客户端发送中文内容的时候,会出现中文乱码问题,可以手动设置内容的编码格式。
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {const str = `您请求的地址是${req.url},请求的方法是${req.method}`res.setHeader('Content-Type', 'text/html;charset=utf-8')res.end(str)
})server.listen(8080, () => {console.log('server is running at http://localhost:8080')
})