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显示选择目录对话框的代码
Nov 10 Javascript
用js实现计算加载页面所用的时间
Apr 02 Javascript
JQuery 使用attr方法实现下拉列表选中
Oct 13 Javascript
Node.js实现批量去除BOM文件头
Dec 20 Javascript
JavaScript中的包装对象介绍
Jan 27 Javascript
jQuery+JSON实现AJAX二级联动实例分析
Dec 18 Javascript
原生JS实现图片轮播效果
Dec 26 Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 Javascript
vue 监听屏幕高度的实例
Sep 05 Javascript
Vuejs中的watch实例详解(监听者)
Jan 05 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
Apr 20 Javascript
纯JS实现五子棋游戏
May 28 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中simplexml_load_string使用实例分享
2014/02/13 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
javascript关于继承解析
2016/05/10 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
Python使用configparser库读取配置文件
2020/02/22 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
寒假实习自荐信
2014/01/26 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript