node读取文件进阶(详解)
时间:2022-06-08
本文章向大家介绍node读取文件进阶(详解),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
刚才简单介绍了一下node读取同级页面的html文件,没有类似于Apache的服务,让访问变得复杂,因为这样正是成就了node的优点!优良的路由处理,通过路由访问不同内容!
本次小案例:不同路由访问不同页面,一个404页面,不同的路由加载的一个包含其他外部文件的(html包含外部的css)!
1.通过127.0.0.1访问index.html文件
2.通过127.0.0.1/test.html访问test.html文件
3.通过127.0.0.1处理指定路由外访问404页面!
代码分析
file.js
//引入模块
const http =require("http");
//引入文件模块
const fs= require("fs");
//创建服务器
const server = http.createServer(function(req,res){
//设置响应头
res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"})
//请求的路由地址
if(req.url == "/" || req.url=="/index.html"){
fs.readFile("index.html",function(err,data){
//设置响应头
res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
//加载的数据结束
res.end(data)
})
}else if(req.url=='/notstyle.css'){
fs.readFile("style.css",function(err,data){
res.writeHead(200,{"Content-Type":"text/css;charset=UTF-8"});
//加载的数据结束
res.end(data)
})
}else if(req.url=='/banner.JPG'){
fs.readFile("banner.JPG",function(err,data){
res.writeHead(200,{"Content-Type":"image;charset=UTF-8"});
//加载的数据结束
res.end(data)
})
}else if(req.url=='/test.html'){
fs.readFile("test.html",function(err,data){
res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
//加载的数据结束
res.end(data)
})
}
else{
res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
//加载的数据结束
res.end('<h1> 所需内容未找到404 </h1>')
}
})
//监听端口
server.listen(3001,"127.0.0.1")
同级目录文件
index.html
<html>
<head>
<meta charset="UTF-8">
<title>nodejs页面</title>
</head>
<body style="width:80%;margin:0 auto">
<h1 style="text-align: center;">你好,世界!这是一个标题</h1>
<p style="color:#ff0036;font-size:18px;">
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器 npm,是全球最大的开源库生态系统。
</p>
<p style="color:#66ffff;font-size:48px;">
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
</p>
<a href="test.html">进入test页面</a>
</body>
</html>
test.html
<html>
<head>
<meta charset="UTF-8">
<title>nodejs页面</title>
</head>
<body style="width:80%;margin:0 auto">
<h1 style="text-align: center;">你好,世界!这是一个标题</h1>
<p style="color:#ff0036;font-size:18px;">
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器 npm,是全球最大的开源库生态系统。
</p>
<p style="color:#66ffff;font-size:48px;">
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
</p>
<a href="test.html">进入test页面</a>
</body>
</html>
style.css
body{
background-color: mediumpurple;
width:100%;
height:100%;
}
第一个简单的访问文件前面已经详细探讨过,第二个访问/test.html中发现我们引入了一个img标签,
但是像上面(第一个页面)引用img发现图片不能加载,此时我们同样要进行这个路由处理!
else if(req.url=='/banner.JPG'){
fs.readFile("banner.JPG",function(err,data){
res.writeHead(200,{"Content-Type":"image;charset=UTF-8"});
//加载的数据结束
res.end(data)
})
访问这个图片的路由时候,同样进行读取文件,此时类型修改为image,顶部路由可以随意写(req.url=='/banner.jpg'),但是这个地址要和test中的img的src要保持一致!下面我们引入css的时候会使用路由的这个特性!
else if(req.url=='/notstyle.css'){
fs.readFile("style.css",function(err,data){
res.writeHead(200,{"Content-Type":"text/css;charset=UTF-8"});
//加载的数据结束
res.end(data)
})
}
此时读取的的路由(req.url)就不是这个css的文件名字(style.css),访问顶部路由的notstyle.css去读取真正的外部css文件(style.css)!
总结:请求的路由(req.url)的地址不一定这个文件存在,但是读取的文件一定正确!
- muduo网络库学习之EventLoop(四):EventLoopThread 类、EventLoopThreadPool 类
- 从小程序游戏开放可以看出,微信已经开始转移小程序战场了
- 17年AI在游戏中完胜人类,AlphaGo的下一个目标是什么?DeepMind有一个45年超越人类计划
- PHP常用的正则表达式
- ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?
- 浅析负载均衡的6种算法,Ngnix的5种算法
- 字符串的学习
- 【Scikit-Learn 中文文档】内核岭回归 - 监督学习 - 用户指南 | ApacheCN
- 可视化(番外篇)——在Eclipse RCP中玩转OpenGL
- 养良好C语言编程风格,编优质C语言代码,这才是C语言的开始
- IBM让《星球大战》中的各种黑科技变成现实
- 学习SVM(二) 如何理解支持向量机的最大分类间隔
- 解密区块链:不可编辑性带来的问题
- 学习SVM(三)理解SVM中的对偶问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- .NET Standard 类库的使用技巧
- Makefile实例:批量编译多个目标
- GitHub如何回滚代码1.git log 查看commit hash值2.执行git reset --hard xxxx3.git push -f
- java获取程序执行时间
- Redis数据增多了,是该加内存还是加实例?
- 针对mysql delete删除表数据后占用空间不变小的问题
- 报错信息:(VI_1): ip address associated with VRID 80 not present in MASTER advertt : 192.168.1.8
- 如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?
- 如果MySQL的 InnoDB 文件的损坏,该如何手动恢复?
- 如何使用慢查询快速定位执行慢的 SQL?
- 如何使用 EXPLAIN 精准查看执行计划?
- MySQL怎么查看 SQL 的具体执行成本?
- Python 爬虫进阶必备 | 某外卖优惠平台内容加密参数分析
- pytest 自动化测试框架(二)
- Web | Django 与数据库交互,你需要知道的 9 个技巧