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中的集合及效率
Jan 08 Javascript
首页图片漂浮效果示例代码
Jun 05 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
JS显示表格内指定行html代码的方法
Mar 31 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
80%应聘者都不及格的JS面试题
Mar 21 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
一文读懂ES7中的javascript修饰器
May 06 Javascript
vue element upload实现图片本地预览
Aug 20 Javascript
vue实现树形结构样式和功能的实例代码
Oct 15 Javascript
Vue打包后访问静态资源路径问题
Nov 08 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 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来写记数器(详细介绍)
2006/10/09 PHP
php 变量定义方法
2009/06/14 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
14款NodeJS Web框架推荐
2014/07/11 NodeJs
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
Python面向对象之Web静态服务器
2019/09/03 Python
基于python3的socket聊天编程
2020/02/17 Python
解决django FileFIELD的编码问题
2020/03/30 Python
基于FME使用Python过程图解
2020/05/13 Python
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
大学考试作弊检讨书
2014/01/30 职场文书
生产车间标语
2014/06/11 职场文书
公司周年庆活动方案
2014/08/25 职场文书
社会实践活动总结
2015/02/05 职场文书
安全保证书怎么写
2015/02/28 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
超强台风观后感
2015/06/09 职场文书
JAVA springCloud项目搭建流程
2022/05/11 Java/Android
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS