详解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 相关文章推荐
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
Sep 26 Javascript
JavaScript获取短信验证码(周期性)
Dec 29 Javascript
laydate 显示结束时间不小于开始时间的实例
Aug 11 Javascript
vue配置请求本地json数据的方法
Apr 11 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
Apr 13 Javascript
JavaScript基础教程之如何实现一个简单的promise
Sep 11 Javascript
微信小程序中this.data与this.setData的区别详解
Sep 17 Javascript
详解Angular模板引用变量及其作用域
Nov 23 Javascript
详解JavaScript函数callee、call、apply的区别
Mar 08 Javascript
elementUI table表格动态合并的示例代码
May 15 Javascript
微信小程序中使用 async/await的方法实例分析
May 06 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中的超全局变量
2006/10/09 PHP
也谈php网站在线人数统计
2008/04/09 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
Python实现的多进程和多线程功能示例
2018/05/29 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Python assert语句的简单使用示例
2019/07/28 Python
Python如何实现强制数据类型转换
2019/11/22 Python
python实现双色球随机选号
2020/01/01 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
幼儿园植树节活动总结
2014/07/04 职场文书
保研推荐信格式
2015/03/25 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android