目录
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()
的详细解释:
- 结束响应:
res.end()
用于快速结束响应,而无需任何数据。一旦调用这个方法,响应过程就会被立即终止,不会再发送任何数据给客户端。 - 响应数据:"所见即所得"。
res.end()
的返回数据同res.write()
一样,也是没有经过处理的,原封不动的返回原数据。也就是说,你在res.end()
中输出的内容将直接作为响应体发送给客户端。 - 不允许输出多行:不同于
res.write()
方法,res.end()
作为结束浏览器请求的方法,仅能调用一次。这是因为res.end()
的主要作用是结束响应,因此只能结束一次。尝试多次调用res.end()
可能会导致程序出错。 - 可以结合HTML标签显示:
res.end()
同res.write()
一样,输出的内容可以是带HTML标签的内容。例如,你可以这样使用:res.end('<div>该方法用于结束响应的浏览器请求</div>');
- 数据类型支持:
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
方法的两个参数,即头部字段名称和头部字段值,都有多种选择。
-
头部字段名称(
fieldName
):Content-Type
:指定响应体的内容类型。常见的值包括text/html
、text/plain
、application/json
、application/xml
等。Content-Disposition
:指定响应体的内容处置方式。常见的值包括inline
(在浏览器中直接显示)和attachment
(作为附件下载)。Content-Length
:指定响应体的内容长度(以字节为单位)。Cache-Control
:指定缓存行为。常见的值包括public
(可缓存)、private
(可私有缓存)、no-cache
(不缓存)、max-age
(指定缓存时间)等。Expires
:指定响应的过期时间。通常与Cache-Control
一起使用。Set-Cookie
:设置 cookie。可以设置多个 cookie,每个 cookie 之间用分号和空格分隔。- 其他头部字段:还有许多其他可用的 HTTP 头部字段,如
ETag
、Last-Modified
、Location
等,具体取决于你的需求。
-
头部字段值(
fieldValue
):- 对于
Content-Type
,常见的值包括text/html
、text/plain
、application/json
、application/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
,常见的值包括public
、private
、no-cache
、max-age
等,具体取决于你希望的缓存行为。 - 对于
Expires
,你需要提供一个过期时间,通常是一个 Unix 时间戳或一个 HTTP 日期。 - 对于
Set-Cookie
,你需要提供一个或多个 cookie 的名称和值,以及可能的其他选项如expires
、path
、domain
等。
- 对于