读取文件 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模块的学习的更多相关文章

  1. node中没有全局作用域,只有模块作用域(文件作用域)

    node中没有全局作用域,只有模块作用域(文件作用域)

  2. 说说对 Node 中的 fs 模块的理解? 有哪些常用方法?

    一.是什么 fs(file system),该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装 可以说,所有与文件的操作都是通过fs核心模块实现 导入模块如下: const fs  ...

  3. node.js 中的 fs (文件)模块

    记录 fs 模块的方法及使用 1. fs.stat 获取文件大小,创建时间等信息 // 引入 fs 模块 const fs = require('fs'); fs.stat('01.fs.js', ( ...

  4. node.js的fs核心模块读写文件操作 -----由浅入深

    node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFil ...

  5. node中的模块

    模块 编写稍大一点的程序时一般都会将代码模块化.在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名. 在编写每个模块时,都有require.expor ...

  6. node中非常重要的process对象,Child Process模块

    node中非常重要的process对象,Child Process模块Child Process模块http://javascript.ruanyifeng.com/nodejs/child-proc ...

  7. 使用node中mysql模块连接本地数据库

    连接数据库的方法迄今为止学了三种: cmd方式.可视化工具,今天记第三种----node端连接数据库. 一:mysql模块介绍与下载 1.mysql模块是node端专门连接数据库的第三方模块 2.下载 ...

  8. Node中导入模块require和import??

    转自:https://blog.csdn.net/wxl1555/article/details/80852326 S6标准发布后,module成为标准,标准的使用是以export指令导出接口,以im ...

  9. Node中的net模块提供的前端通信

    Node中的net模块提供的前端通信 客户端 业务: 客户端现在要在终端输入内容,然后回车发送内容给服务器 解决: Node中提供了一个叫做 readline 的 模块用于读取命令行内容 [ 单行读取 ...

  10. Node中的模块系统

    加载require var 自定义变量名称 = require('模块') 两个作用: 执行被加载模块的代码 得到被加载模块中的exports导出接口对象 导出exports node中是模块作用域, ...

随机推荐

  1. 1500万员工轻松管理,云原生数据库GaussDB让HR办公更高效

    摘要: 云原生数据库GaussDB助力"2号人事部"打造高品质HR效率软件 本文分享自华为云社区<1500万员工轻松管理,云原生数据库GaussDB让HR办公更高效>, ...

  2. IaaS首席架构师的架构设计思考与实践

    摘要:本文分享了华为云Stack IaaS的设计思考与实践,基于公有云先进的架构技术和创新能力,采用重构改造+积木式搭配+抽屉式替换等方式,健康的.可持续的为客户不断的提供产品和服务. 本文分享自华为 ...

  3. 用 Java?试试国产轻量的 Solon v1.10.7

    Java 国产的轻量级应用开发框架.可用来快速开发 Java 应用项目.主框架仅 0.1 MB.Helloworld: @Controller public class App { public st ...

  4. PPT 工作需求:如何利用PPT做活动海报&H5?

    PPT 工作需求:如何利用PPT做活动海报? 图片素材 + 字体 + 封面排版 PPT 工作需求:如何利用PPT制作H5? https://www.maka.im/muban http://www.p ...

  5. Spring Boot JWT 用户认证

    JWT token验证后,通过 ThreadLocal 进行传值 https://jwt.io/#debugger 官网提供的 JAVA 工具还是挺多的,选了个 Star 比较多的 https://g ...

  6. 简洁好用的python-pip包更新工具

    今天推荐一个github的开源工具 pkgu,支持以表格形式展示当前python环境下的有新版本的package的版本信息,并支持全部或部分更新这些已经过期或者有新版的库. 该工具目前还提供了 cac ...

  7. Go--gjson

    GJSON 是一个用于处理 JSON 数据的 Go 语言库.它提供了一些方便的功能,例如解析 JSON 字符串.查询 JSON 对象.生成 JSON 对象等 下载gjson: go get -u gi ...

  8. 洛谷P2678:跳石头(贪心 + 二分)

    题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间 ...

  9. 5.0 数据库完整性详解(PRIMARY KEY、REFERENCES、CHECK、CONSTRAINT、DOMAIN、TRIGGER)

    前言 本篇文章学习书籍:<数据库系统概论>第5版 王珊 萨师煊编著 视频资源来自:数据库系统概论完整版(基础篇+高级篇+新技术篇) 由于 BitHachi 学长已经系统的整理过本书了,我在 ...

  10. C++ tuple(STL tuple)模板用法详解

    tuple 是C++ 11新引进的 build-in structure,但其实在其他语言中tuple的使用已经行之有年(e.g. Javascript和Python中都有tuple).C++ 11中 ...