目录
ctrl+L 清除终端内容
esc 清除当前行内容
tab 补全代码
ctrl+c 停止终端
global模块
__filename 当前文件所在路径
__dirname 当前文件夹所在目录的路径
fs模块
1读取本地文件
// 需求: 读取 静夜思.txt 文件中的文本内容
// 引入fs模块 注意后面字符串
const fs=require('fs')
// 调用方法
// fs.readFile(path[, options], callback)
fs.readFile('静夜思.txt','utf-8',(err,data)=>{
if(err){
return console.log("读取文件错误",err);
}
console.log(data)
// console.log(data.toString())
})
2写入本地文件
注意:参数1,注意写入的文件目录和名字
// 1.引用
const fs=require('fs')
// 2调用模块方法
// 参数1:要写入的文件,若文件没有,则自动创建
// 参数2:要写入的数据
// 参数3:配置项
// 参数4:回调函数
// 参数1:err错误对象
//默认覆盖写法
fs.writeFile('短歌行.txt','对酒当歌,人生几何',(err)=>{
if(err){
return console.log('写入文件失败,',err)
}
console.log('写入成功');
})
3追加写入
(1)了解
//追加写入
fs.writeFile('短歌行.txt','譬如朝露, 去日苦多',{flag:'a'},(err)=>{
if(err){
return console.log('写入文件失败,',err)
}
console.log('写入成功');
})
(2)
/*fs.appendFile(path, data[, options], callback)
*/
// 需求: 往 短歌行.txt 文件中追加 譬如朝露, 去日苦多
const fs=require('fs')
fs.appendFile('短歌行.txt','\n譬如朝露, 去日苦多\n',(err)=>{
if(err){
return console.log('内容追加失败',err);
}
console.log('追加成功')
})
1) 存在问题:
在使用 fs 模块操作文件时
如果提供的操作路径是以./ 或 ../ 开头的相对路径时
很容易出现路径动态拼接错误的问题
2) 原因:
代码在运行的时候,会以执行node 命令时所处的目录,动态拼接出被操作文件的完整路径
3) 解决方案:
在使用fs 模块操作文件时,直接提供绝对路径
不要提供./ 或 ../ 开头的相对路径,从而防止路径动态拼接的问题
path路径模块
路径(Path) | Node.js 中文文档 | Node.js 中文网 (nodeapp.cn)
导入模块
const path=require('path')
1.path.join()
使用平台特定的分隔符把全部给定的 path
片段连接到一起,并规范化生成的路径。
const path=require('path')
const fs=require('fs')
console.log(path.join('a','b','短歌行.txt'));//a\b\短歌行.txt
fs.readFile(path.join(__dirname,'./静夜思.txt'),'utf-8',(err,data)=>{
if(err){
return console.log('读取文件失败',err);
}
console.log(data);
})
2.path.basename()
返回一个 path
的最后一部分,类似于 Unix 中的 basename
命令。 没有尾部文件分隔符,
console.log(path.basename('http:www.jd.com/ddd/da/af/nb.jpg'));//nb.jpg
3.path.extname()
返回 path
的扩展名,即从 path
的最后一部分中的最后一个 .
(句号)字符到字符串结束。 如果 path
的最后一部分没有 .
或 path
的文件名(见 path.basename()
)的第一个字符是 .
,则返回一个空字符串。
console.log(path.extname('http:www.jd.com/ddd/da/af/nb.jpg'))//.jpg
http模块
1.面试题:在浏览器输入www.baidu.com的时候,发生了什么。
1.域名解析
2.浏览器与服务器建立连接
3.web浏览器发送HTTP请求
4.web服务器处理请求并返回HTTP响应
5.浏览器接收HTTP响应
6.浏览器渲染页面
2.创建web服务器的基本步骤
1) 导入 http 模块
2) 创建 web 服务器实例
3) 启动服务器
参数1 端口号
参数2 主机地址
参数3 回调函数
访问localhost:3000
4) 为服务器实例绑定request 事件,监听客户端的请求
const http=require('http')
const server=http.createServer()
server.listen(3000,()=>{
console.log("已启用")
})
// 4)绑定request事件,监听客户端的请求
// 参数1:req接受的是一个request对象,包含所有请求相关信息
// 参数1:res接受的是一个response对象,包含所有响应相关信息,可以通过改对象给客户端返回响应数据
server.on('request',(req,res)=>{
console.log('请求进来了')
res.end('this is very ok')
})
3、 request对象常用属性
headers: 所有的请求头信息
method: 请求的方式
url: 请求的地址
const http=require('http')
const server=http.createServer((req,res)=>{
console.log('请求进来了');
console.log(req.headers);
console.log('==========')
console.log(req.method);
console.log(req.url);
res.end('my niu')
})
server.listen(3000,()=>{
console.log('端口启用');
})
4. response对象详解
http://nodejs.cn/api/http.html#http_class_http_serverresponse
常见的属性和方法:
res.write(data): 给浏览器发送响应体,可以调用多次,从而提供连续的请求体
res.end(); 通知浏览器,所有响应头和响应主体都已被发送,即服务器将其视为已完成。
res.end(data); 结束请求,并且响应一段内容,相当于res.write(data) + res.end()
res.statusCode: 响应的的状态码 200 404 500
res.statusMessage: 响应的状态信息, OK Not Found ,会根据statusCode自动设置。
res.setHeader(name, value); 设置响应头信息, 比如content-type
res.writeHead(statusCode, statusMessage, options); 设置响应头,同时可以设置状态码和状态信息。
// 1导入http模块
const http=require('http')
// 2创建web服务器,并运行在3000端口上
http.createServer((req,res)=>{
console.log('请求进来');
// res.write('jjj')
res.statusCode=404
res.end('404')
}).listen(3000,()=>{
console.log('3000端口的服务器启用');
})