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 相关文章推荐
Javascript下IE与Firefox下的差异兼容写法总结
Jun 18 Javascript
JavaScript数字和字符串转换示例
Mar 26 Javascript
js实现网站最上边可关闭的浮动广告条代码
Sep 04 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
Sep 05 Javascript
JavaScript实现垂直滚动条效果
Jan 18 Javascript
jQuery内容筛选选择器实例代码
Feb 06 Javascript
详解React 16 中的异常处理
Jul 28 Javascript
JS库之ParticlesJS使用简介
Sep 12 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
Dec 07 Javascript
js 计算图片内点个数的示例代码
Apr 04 Javascript
express + jwt + postMan验证实现持久化登录
Jun 05 Javascript
js实现简单的打印表格
Jan 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
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
令PHP初学者头疼十四条问题大总结
2008/11/12 PHP
基于PHP编程注意事项的小结
2013/04/27 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
python创建文件时去掉非法字符的方法
2018/10/31 Python
python实现二维插值的三维显示
2018/12/17 Python
简单介绍python封装的基本知识
2019/08/10 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
韩国11街:11STREET
2018/03/27 全球购物
大学生职业规划前言模板
2013/12/27 职场文书
事务机电主管工作职责
2014/02/25 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
环保倡议书100字
2014/05/15 职场文书
读群众路线的心得体会
2014/09/03 职场文书
python在package下继续嵌套一个package
2022/04/14 Python