首页 > 编程语言 >node中的fs模块和http模块的学习

node中的fs模块和http模块的学习

时间:2023-02-06 11:16:53浏览次数:46  
标签:node fs http 读取 request 模块 error data response

读取文件 fs 模块

第1个参数就是要读取的文件路径
第2个参数是一个回调函数(error,data)=>{}
error
  如果读取失败,error 就是错误对象 
  如果读取成功,error 就是 nu1l
data
  如果读取成功,data 就是读取到的数据,输出来的是是16进制的数据,可以通过 data.toString() 转换一下
  如果读取失败,data就是undefined

简单读取文件

var fs = require('fs')
fs.readFile('./test.txt', (error, data) => {
  // 如果读取成功,error就是null
  if (!error) {
    console.log('成功error是:', error) //输出的是null
    console.log('读取成功data数据是:', data) //16进制的字符串
    console.log('我可以识别的:', data.toString()) //转为我们人可以识别的
  } else {
    console.log('读取失败')
  }
})

文件写模块

第1个参数:文件路径;
第2个参数文件内容
第3个参数是回调函数 (error,data)=>{}
error的值是null,说明成功。 error的值是错误对象,读取失败
data的值是 undefined的时候,可能成功也有可能是失败

03png

let fs = require('fs');
let fileCont='我是文件内容'
fs.writeFile('./文件名-用node写',fileCont, (erro, data) => {
  if (!erro) {
    console.log('写入成功了',data)
  } else {
    console.log('写入失败了',data)
  }
})
// 在你的项目中会多一个文件的哈,文件名是(文件名-用node写)

http模块

server.on('request', (request,response) => {})
request 请求事件函数,可以接收两个参数:
第1个参数 Request 请求对象:请求对象可以用来获取客户端的一些请求信息,例如请求的路径
通过Request.url可以知道请求的路径

第2个参数 Response 响应对象:响应对象可以用来给客户端发送响应消息。
response对象上有一个方法,response.write()可以给客户端发送消息。
可以多次使用,不会出现覆盖。需要注意的是:发送完消息后,一定要使用response.end()
来告诉服务器,我的消息,已经发送写完了,你可以发送了

小技巧:我们也可以直接使用 response.end() 来发送数据

使用http模块创建一个简单的服务器,并发送消息

let http = require('http')
// 使用 http.createServer创建一个实例
let server = http.createServer()
// 监听request请求
server.on('request', (request,response) => {
  console.log('监听到了路径是', request.url)
  response.write('hhhe')
  response.end() //消息写入完了,你可以发送了。
})
//绑定端口号,启动服务
server.listen(3000, () => {
  console.log('服务启动成功,通过127.0.0.1:3000可以来访问')
})
简单说一下为什么在浏览器中看见的地址是:http://127.0.0.1:3000。
但是我们通过 request.url 看见的是 / 这个问题?
其实,你把浏览器的地址复制下来就是  ”http://127.0.0.1:3000/“
这下知道原因了吧。

给客户端的数据的2个注意点

第1个注意点:发送中文乱码问题
你发送的如果是中文。如:  response.write('高启强')
客户端看见的是乱码

怎么解决中文乱码问题
使用setHeader方法,只用设置请求头。
response.setHeader('Content-Type','text/html; charset=utf-8');
需要注意的是:设置请求头的代码要放置在 response.write 的前面
需要注意的是:设置请求头的代码要放置在 response.write 的前面
需要注意的是:设置请求头的代码要放置在 response.write 的前面

server.on('request', (request,response) => {
  //需要注意的是:设置请求头的代码要放置在 response.write 的前面
  response.setHeader('Content-Type','text/html; charset=utf-8');
  response.write('高启强')
  response.end()
})

第2个注意点:给客户端的数据只能是字符串或者二进制的数据
特别提醒:响应内容(给客户端的数据只能是字符串或者二进制的数据)
我们如果给一个数组,在控制台就会报错
server.on('request', (request,response) => {
  let back = ['高启强','安欣']
  response.write(back)
  response.end()
})
在控制台提示:
TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Array

怎么解决默认只能发送字符串或者二进制的数据
//使用 JSON.stringify()转化为字符号
server.on('request', (request,response) => {
  let back = ['高启强','安欣']
  //注意:设置请求头需要放置在发送的前面
  response.setHeader('Content-Type','text/html; charset=utf-8');
  //这里使用 response.end 也可以发送数据
  response.end(JSON.stringify(back))
})

标签:node,fs,http,读取,request,模块,error,data,response
From: https://www.cnblogs.com/IwishIcould/p/17091287.html

相关文章

  • MDA500-16-ASEMI电源控制柜模块MDA500-16
    编辑:llMDA500-16-ASEMI电源控制柜模块MDA500-16型号:MDA500-16品牌:ASEMI封装:MDA特性:整流模块正向电流:500A反向耐压:1600V恢复时间:>500ns引脚数量:2芯片个数:2芯片尺寸:MIL浪涌电......
  • 撸机智云羊毛-nodemcu 环境监测-之一
    前段时间,有个朋友家厨房漏水,半夜起来上厕所才发现,满地都是水,然后打算买个水滴传感器。买了个小米水滴传感器发现单独无法使用,需要配上网关,一套下来也要100+了,索性退了,......
  • Node.JS 配置cnpm
    视频百度npm搜到淘宝npm镜像npminstall-gcnpm--registry=//registry.npm.taobao.org这样既不影响npm访问美国服务器,又不影响cnpm访问中国服务器......
  • Node.JS npm简介
    视频npm的命令npm-v查看npm的版本npmversion查看所有模块的版本npmsearch包名搜索包npminstall/i包名安装包npmremove/r包名删除包npminsta......
  • Node.JS包简介(讲解了json文件怎么看)
    视频json文件不能写注释......
  • Node.JS exports和module.exports区别
    视频05.module.jsvarhello=require("./helloModule");/* exports和module.exports -通过exports只能使用.的方式来向外暴露内部变量 exports.xxx=xxx......
  • Node.JS模块化详解(Math加乘实现/模块外包围)
    视频math.js/* 定义一个模块math -在该模块中提供两个方法 add(a,b);//求两个数的和 mul(a,b);//求两个数的积*/module.exports.add=function(a......
  • nodejs系列-如何用JS代码连接远程服务器并执行命令创建文件-ssh2
    ssh2是什么?SSH2clientandserver模块用纯JavaScript为node.js编写。我们可以在代码里使用它链接远端服务器,执行一些必要的操作为什么要使用ssh2?作为一名前端,我们......
  • re模块02-re模块
    re模块是内置模块findall()方法按照完整的正则进行匹配,有括号(分组)只是显示括号里匹配到的内容匹配结果是以列表的形式返回所有正则匹配的内容importrejieGuo=re.finda......
  • bfs 实战-求连通分量个数
    bfs即广度优先搜索,等同于树的层序遍历,下面用一个题目来讲解题目:图的广度优先遍历问题描述已知无向图的邻接矩阵,以该矩阵为基础,给出广度优先搜索遍历序列,并且给出该无向......