详解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 相关文章推荐
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
Jul 08 Javascript
js中style.display=&quot;&quot;无效的解决方法
Oct 30 Javascript
超炫的jquery仿flash导航栏特效
Nov 11 Javascript
JSON简介以及用法汇总
Feb 21 Javascript
JavaScript函数内部属性和函数方法实例详解
Mar 17 Javascript
JS实现图片局部放大或缩小的方法
Aug 20 Javascript
three.js绘制地球、飞机与轨迹的效果示例
Feb 28 Javascript
vue小图标favicon不显示的解决方案
Sep 19 Javascript
swiper插件自定义切换箭头按钮
Dec 28 Javascript
nuxt中使用路由守卫的方法步骤
Jan 27 Javascript
vue把输入框的内容添加到页面的实例讲解
Nov 11 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
Oct 29 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 和 MySQL 基础教程(二)
2006/10/09 PHP
php数组键名技巧小结
2015/02/17 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
Prototype Template对象 学习
2009/07/19 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
Vue组件选项props实例详解
2017/08/18 Javascript
nodeJS微信分享
2017/12/20 NodeJs
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
求职简历自荐信范文
2013/10/21 职场文书
建筑工程管理专业自荐信范文
2013/12/28 职场文书
客房领班岗位职责
2015/02/11 职场文书