详解js静态资源文件请求的处理


Posted in Javascript onAugust 01, 2017

本文实例为大家分享了js静态资源文件请求的处理,供大家参考,具体内容如下

html文件

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <link rel="stylesheet" href="index.css" type='text/css' charset='utf-8'>
</head>
<body>
 <div class='box' id='box'></div>
 <script charset='utf-8' src='index.js'></script>
</body>
</html>

css文件

*{
 margin:0;
 padding:0;

}
html,body{
 font-size:14px;
 color:#000;
}
.box{
 margin:50px auto;
 width:300px;
 height:300px;
 background:#e3bd83;
 border:10px solid #e0f2be;
}

JS文件

var box = document.getElementById('box');
box.onclick = function(){
 this.style.background = "red"
}

server文件

var http = require('http'),
 fs = require('fs'),
 url = require('url');
//创建一个服务
var server1 = http.createServer(function(req,res){
 //解析客户端请求地址中的文件的目录名称以及传递给当前服务器的数据内容
 var urlObj = url.parse(req.url,true),
  pathname = urlObj["pathname"],
  query = urlObj["query"];
 //简写 try catch捕获异常 防止请求资源文件不存在 我们不加try catch服务会终止。这样不好,所以我们添加try catch捕获异常
 //处理静态资源文件的请求(HTML/CSS/JS...) ->前端路由
 var reg = /\.(HTML|JS|CSS|JSON|TXT|ICO)/i;
 if(reg.test(pathname)){
  //获取请求文件的后缀名
  var suffix = reg.exec(pathname)[1].toUpperCase();
  //根据请求文件的后缀名获取到当前文件的MIME类型
  var suffixMIME = "text/plain";//TXT文本对应的
  switch(suffix){
   case "HTML":
    suffixMIME = "text/html";
    break;
   case "CSS":
    suffixMIME = "text/css";
    break;
   case "JS":
    suffixMIME = "text/javascript";
    break;
   case "JSON":
    suffixMIME = "application/json";
    break; 
   case "ICO":
    suffixMIME = "application/octet-stream";
    break;
  }
  try{
   //按照指定的目录读取文件中的内容或者代码(读取出来的内容都是字符串格式的)
   var conFile = fs.readFileSync("."+pathname,"utf-8");

   //重写响应头信息:告诉客户端的浏览器我返回的内容是什么样的MIME类型,指定返回的内容的格式是utf-8,避免出现乱码
   res.writeHead(200,{'content-type':suffixMIME+';charset=utf-8'})
   //服务端向客户端返回的内容也是字符串
   res.end(conFile)
  }catch(e){
   res.writeHead(404,{'content-type':'text/plain;charset=utf-8'});
   res.end("request file is not found")
  }
  
  /*
   MIME类型:
   每一种资源文件都有自己的标识类型,例如:HTML文件的MIME
   类型是"text/html".css文件的MIME类型是"text/css"

   浏览器会按照代码的MIME类型进行渲染
  */
 }
 // try{
 //  var con = fs.readFileSync("."+pathname,"utf-8");
 //  res.end(con);
 // }catch(e){
 //  res.end("request file is not find")
 // }
 // if(pathname==="/index.html"){
 //  var con = fs.readFileSync("./index.html","utf-8");
 //  res.end(con);
 //  return;
 // }
 // if(pathname==="/index.css"){
 //  con = fs.readFileSync("./index.css","utf-8");
 //  res.end(con);
 //  return;
 // }
 // if(pathname==="/index.js"){
 //  con = fs.readFileSync("./index.js","utf-8");
 //  res.end(con);
 //  return;
 // }
})
//为当前的这个服务配置端口
server1.listen(80,function(){
 console.log("server is success,listening on 80");
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript Base类 包含基本的方法
Jul 22 Javascript
js与jQuery 获取父窗、子窗的iframe
Dec 20 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
Aug 10 Javascript
Javascript BOM学习小结(六)
Nov 26 Javascript
JavaScript鼠标特效大全
Sep 13 Javascript
js用类封装pop弹窗组件
Oct 08 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
Jan 31 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
May 04 Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
Element Badge标记的使用方法
Jul 27 Javascript
js实现3D粒子酷炫动态旋转特效
Sep 13 Javascript
Angular4学习笔记之准备和环境搭建项目
Aug 01 #Javascript
jQuery上传插件webupload使用方法
Aug 01 #jQuery
js实现鼠标拖拽多选功能示例
Aug 01 #Javascript
使用Node.js实现RESTful API的示例
Aug 01 #Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 #jQuery
js下拉菜单生成器dropMenu使用方法详解
Aug 01 #Javascript
简述jQuery Easyui一些用法
Aug 01 #jQuery
You might like
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
发现的以前不知道的函数
2006/09/19 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
python 图片去噪的方法示例
2019/07/09 Python
Python函数中的可变长参数详解
2019/09/12 Python
Python Process多进程实现过程
2019/10/22 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
新任教师自我鉴定
2014/02/24 职场文书
节能环保演讲稿
2014/08/28 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
导游词之太湖
2019/10/08 职场文书
javascript对象3个属性特征
2021/11/17 Javascript
无线电知识基础入门篇
2022/02/18 无线电