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
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
Jun 02 Javascript
用jquery实现等比例缩放图片效果插件
Jul 24 Javascript
表单JS弹出填写提示效果代码
Apr 16 Javascript
JavaScript也谈内存优化
Jun 06 Javascript
javascript中Number的方法小结
Nov 21 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
Dec 14 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
Node.js简单入门前传
Aug 21 Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
Mar 14 Javascript
详解js中的原型,原型对象,原型链
Jul 16 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
PHP 命令行参数详解及应用
2011/05/18 PHP
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
javaScript语法总结
2016/11/25 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
python zip文件 压缩
2008/12/24 Python
python发送HTTP请求的方法小结
2015/07/08 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
实例详解Python装饰器与闭包
2019/07/29 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
东方电视购物:东方CJ
2016/10/12 全球购物
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
外企测试工程师面试题
2015/02/01 面试题
思想政治自我鉴定
2013/10/06 职场文书
个人欠款担保书
2014/05/20 职场文书
小学假期安全广播稿
2014/09/28 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python
vue elementUI表格控制对应列
2022/04/13 Vue.js