node fs模块返回html,Node.js开发实战 核心http模块起一个服务器返回一个页面的实例...

如下所示:

let http=require("http"); //引入核心http模块

let fs=require("fs");

let mime={

'.js':'application/javascript',

'.css':'text/css'

}

//创建一个函数,req代表客户端,res代表服务器可写流

let listener=(req,res)=>{

//res是可写流,有write和end

if(req.url==="/"){

//设置编码

res.setHeader('Content-Type','text/html;charset=utf-8');

fs.createReadStream('index.html').pipe(res);

}else{

if(fs.existsSync(`.${req.url}`)) {

res.setHeader('Content-Type',mime[req.url.match(/\.\w+$/)[0]] +';charset=utf-8');

fs.createReadStream(`.${req.url}`).pipe(res);

}else{

res.statusCode=404;

res.end();

}

}

}

let port=8080;

//创建一个服务,放入一个监听函数,

let server=http.createServer(listener);

//

server.listen(port,function () {

//启动成功后

console.log(`start${port}`);

})

看上面代码,我们需要先创建三个文件

index.html

index.css

index.js

html文件里面,我们要引进css和js文件

html>

Title
你好,帅吗

我们运行上面js文件时候,就会创建一个静态服务器,端口8080

然后返回客户端一个index.html文件

浏览器渲染这个html文件,我们对应的css和js就加载进去了

其实上面写法不是很简便,node里面有模块解决路径获取后缀名的问题,还有路径问题

let http=require("http"); //引入核心http模块

let fs=require("fs");

let mime=require("mime"); //解决文件类型

let url=require("url");

//创建一个函数,req代表客户端,res代表服务器可写流

let listener=(req,res)=>{

//res是可写流,有write和end

let {query,pathname}=url.parse(req.url,true);

if(pathname==="/"){

//设置编码

res.setHeader('Content-Type','text/html;charset=utf-8');

fs.createReadStream('index.html').pipe(res);

}else{

if(fs.existsSync(`.${pathname}`)) {

//mime 第三方包 npm install mime --save

//mime.lookup可以通过文件路径后缀判断是什么类型的

res.setHeader('Content-Type', mime.lookup(pathname)+';charset=utf-8');

fs.createReadStream(`.${pathname}`).pipe(res);

}else{

res.statusCode=404;

res.end();

}

}

}

let port=8080;

//创建一个服务,放入一个监听函数,

let server=http.createServer(listener);

//

server.listen(port,function () {

//启动成功后

console.log(`start${port}`);

})

本文由职坐标整理并发布,了解更多内容,请关注职坐标WEB前端Node.js频道!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值