Node.JS学习小结

目录

读写文件为异步操作

FS模块 path模块

绝对路径相对路径​编辑

build.js 压缩代码

URL端口

http模块 ctrl+c关闭服务器

请求响应

小结:

一次刷新,两次请求     favicon.ico

res.end()的详细解释:

想要将cssResult的内容插入到HTML文件的 标签中

data.toString()  http.createServer()      有括号!!!!!!

res.setHeader("Content-Type",'application/json')函数


读写文件为异步操作

FS模块 path模块

绝对路径相对路径

console.log(__dirname)
//__dirname 不加引号 ..返回上一级 path.join 自动加/
console.log(path.join(__dirname,'..','test.txt')) 
fs.readFile(path.join(__dirname,"电商 2/index.html"),(err,data)=>{ //错误原因电商 2之间有空格
    // 如果有错误,打印
    if(err) return  console.log(err)
    console.log(data.toString())
})

build.js 压缩代码

/* 目标一:压缩 html 里代码需求:
把 public/index.html 里的 回车/换行符去掉,写入到 dist/index.html 中
1.1 读取 public/index.htm1 内容
1.2 使用正则替换内容字符串里的,回车符\r 换行符\n
1.3 确认后,写入到 dist/index.htm1 内 */

// 导入模块 fs path
const fs=require('fs')
const path=require('path')
console.log(path.join(__dirname,"电商 2/index.html"))
// 1.1 读取 public/index.htm1 内容
fs.readFile(path.join(__dirname,"电商 2/index.html"),(err,data)=>{
    // 如果又错误,打印
    if(err) return  console.log(err)
    // console.log(data.toString())
    const htmlStr = data.toString()
// 1.2 使用正则替换内容字符串里的,回车符\r 换行符\n
// replace 函数替换 支持正则
// /\s+/正则表达式 +/*表示 1/0或多次 g表示全局匹配 [\r\n] 将换行符或回车符替换
    const htmlResult=htmlStr.replace(/[\r\n]/g, '').replace(/\s+/g,' ')
    // console.log(htmlResult)
    fs.writeFile(path.join(__dirname,"dirt/index.html"),htmlResult,err=>{
        console.log(err)
    })
})

URL端口

http模块 ctrl+c关闭服务器

请求响应

小结:

一次刷新,两次请求     favicon.ico

当浏览器加载一个网页时,它会自动发送一个请求来获取网页的图标,这通常是一个叫做 "favicon.ico" 的文件。这就是你看到第二次请求 "/favicon.ico" 的原因。

res.end()是Node.js中HTTP模块的一个方法,它用于结束响应过程。这个方法实际上来自Node核心,特别是HTTP.ServerResponse的response.end()方法。

res.end()的详细解释:

  1. 结束响应:res.end()用于快速结束响应,而无需任何数据。一旦调用这个方法,响应过程就会被立即终止,不会再发送任何数据给客户端。
  2. 响应数据:"所见即所得"。res.end()的返回数据同res.write()一样,也是没有经过处理的,原封不动的返回原数据。也就是说,你在res.end()中输出的内容将直接作为响应体发送给客户端。
  3. 不允许输出多行:不同于res.write()方法,res.end()作为结束浏览器请求的方法,仅能调用一次。这是因为res.end()的主要作用是结束响应,因此只能结束一次。尝试多次调用res.end()可能会导致程序出错。
  4. 可以结合HTML标签显示:res.end()res.write()一样,输出的内容可以是带HTML标签的内容。例如,你可以这样使用:res.end('<div>该方法用于结束响应的浏览器请求</div>');
  5. 数据类型支持:res.end()只支持输出字符串类型或是Buffer对象。

总的来说,res.end()是一个非常实用的方法,可以帮助你在处理HTTP请求时快速结束响应。

想要将cssResult的内容插入到HTML文件的<style></style>标签中

`<style>${cssResult}</style>` 是数字键盘1左面的按键``````  不是引号 '''''''''

data.toString()  http.createServer()      有括号!!!!!!

res.setHeader("Content-Type",'application/json')函数

res.setHeader 方法的两个参数,即头部字段名称和头部字段值,都有多种选择。

  1. 头部字段名称(fieldName):

    • Content-Type:指定响应体的内容类型。常见的值包括 text/htmltext/plainapplication/jsonapplication/xml 等。
    • Content-Disposition:指定响应体的内容处置方式。常见的值包括 inline(在浏览器中直接显示)和 attachment(作为附件下载)。
    • Content-Length:指定响应体的内容长度(以字节为单位)。
    • Cache-Control:指定缓存行为。常见的值包括 public(可缓存)、private(可私有缓存)、no-cache(不缓存)、max-age(指定缓存时间)等。
    • Expires:指定响应的过期时间。通常与 Cache-Control 一起使用。
    • Set-Cookie:设置 cookie。可以设置多个 cookie,每个 cookie 之间用分号和空格分隔。
    • 其他头部字段:还有许多其他可用的 HTTP 头部字段,如 ETagLast-ModifiedLocation 等,具体取决于你的需求。
  2. 头部字段值(fieldValue):

    • 对于 Content-Type,常见的值包括 text/htmltext/plainapplication/jsonapplication/xml 等,具体取决于响应体的内容类型。 

      Content-Type 头部字段用于指示资源的媒体类型。下面是一些常见的 Content-Type 值及其含义:text/html:表示 HTML 文档。这个值告诉浏览器,响应体包含的是 HTML 代码,浏览器应该将其渲染为网页。text/plain:表示纯文本。这个值告诉浏览器,响应体包含的是纯文本,不应该进行任何特殊的渲染或解析。application/json:表示 JSON 数据。这个值告诉浏览器或其他客户端,响应体包含的是 JSON 格式的数据,客户端应该将其解析为 JavaScript 对象。application/xml:表示 XML 数据。这个值告诉浏览器或其他客户端,响应体包含的是 XML 格式的数据,客户端应该将其解析为相应的 XML 结构。除了这些常见的值,还有许多其他可用的 Content-Type 值,用于指示不同类型的资源,如 image/jpeg(表示 JPEG 图像)、audio/mpeg(表示 MP3 音频)等等。在设置 Content-Type 头部字段时,选择正确的值非常重要,因为它告诉客户端如何正确地解析和处理响应体的内容。这有助于确保数据的正确显示和使用,并能提高应用程序的可靠性和互操作性。

    • 对于 Content-Disposition,常见的值包括 inline 和 attachment,具体取决于你希望如何处置响应体的内容。
    • 对于 Content-Length,你需要提供响应体的实际字节数。
    • 对于 Cache-Control,常见的值包括 publicprivateno-cachemax-age 等,具体取决于你希望的缓存行为。
    • 对于 Expires,你需要提供一个过期时间,通常是一个 Unix 时间戳或一个 HTTP 日期。
    • 对于 Set-Cookie,你需要提供一个或多个 cookie 的名称和值,以及可能的其他选项如 expirespathdomain 等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值