详解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利用控件对windows的操作实现原理与应用
Dec 23 Javascript
js获取内联样式的方法
Jan 27 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
Apr 16 Javascript
Javascript 5种方法实现过滤删除前后所有空格
Jun 22 Javascript
js方法数据验证的简单实例
Sep 17 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
Nov 07 Javascript
jQuery实现根据生日计算年龄 星座 生肖
Nov 23 Javascript
js学使用setTimeout实现轮循动画
Jul 17 Javascript
详解Vue SPA项目优化小记
Jul 03 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
JavaScript对象原型链原理解析
Jan 22 Javascript
jQuery+ajax实现文件上传功能
Dec 22 jQuery
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
十天学会php(3)
2006/10/09 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python类的动态修改的实例方法
2017/03/24 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
基于python实现操作git过程代码解析
2020/07/27 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
大一自我鉴定范文
2013/12/27 职场文书
报到证丢失证明
2014/01/11 职场文书
诉讼授权委托书
2014/10/15 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
北京青年观后感
2015/06/15 职场文书
太空授课观后感
2015/06/17 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
JAVA springCloud项目搭建流程
2022/05/11 Java/Android