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 相关文章推荐
(function(){})()的用法与优点
Mar 11 Javascript
动态添加js事件实现代码
Mar 12 Javascript
多个checkbox被选中时如何判断是否有自己想要的
Sep 22 Javascript
javascript数组详解
Oct 22 Javascript
js格式化时间小结
Nov 03 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
Mar 03 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
Apr 01 Javascript
jquery事件绑定解绑机制源码解析
Sep 19 Javascript
js实现常见的工具条效果
Mar 02 Javascript
深入学习 JavaScript中的函数调用
Mar 23 Javascript
electron demo项目npm install安装失败的解决方法
Feb 06 Javascript
uni app仿微信顶部导航条功能
Sep 17 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
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
PHP7变量处理机制修改
2021/03/09 PHP
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
Python实现打印实心和空心菱形
2019/11/23 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
文明班级建设方案
2014/05/15 职场文书
演讲稿之开卷有益
2019/08/07 职场文书