node.js系列(实例):原生node.js实现静态资源管理

 1 /**
 2  * node入门之综合案例(一):简易路由
 3  * @Author : by Ghost
 4  * @Date : 2016/07/11
 5  * @Description :
 6  * 1、引入以下模块
 7  * http模块:创建服务器,处理请求和相应
 8  * URL模块:解析url请求地址
 9  * fs模块:读取文件
10  * path模块:处理文件路径,获取文件后缀名,路径优化
11  *
12  * 2、使用http.createServer()方法创建服务器
13  * 3、使用url.parse()方法解析浏览器请求路径
14  * 4、使用fs.readFile()方法读取对应的静态文件
15  * 5、使用path.extname()方法获取文件后缀名
16  * 6、设置MIME类型,实现文件兼容
17  * */
18
19 //引入模块
20 var http = require(‘http‘);
21 var url = require(‘url‘);
22 var fs = require(‘fs‘);
23 var path = require(‘path‘);
24
25 //创建服务器,监听3000端口
26 var server = http.createServer(function (req, res) {
27     //屏蔽/favicon.ico的请求
28     if(req.url === ‘/favicon.ico‘)
29     {
30         return ;
31     };
32
33     //解析请求路径
34     var pathname = url.parse(req.url).pathname;
35
36     //默认首页
37     if(pathname.indexOf(‘.‘) === -1)
38     {
39         pathname = "/index.html"
40     };
41
42     //获取文件后缀名
43     var extname = path.extname(pathname);
44
45     //读取文件
46     fs.readFile(‘./static/‘ + pathname, function (err,data) {
47         //如果出错则表示请求路径不正确,显示404
48         if(err){
49             fs.readFile("./static/404.html",function(err,data){
50                 res.writeHead(404,{"Content-Type":"text/html;charset=UTF-8"});
51                 res.end(data);
52             });
53             return;
54         };
55
56         //读取数据
57         //结束响应
58         getMime(extname,function(mime){
59             res.writeHead(200,{"Content-Type": mime});
60             res.end(data);
61         });
62     });
63 });
64
65 //设置监听端口
66 server.listen(3000,‘127.0.0.1‘, function () {
67     console.log("server is started listen port 3000");
68 });
69
70 //getMIME()
71 function getMime(extname,callback)
72 {
73     fs.readFile(‘./static/mime.json‘, function (err,data) {
74         if(err)
75         {
76             throw Error("找不到mime.json文件");
77             return;
78         };
79         var mimeJson = JSON.parse(data);
80         var mime = mimeJson[extname] || "text/plain";
81         //执行回调函数,结束异步问题
82         callback(mime);
83     });
84 }
时间: 2024-08-07 04:33:22

node.js系列(实例):原生node.js实现静态资源管理的相关文章

js系列(9)js的运用(一)

    本节开始介绍javascript在html页面中的运用.     (1)link样式表的动态绑定:(http://files.cnblogs.com/files/MenAngel/text04.zip) <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content=&

Node.js系列基础学习----安装,实现Hello World, REPL

Node.js基础学习 1:简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好 2:安装 à安装node.js 在官网安装自己win版本的node.js的版本,下载,安装完毕后在运行中输入node -v若是出现版本号就证明安装成功. à安装n

node.js和socket.io纯js实现的即时通讯实例分享

在这个例子中,其实node.js并没有真正起到服务器的作用,因为我们这里可以直接运行client.html文件,而不用输入url请求,当 然,要想输入url请求页面内容还需要加入请求静态文件的代码.这个实例中node.js最重要的作用就是将服务端迁移到了js,实现了客户端和服务端语 言上的统一,我们只要在浏览器上同时运行两个client.html客户端页面,即可进行简单的即是通讯了,socket.io才是我们真正用来实现即时 通讯的消息的收发. var server = http.createS

e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调

上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer数据库的访问” 下面讲一下,对于在写Node.js自动化测试脚本过程中,的编写回调问题, 大家可能会发现, Node.js对于高并发处理的性能非常不错, 即使是在使用单核的情况下, 那是因为它是基于事情,说白了就是callback, 回调. 这样的话,对于写代码的人来说, 回调的深度一深就会晕了

[转载]Node入门 &#187; 一本全面的Node.js教程

http://www.nodebeginner.org/index-zh-cn.html 作者: Manuel Kiessling 翻译: goddyzhao & GrayZhang & MondayChen 关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版.因此,只有当进行错误更正以及针对新版本Node.js的改动进行对应的修正时,才会进行

[js高手之路]Node.js+jade+mongoose实战todolist(分页,ajax编辑,删除)

该系列文章索引: [js高手之路]node js系列课程-创建简易web服务器与文件读写 [js高手之路]node js系列课程-图解express+supervisor+ejs用法 [js高手之路]Node.js实现简易的爬虫-抓取博客所有文章列表信息 [js高手之路]Node.js模板引擎教程-jade速学与实战1-基本用法 [js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义 [js高手之路]Node.js模板引擎教程-jade速学与实战3-mixin

node.js 11 Web框架Express 介绍,安装,静态页面,路由

本文参考原文-http://bjbsair.com/2020-03-22/tech-info/2815/前面介绍了node.js的文件模块,http server以及静态网站的创建.有了这些知识作为基础,我们可以了解一下node.js的Web框架了. 从Java一路过来的朋友可能觉得Web框架还是比较重量级的,比如最初的Struts到后来的Spring,中间Apache组织也有过一些其他的模板框架,总体而言无论是从使用还是学习来讲,都是需要花费较多时间的.对于大型应用而言,这个投入是值得的.如果

[Node.js] Exporting Modules in Node

In this lesson, you will learn the difference between the exports statement and module.exports. Two examples are demonstrated, each accomplishing the same task but one using export statements and one using module.exports. You will also learn the basi

探秘Node.js(一)——Node.js简介及安装配置

1.Node.js 简介及特点: Node.js 是一个可以让 JavaScript 运行在服务器端的平台,它可以让JavaScript 脱离浏览器的束缚运行在一般的服务器环境下,就像运行 Python. Perl. PHP. Ruby 程序一样.我们可以用 Node.js 轻松地进行服务器端应用开发,Python. Perl. PHP. Ruby 能做的事 Node.js 几乎都能做,而且可以做得更好. Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计.对于高并发的解决方

node入门(二)——gulpfile.js初探

本文关于gulpfile.js怎么写,利于完成个性化需求.本文开发环境默认已安装node,详情参考<node入门(一)——安装>. 一.安装gulp npm install -g gulp 二.进入项目根目录,创建package.json文件 npm init 现在项目目录下新增了package.json文件,内容如下: 三.在package.json里增加devDependencies配置项,告诉node在install时要下载哪些插件模块,例如下面是要加载gulp-less插件: gulp