详解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 相关文章推荐
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
Nov 02 Javascript
解析JavaScript中的不可见数据类型
Dec 02 Javascript
关于javaScript注册click事件传递参数的不成功问题
Jul 18 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
Vue数据驱动模拟实现2
Jan 11 Javascript
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 jQuery
解决layui的使用以及针对select、radio等表单组件不显示的问题
Sep 05 Javascript
vue实现设置载入动画和初始化页面动画效果
Oct 28 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 19 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 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
非常好的js代码
2006/06/27 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python 实现多线程下载视频的代码
2019/11/15 Python
python数值基础知识浅析
2019/11/19 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
高中学生会竞选演讲稿
2014/08/25 职场文书
个人买房协议书范本
2014/10/06 职场文书
代理词怎么写
2015/05/25 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
浅谈golang 中time.After释放的问题
2021/05/05 Golang
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫