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 相关文章推荐
滚动经典最新话题[prototype框架]下编写
Oct 03 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
Dec 30 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
Apr 15 Javascript
js判读浏览器是否支持html5的canvas的代码
Nov 18 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
Jun 06 Javascript
JS实现碰撞检测的方法分析
Jan 19 Javascript
JavaScript时间与时间戳的转换操作实例分析
Dec 07 Javascript
js实现GIF图片的分解和合成
Oct 24 Javascript
js实现简单的贪吃蛇游戏
Apr 23 Javascript
图解JS原型和原型链实现原理
Sep 15 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
windows xp下安装pear
2006/12/02 PHP
php自动适应范围的分页代码
2008/08/05 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
echarts整合多个类似option的方法实例
2018/07/10 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
Python实现的最近最少使用算法
2015/07/10 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
Django添加feeds功能的示例
2018/08/07 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
Python3标准库之functools管理函数的工具详解
2020/02/27 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
2014民事授权委托书范本
2014/09/29 职场文书
优秀党员申报材料
2014/12/18 职场文书
母亲去世追悼词
2015/06/23 职场文书