01-导入node模块使用流程

// node.js中将不同功能的代码放在不同的js文件中,也叫模块化,核心模块会随着安装node.js时一并安装// 1. 导包 (本质就是得到一个全局对象,存储很多方法或属性)const fs = require('fs');// 2.使用模块fs.readFile(...)

02- fs模块基本使用

2.1 readFile 读取文件数据

// 1.导入模块const fs = require('fs');

// 2.读取文件// fs.readFile('文件路径', options, 回调函数(err, data) => {})

fs.readFile('./123.txt', 'utf-8', (err, data) => {  // 没有错误信息 err 为 null  // 如果有错误信息 if成立 执行 throw 程序终止并抛出异常  if (err) throw err;    // 代码能执行到这里说明没有错误信息  // 就可以使用data参数来拿到从文件中读取到的数据  console.log(data)})
  • 文件读取默认是二进制类型,可以指定编码

2.2 writeFile 将数据写入文件

// 1.导入模块const fs = require('fs');// 2.写入文件// fs.writeFile(path, data, encode, callback())fs.writeFile('./222.txt', 'hello world', (err) => {  if (err) throw err;  console.log('写入成功');})
  • 文件写入默认是 w 模式,要写入的文件不存在会自动新建,存在会覆盖,
  • 写入数据到已存在文件时,如果不想覆盖文件原有内容,可以指定{flag: 'a'} 追加模式

03-fs中文件读取写的同步和异步区别

/* 1. 同步与异步区别    1.1 API不同 : 异步有回调,同步没有    1.2 顺序不同: 同步有序优先执行,异步无序执行    1.3 性能不同: 异步不阻塞线程性能高,同步阻塞线程性能低2. 了解编译器工作流程    1.编译器从上往下依次解析代码    2.判断代码是同步还是异步        2.1 同步:立即执行        2.2 异步:不执行。放入事件队列池(Event Loop)    3.页面所有代码执行完毕后才会执行异步*/

// 异步执行fs.readFile('1.txt', 'utf8', (err, data) => {  if (err) throw err;  cnsole.log('异步执行')})// 异步执行fs.writeFile(filePath, 'abc123', {flag: 'a'}, (err) => {    if (err) throw err;    console.log('写入成功');})

// 同步执行fs.writeFileSync(filePath, '同步写入', {flag: 'a'})// 同步执行const data1 = fs.readFileSync('1.txt', 'utf8');

04-path文件路径模块

  • 前端和node中相对路径的区别

    • 前端相对路径 : 是 基于./所在文件的 文件夹路径
    • nodejs中相对路径: 是基于执行node命令时 终端所在的路径
  • 如果nodejs中使用了相对路径,就必须要在执行node命令前进入要执行文件的所在路径,不然就会报错
  • 所以最好不要在node中使用相对路径,应该使用绝对路径
    • nodejs 中每一个文件都有两个默认的全局变量
    • __dirname : 当前js所在的文件夹绝对路径
    • __filename : 当前js文件自身的绝对路径
  • path模块: path.join(...paths: string[])拼接路径
    • 用join方法拼接路径时 可以不用关心连接处的 路径分隔符问题
    • 自动识别当前操作系统的路径分隔符,进行拼接
    • 自动识别路径分隔符的一些错误格式,自动改成正确格式

05-http服务器模块

5.1 http模块搭建服务器

// 1.导入模块const http = require('http');

// 2.创建服务器// 参数: request  代表的是本次客户端发送过来的请求报文,服务器将二进制的请求报文转换成了对象的形式来表示// 参数: response 代表本次服务器要响应(返回)给客户端的响应报文, 服务器会在返回前将对象转换成二进制的响应报文const server = http.createServer((request, response) => {  // 服务器每收到一个请求,就会执行一次这个回调函数 // 1. 接收(获取)请求数据  request  // 2. 处理本次请求的业务逻辑(服务端主要业务操作数据进行增删改查)  // 3. 返回响应  response

  // 解决请求url路径中文转码  decodeURI(request.url);

 // 设置响应头解决浏览器显示中文乱码   res.writeHead(200, {            // 'Content-Type': 'text/plane;charset=utf-8'         'Content-Type': 'applictaion/json;charset=utf-8'        })

  // 响应数据 只能响应字符串或二进制  // 如果要响应json必须转字符串再响应 const jsonStr = JSON.stringify(jsonObj)  response.end(jsonStr)})

// 3. 开启服务器 (准备就绪)server.listen(8000, localhost,() => {  console.log('服务器启动成功, 监听8000端口')})

06-响应html给客户端

  • 将html文件利用fs和path模块读取出来再响应
// 1.导入模块const http = require('http');const fs = require('fs');const path = require('path');

// 2.创建服务器const server = http.createServer((request, response) => {  fs.readFile(path.join(__dirname, 'index.html'), (err, data) => {    if (err) throw err;    response.end(data);  // 这里读取文件时没有指定utf8编码读取出来是二进制数据,少去多余转换,性能更高  })})

// 3. 开启服务器server.listen(8000, () => {  console.log('服务器启动成功,监听8000端口');})

~END~

点赞、分享、关注我

我们一起学习!

返回txt格式的文本使用编码 js_Node.js学习笔记第一天相关推荐

  1. 利用计算机技术实现对文本篇章,自然语言处理NLP学习笔记一:概念与模型初探...

    前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. 知识图谱: 还有2个实际应用的例子,加深对NLP的理解 九歌机器人: 微软 ...

  2. ADPCM编码与解码学习笔记·

    ADPCM编码与解码学习笔记 一.前言 之前许多次说过,有空的时候写写博客,可是一直没有好好落实.由于工作的原因,经常会接触到一些音视频的编解码技术,而ADPCM就是我第一接触的音频编码技术.所以,本 ...

  3. C语言文件操作(五)将txt格式16进制编码转化为txt格式汉字

    准备 将想要转换为16进制的文字保存为after.txt,与该程序放在同一目录下 举例 存好after.txt,运行程序后,将在同一目录下生成文件words.txt C代码 //文件操作2.cpp # ...

  4. C语言文件操作(四)将txt格式汉字转化为txt格式16进制编码

    准备 将想要转换为16进制的文字保存为before.txt,与该程序放在同一目录下 举例 存好before.txt,运行程序后,将在同一目录下生成文件after.txt C代码 //文件操作1.cpp ...

  5. linux getline函数用法,Linux文本处理三剑客之awk学习笔记05:getline用法详解

    getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据.我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个非待处理文件的数据,或者从某个读取某个 ...

  6. postfilter中文什么意思_Filterpost请求中文字符编码的过滤器 --学习笔记

    java代码:import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;i ...

  7. 指数哥伦布编码 java_H.264学习笔记6——指数哥伦布编码

    一.哥伦布码 哥伦布码就是将编码对象分能成等间隔的若干区间(Group),每个Group有一个索引值:Group Id. >对于Group Id采用二元码编码: >对于Group内的编码对 ...

  8. Auto.js学习笔记13:images.findImag()报错找不到方法,返回的坐标无法点击等问题利用图片的相似度执行精准目标点击(实战篇)

    申明本人使用的autojs是4.1.1版本 目录 操作app是云闪付的小程序抢消费劵 实际开发中各种问题并解答 错误代码 报错:Can't find method findImage()函数 问题: ...

  9. 文本样式设置/盒子模型学习笔记

    一.记单词.复习前一天的学习内容.讲解练习作业. 二.转义字符 http://tool.oschina.net/commons?type=2 (转义字符的链接) 三.文本样式设置 1.text-ind ...

最新文章

  1. IDP申请直到软件上架流程 - iOS
  2. 框架警察 fxcop 的规则莫名其妙
  3. Python 学习笔记之字典(进阶篇)
  4. Spring Framework Part2 IOC
  5. python心得体会-终于懂得python基础学习心得
  6. 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_图解:什么是“图”?
  7. 大数据时代了解一些问题
  8. eclipse如何用php,phpeclipse使用详解
  9. 随机游走与马尔科夫链的一些基础
  10. 实用的Chrome插件推荐
  11. jquery的插件有哪些
  12. kali虚拟机VMBox安装
  13. 写给即将毕业的同学们
  14. 开学季适合学生党的蓝牙耳机,音质好的蓝牙耳机排行
  15. Android刘海屏、水滴屏全面屏适配详解,androidui基础教程
  16. java8的stream流编程的sorted排序方法
  17. 数据中台推不动?手把手教你落地搭建!
  18. 灰色关联分析的简单介绍以及使用
  19. 奔向三张,不破不立:一个iOS开发工程师的职业规划思考(转自iOSer 逆,以资激励)
  20. php 获取百度权重,获取网站 百度权重 搜狗 谷歌PR

热门文章

  1. pybind播放视频
  2. 分割开源资料整理segmentation
  3. OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案
  4. java单例模式-有用的模式
  5. 目标跟踪学习算法DSST
  6. 后台管理系统怎么实现操作日志原理_springboot角色权限后台管理系统脚手架实战开发教程包含完整源码...
  7. parquet to mysql_在hive中使用parquet (CDH4.3)
  8. net.sf.json将string转为map
  9. 秒杀系统架构优化思路
  10. matlab mnl,LaTex中插入VISO 和 MATLAB 经验总结