node读取html文件

node和Apache是没有web容器的,node的目录下的同级文件是无法使用/filename进行访问的,因为node没有根目录门也没用web容器!

简单解释一下上面的话

比如我的node项目在d盘的nodedemo文件夹下file.js,同级目录下有index.html

file.js监听的端口是3001,可以使用127.0.0.1:3001进行访问node项目,但是这个index.html怎么访问呢?

经受Apache的洗脑,有同学会自作聪明,加/filename访问,即127.0.0.1:3001/index.html,发现这样做是不行的!因为ndoe没有web容器,没有web容器,没有web容器!重要的说三遍!那么这个问题如何解决呢!

首先我们会用到一个fs模块!就像http模块,这里的fs是文件系统模块!

代码实例

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{
		res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
			//加载的数据结束
			res.end('<h1> 所需内容未找到404 </h1>')
	}
})
//监听端口
server.listen(3001,"127.0.0.1")

这样通过url路由访问127.0.0.1/或者127.0.0.1/index.html就可以访问到同级的index.html文件了!

下面简单解释一下这个fs.readFile(读取文件)

上述代码中看到请求的路由(req.url)后的读取文件

代码分析

		fs.readFile("index.html",function(err,data){
			//设置响应头
			res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
			//加载的数据结束
			res.end(data)
		})

需要找到读取的文件(路径很重要,不啊哟搞错了,这里是相对路径),然后一个回调函数,这个函数有两个参数err和data,

err表示错误,data表示这个加载的文件的数据!

设置http的响应头,res.end(data)页面输出加载的内容并结束!

简单的文件加载搞定,下面一篇我们继续介绍文件加载进阶篇!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

使用密码记录工具keepass来保存密码

在第一章,曾经给过您建议,密码不要保存在文档中,那样不安全,如果密码很多而且又很复杂,人的大脑是不可能很容易记住的,只能记录下来,如果不能记在文档中那记在哪里呢...

3909
来自专栏Youngxj

sitemap插件(自适应站点优化)

1712
来自专栏西安-晁州

react-native学习之环境安装

1、首先是java环境安装-安装JDK 2、安装Android-SDK,推荐以下地址:http://tools.android-studio.org/index...

2090
来自专栏你不就像风一样

[原创]颠覆传统网站开发模式的web服务器

以Java web举例,现在的网站系统开发模式,对于web端和服务端的数据交互以及页面渲染,无外乎两种:

1222
来自专栏小程序之家

如何在小程序中实现文件上传下载

在如何实现小程序登录鉴权这篇文章中,我们实现了小程序的wx.request请求操作,除了request之外,小程序还有文件下载wx.downloadFile和文...

11K6
来自专栏DeveWork

WordPress 开发之让浏览器自动加载最新的CSS、JS文件(免刷新缓存)

在开发WordPress 主题的时候,如果频繁更新主题的CSS、JS文件但主题已经上线,如何让访客的浏览器获取最新的CSS、JS文件而非等到浏览器删除缓存后?下...

2378
来自专栏wym

Linux ubntu 下操作

ls 显示当前下面的文件及文件夹 ls -a 显示当前目录下的所有文件及文件夹包括隐藏的.和..等 ls -al 显示当前目录下的所有文件及文件夹包括隐藏的.和...

1392
来自专栏王二麻子IT技术交流园地

《跟我学IDEA》六、插件(编码利器)

idea的另一个可爱之处,就是它的强大的插件,下面我以CodeGlance插件为例,这个可以快速定位代码。 第一节:安装插件   ● All plugins 显...

4277
来自专栏Android干货

网页一键加入QQ群

3695
来自专栏云计算教程系列

如何在CentOS 7上使用InfluxDB分析系统指标

InfluxDB是一个时间序列,指标和分析数据库。时间序列数据库旨在解决存储在一段时间内进行的连续测量所产生的数据的问题。此数据可能包含系统指标(如CPU和内存...

2833

扫码关注云+社区