node中的fs模块和http模块的学习
读取文件 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模块的学习的更多相关文章
- node中没有全局作用域,只有模块作用域(文件作用域)
node中没有全局作用域,只有模块作用域(文件作用域)
- 说说对 Node 中的 fs 模块的理解? 有哪些常用方法?
一.是什么 fs(file system),该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装 可以说,所有与文件的操作都是通过fs核心模块实现 导入模块如下: const fs ...
- node.js 中的 fs (文件)模块
记录 fs 模块的方法及使用 1. fs.stat 获取文件大小,创建时间等信息 // 引入 fs 模块 const fs = require('fs'); fs.stat('01.fs.js', ( ...
- node.js的fs核心模块读写文件操作 -----由浅入深
node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFil ...
- node中的模块
模块 编写稍大一点的程序时一般都会将代码模块化.在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名. 在编写每个模块时,都有require.expor ...
- node中非常重要的process对象,Child Process模块
node中非常重要的process对象,Child Process模块Child Process模块http://javascript.ruanyifeng.com/nodejs/child-proc ...
- 使用node中mysql模块连接本地数据库
连接数据库的方法迄今为止学了三种: cmd方式.可视化工具,今天记第三种----node端连接数据库. 一:mysql模块介绍与下载 1.mysql模块是node端专门连接数据库的第三方模块 2.下载 ...
- Node中导入模块require和import??
转自:https://blog.csdn.net/wxl1555/article/details/80852326 S6标准发布后,module成为标准,标准的使用是以export指令导出接口,以im ...
- Node中的net模块提供的前端通信
Node中的net模块提供的前端通信 客户端 业务: 客户端现在要在终端输入内容,然后回车发送内容给服务器 解决: Node中提供了一个叫做 readline 的 模块用于读取命令行内容 [ 单行读取 ...
- Node中的模块系统
加载require var 自定义变量名称 = require('模块') 两个作用: 执行被加载模块的代码 得到被加载模块中的exports导出接口对象 导出exports node中是模块作用域, ...
随机推荐
- 推理实践丨如何使用MindStudio进行Pytorch模型离线推理
摘要:本教程所示例的任务是Ascend Pytorch离线推理,即对给定的已经训练好的模型参数和推理脚本,在Ascend 310/710和Tesla设备上进行推理应用. 本文分享自华为云社区<使 ...
- 超大超详细图解,让你掌握Spark memeoryStore内存管理的精髓
摘要:memoryStore主要是将没有序列化的java对象数组或者序列化的byteBuffer放到内存中. 本文分享自华为云社区<spark到底是怎么确认内存够不够用的?超大超详细图解!让你掌 ...
- java并发编程(1):Java多线程-基本线程类-基础知识复习笔记
复习资料:<同步与异步:并发/并行/进程/线程/多cpu/多核/超线程/管程 > 基本线程类 基本线程类 基本线程类指的是Thread类,Runnable接口,Callable接口 继承T ...
- web自动化测试(3):web功能自动化测试selenium基础课
继上篇<web自动化测试(1):为什么选择selenium做自动化测试>,本文介绍如selenium使用 做UI自动化测试,需要什么技能 前端相关技术:HTML.XML.JavaScrip ...
- 【已解决】无法打开.xlsx文件,xlrd.biffh.XLRDError: Excel xlsx file; not supported
原因是最近xlrd更新到了2.0.1版本,只支持.xls文件.所以x1 = xlrd.open_workbook("data.xlsx")会报错. 可以安装旧版xlrd,在cmd中 ...
- sqlalchemy 报错 Lost connection to MySQL server during query 解决
最近在开发过程中遇到一个sqlalchemy lost connection的报错,记录解决方法. 报错信息 python后端开发,使用的框架是Fastapi + sqlalchemy.在一个接口请求 ...
- 用Python制作高逼格数学动画manim
简介 manim是斯坦福大学数学系小哥Grant Sanderson开源的数学仿真模拟python库,并用于YouTube 频道3Blue1Brown,来解说高等数学. manim是一个非常优秀的数学 ...
- 【django-vue】celery延迟任务、定时任务 django中使用celery 秒杀功能 双写一致性 首页轮播图定时更新 课程前端页面
目录 上节回顾 字符编码 django-redis 今日内容 1 celery 执行异步任务,延迟任务,定时任务 延时任务 定时任务 2 django中使用celery 2.1 秒杀功能 2.1.1 ...
- VA41 销售合同创建BAPI
一.事务代码VA41 合同创建的过程和销售订单几乎一致 二.调用BAPI 调用BAPI为BAPI_CONTRACT_CREATEFROMDATA 传参和销售订单BAPI:BAPI_SALESORDER ...
- 同步时间,为什么我选 Chrony 而不是 NTP ?
初识 chrony chrony 是网络时间协议(Network Time Protocol )的通用实现 它不但可以提供保持系统时间与 NTP 时钟服务器同步的服务,还能作为 NTP 服务器对其他服 ...