详解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 相关文章推荐
jQuery 扩展对input的一些操作方法
Oct 30 Javascript
jquery 可排列的表实现代码
Nov 13 Javascript
javascript笛卡尔积算法实现方法
Apr 08 Javascript
微信小程序之小豆瓣图书实例
Nov 30 Javascript
jQuery中animate的几种用法与注意事项
Dec 12 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
bootstrap table 数据表格行内修改的实现代码
Feb 13 Javascript
Angular 输入框实现自定义验证功能
Feb 19 Javascript
让div运动起来 js实现缓动效果
Jul 06 Javascript
使用Bootrap和Vue实现仿百度搜索功能
Oct 26 Javascript
node 使用 async 控制并发的方法
May 07 Javascript
Vue不能检测到Object/Array更新的情况的解决
Jun 26 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比较两个字符串长度的方法
2015/07/13 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
python 获取文件列表(或是目录例表)
2009/03/25 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
Python进程间通信用法实例
2015/06/04 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
财务方面个人工作的自我评价
2013/12/28 职场文书
七年级生物教学反思
2014/01/30 职场文书
军人违纪检讨书
2014/02/04 职场文书
公司户外活动总结
2014/07/04 职场文书
学校教代会开幕词
2016/03/04 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书