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 相关文章推荐
激活 ActiveX 控件
Oct 09 Javascript
从JavaScript 到 JQuery (1)学习小结
Feb 12 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
Jun 23 Javascript
Javascript函数式编程简单介绍
Oct 11 Javascript
JQuery ztree 异步加载实例讲解
Feb 25 Javascript
Bootstrap基本样式学习笔记之图片(6)
Dec 07 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
Dec 29 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
Dec 27 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
Aug 20 Javascript
layui实现根据table数据判断按钮显示情况的方法
Sep 26 Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 18 Javascript
微信小程序 根据不同用户切换不同TabBar
Apr 21 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/12/14 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
一段实用的php验证码函数
2016/05/19 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
jquery foreach使用示例
2013/09/12 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
JS常用函数使用指南
2014/11/23 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
让你5分钟掌握9个JavaScript小技巧
2018/06/09 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
Python端口扫描简单程序
2016/11/10 Python
Python对象属性自动更新操作示例
2018/06/15 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
Python requests设置代理的方法步骤
2020/02/23 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
英语专业学子个人的自我评价
2013/10/02 职场文书
高三自我鉴定怎么写
2013/10/19 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
企业授权委托书范本
2014/09/22 职场文书
2015年清明节活动总结
2015/02/09 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang