详解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 相关文章推荐
window.parent调用父框架时 ie跟火狐不兼容问题
Jul 30 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
Nov 07 Javascript
点击显示指定元素隐藏其他同辈元素的方法
Feb 19 Javascript
js实现汉字排序的方法
Jul 23 Javascript
jquery插件ajaxupload实现文件上传操作
Dec 09 Javascript
javascript小数精度丢失的完美解决方法
May 31 Javascript
很棒的Bootstrap选项卡切换效果
Jul 01 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
Sep 05 Javascript
vue中子组件调用兄弟组件方法
Jul 06 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
Aug 28 Javascript
浅谈vue.watch的触发条件是什么
Nov 07 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
php中根据某年第几天计算出日期年月日的代码
2011/02/24 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
php画图实例
2014/11/05 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
Python3几个常见问题的处理方法
2019/02/26 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
python ETL工具 pyetl
2020/06/07 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
护理专业学生的求职信范文
2013/12/11 职场文书
大一军训感言
2014/01/09 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
村委会换届选举方案
2014/05/03 职场文书
供应链金融服务方案
2014/05/25 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书