node.js 核心http模块,起一个服务器,返回一个页面的实例


Posted in Javascript onSeptember 11, 2017

如下所示:

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文件

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <!--服务端引用路径不支持相对路径-->
 <link rel="stylesheet" href="index.css" rel="external nofollow" >
 <script src="index.js"></script>
</head>
<body>
<div>你好,帅吗</div>
</body>
</html>

我们运行上面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}`);
})

以上这篇node.js 核心http模块,起一个服务器,返回一个页面的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
Nov 24 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
Jan 27 Javascript
express的中间件cookieParser详解
Dec 04 Javascript
原生js编写autoComplete插件
Apr 13 Javascript
JavaScript微信定位功能实现方法
Nov 29 Javascript
详解vue-cli 构建Vue项目遇到的坑
Aug 30 Javascript
AngularJS中的路由使用及实现代码
Oct 09 Javascript
Vue-不允许嵌套式的渲染方法
Sep 13 Javascript
基于elementUI实现图片预览组件的示例代码
Mar 31 Javascript
JavaScript变量Dom对象的所有属性
Apr 30 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
May 23 Javascript
ant design vue导航菜单与路由配置操作
Oct 28 Javascript
简单谈谈JS中的正则表达式
Sep 11 #Javascript
详解Vue双向数据绑定原理解析
Sep 11 #Javascript
基于DOM节点删除之empty和remove的区别(详解)
Sep 11 #Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
Sep 11 #Javascript
基于bootstrop常用类总结(推荐)
Sep 11 #Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 #jQuery
利用纯js + transition动画实现移动端web轮播图详解
Sep 10 #Javascript
You might like
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
PHP安全的URL字符串base64编码和解码
2014/06/19 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
python基础教程之缩进介绍
2014/08/29 Python
Python实现建立SSH连接的方法
2015/06/03 Python
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
python实现简单遗传算法
2018/03/19 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Django的性能优化实现解析
2019/07/30 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
自我评价范文点评
2013/12/04 职场文书
公司活动邀请函
2014/01/24 职场文书
社区七一党员活动方案
2014/01/25 职场文书
仓管员岗位责任制
2014/02/19 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
春季运动会开幕词
2015/01/28 职场文书
电影雷锋观后感
2015/06/10 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
centos7安装mysql5.7经验记录
2022/05/02 Servers