从零开始学nodejs(第一天)
1、 什么是nodejs
nodejs是javascript代码运行环境,代码解析引擎为v8引擎,和chrome解析引擎一样,v8引擎是目前比较好的解析引擎。
2、nodejs和浏览器的差异
nodejs没有dom、bom、ajax等内置对象,不能进行这些操作。但是有fs对象等适合后端操作的内置对象,nodejs一般用于后端服务搭建。
3、fs对象
(1)fs.readFile()方法
用于读取文件,简单使用如下:
// 导入fs模块,用来操作文件
const fs = require("fs");
/**
* readFile()方法是fs对象用于读取文件的方法
* 包含3个参数
* 1、文件路径
* 2、读取文件时采用编码格式,一般默认用“utf-8”(该参数可选);
* 3、读取参数的回调方法,有err和res两个参数,分别表示失败和成功后的结果
*/
fs.readFile("./files/1.txt", "utf-8", (err, resultStr) => {
if(err){
console.log(err); // 读取成功则为null,失败则为err对象
return
}
console.log(resultStr); // 读取成功则为成功的字符串,失败则为undefine
});
(2)fs.writeFile()方法
用于写入文件,简单使用方法如下:
// 导入fs模块,用来操作文件
const fs = require("fs");
/**
1. writeFile()方法是fs对象用于写入问天的方法
2. 包含4个参数;
3. 1、文件路径(没有该文件会新建一个文件)
4. 2、写入文件内容;
5. 3、写入文件的编码格式,默认是“utf-8”(该参数可选)
6. 4、写入参数结果的回调方法,只有一个err参数
*/
fs.writeFile("./files/2.txt", "hello nodeJs", "utf-8", (err) => {
/**
7. 写入失败则err为err对象
8. 写入成功则为null
*/
if (err) {
// 写入失败
console.log(err);
} else {
console.log("写入成功");
}
});
(3)读取路径动态拼接问题
代码执行时,使用“./”或“../”会执行node命令执行时所处的目录,动态拼接操作文件的完整路径,导致读取文件错误
解决方案:
1、从盘符开始写: 如“c:\\users\\..........”(注意:‘\’需要转义,所以一般是‘\\’). 缺点: 移植性很差
2、用’__dirname‘: 如:__dirname + 'files/1.txt',__dirname等于当前路径的完整路径
4、path路径模块
引入:
const path = require('path')
(1) path.join()方法
用于拼接路径,一般用这种方法去获取文件完整路径,比用‘+’更加好,可以避免很多麻烦
使用:
const pathStr = path.join(__dirname,'/files/1.txt')
(2)path.basename()
用于获取文件名
使用:
const fpath = "./files/1.txt"
// 使用方法1 只穿一个参数
const fullName = path.basename(fpath);
console.log(fullName); // 1.txt
// 方法2 同时传入文件后缀名
const fileName = path.basename(fpath,'.txt');
console.log(fileName); // 1
(3) path.extname();
用于获取文件扩展名
使用
const fpath = "./files/1.txt"
const extname = path.extname(fpath);
console.log(extname) // txt
5、http模块
http模块是nodejs用于搭建服务器的模块,可用于搭建后端服务
1、导入
const http = require("http")
2、创建服务器实例
const serve = http.createServer()
3、为服务器绑定request事件
serve.on("request",(req,res)=>{
console.log("someone vist my serve")
// 客户端请求的url
console.log(req.url) // '/'
// 客户端请求的method,
console.log(req.method) //'GET'
//解决响应中文乱码问题
res.setHeader("Content-Type", "text/html;charset=utf-8");
//向客户端响应的部分,同时结束本次请求
res.end("this is response message")
})
4、启动服务器
serve.listen("80",()=>{
console.log("server running at http://127.0.0.1")
})