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 相关文章推荐
在JS中最常看到切最容易迷惑的语法(转)
Oct 29 Javascript
js判断元素是否隐藏的方法
Jun 09 Javascript
jQuery的animate函数实现图文切换动画效果
May 03 Javascript
JS中Location使用详解
May 12 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
JS模拟简易滚动条效果代码(附demo源码)
Apr 05 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
Mar 23 jQuery
AngularJS全局警告框实现方法示例
May 18 Javascript
angularjs实现分页和搜索功能
Jan 03 Javascript
react写一个select组件的实现代码
Apr 03 Javascript
jquery轮播图插件使用方法详解
Jul 31 jQuery
vue中使用腾讯云Im的示例
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 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
Laravel框架表单验证详解
2014/09/04 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
工商管理实习生自我鉴定范文
2013/12/18 职场文书
大学三年计划书范文
2014/04/30 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
财务部岗位职责范本
2015/04/14 职场文书
法院答辩状格式
2015/05/22 职场文书
亮剑精神观后感
2015/06/05 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript