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面向对象编程(三) 非构造函数的继承
Aug 28 Javascript
$.each遍历对象、数组的属性值并进行处理
Jul 18 Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
Nov 07 Javascript
基于jQuery的select下拉框选择触发事件实例分析
Nov 18 Javascript
JavaScript模板引擎Template.js使用详解
Dec 15 Javascript
基于Bootstrap实现城市三级联动
Nov 23 Javascript
webpack构建换肤功能的思路详解
Nov 27 Javascript
vee-validate vue 2.0自定义表单验证的实例
Aug 28 Javascript
Vuex mutitons和actions初使用详解
Mar 04 Javascript
基于javascript的无缝滚动动画1
Aug 07 Javascript
Vue表单提交点击事件只允许点击一次的实例
Oct 23 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中的foreach问题
2013/06/30 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
python图片验证码生成代码
2016/07/02 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Python chardet库识别编码原理解析
2020/02/18 Python
西班牙手机之家:Phone House
2018/10/18 全球购物
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
信用社员工先进事迹材料
2014/02/04 职场文书
党员批评与自我批评
2014/02/12 职场文书
党员承诺书内容
2014/03/26 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
高中生学习计划书
2014/09/15 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
环卫工作汇报材料
2014/10/28 职场文书
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
2022漫威和DC电影上映作品
2022/04/05 欧美动漫