用node写个简单的静态服务器

直接上代码吧,我把它命名为 app.js, 只要在该文件所在目录下,控制台运行 node app.js 即可启动一个本地服务器了。

/**
 * 服务器
 * Author    jervy
 * Date
 */

var MINE_TYPES = {
    ‘html‘:     ‘text/html‘,
    ‘xml‘:         ‘text/xml‘,
    ‘txt‘:         ‘text/plain‘,
    ‘css‘:         ‘text/css‘,
    ‘js‘:         ‘text/javascript‘,
    ‘json‘:     ‘application/json‘,
    ‘pdf‘:         ‘application/pdf‘,
    ‘swf‘:         ‘application/x-shockwave-flash‘,
    ‘svg‘:         ‘image/svg+xml‘,
    ‘tiff‘:     ‘image/tiff‘,
    ‘png‘:         ‘image/png‘,
    ‘gif‘:         ‘image/gif‘,
    ‘ico‘:         ‘image/x-icon‘,
    ‘jpg‘:         ‘image/jpeg‘,
    ‘jpeg‘:     ‘image/jpeg‘,
    ‘wav‘:         ‘audio/x-wav‘,
    ‘wma‘:         ‘audio/x-ms-wma‘,
    ‘wmv‘:         ‘video/x-ms-wmv‘,
    ‘woff2‘:     ‘application/font-woff2‘
};
var PORT = 3000;
var http = require(‘http‘);
var url = require(‘url‘);
var fs = require(‘fs‘);
var path = require(‘path‘);
var root = process.cwd();

var server = http.createServer(function(request, response) {
    var pathname = decodeURIComponent(url.parse(request.url).pathname);
    var realPath = path.join(root, pathname);
    var ext = path.extname(realPath);
    if (!ext) {
        realPath = path.join(realPath, ‘/index.html‘);
        ext = ‘.html‘
    }
    fs.exists(realPath, function(exists) {
        if (exists) {
            fs.readFile(realPath, ‘binary‘, function(err, file) {
                if (!err) {
                    response.writeHead(200, {
                        ‘Content-Type‘: MINE_TYPES[ext.slice(1)] || ‘text/plain‘
                    });
                    response.write(file, ‘binary‘);
                    response.end();
                } else {
                    response.writeHead(500, {
                        ‘Content-Type‘: ‘text/plain‘
                    });
                    response.write(‘ERROR, the reason of error is ‘ + err.code + ‘; Error number is ‘ + err.errno + ‘.‘);
                    response.end();
                }
            })
        } else {
            response.writeHead(404, {
                ‘Content-Type‘: ‘text/plain‘
            });
            response.write(‘This request URL ‘ + pathname + ‘ was not found on this server.‘);
            response.end();
        }
    });

});
server.listen(PORT);
console.log("server running at port " + PORT);

原文地址:https://www.cnblogs.com/jervy/p/10008960.html

时间: 2024-08-30 17:01:38

用node写个简单的静态服务器的相关文章

如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1

原文:http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app 作为一个iPhone/iPad开发者,能够自己写一个简单的web服务器将是很有用的. 例如,你可能希望在软件启动时显示一些来自服务器的更新,或者在服务器端保存一些用户数据.除了你的想象力,没有什么能限制你了. 在第一篇中,我们将会一步一步的建立一个web服务器,基于promo code system(促销码系

Node.js实现简单的Http服务器

下面来学习如何使用Node.js实现一个简单的Http服务器.在示例代码中我们将看到如何读取请求头.如何设置响应头以及如何设置Http的状态码. var http = require('http'); var server = http.createServer(function(req, res) { var body = "Hello world!"; res.setHeader('Content-Length', body.length); res.setHeader('Cont

手写一个简单的Http服务器

什么是Http协议? Http协议: 对浏览器客户端 和 服务器端 之间数据传输的格式规范 Http是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出.HTTP协议的主要特点可概括如下:1.支持客户/服务器模式.2.简单快速:客

用python3写一个简单的http服务器

# Written by Vamei import socket # Address HOST = '' PORT = 8000 # Prepare HTTP response text_content = '''HTTP/1.x 200 OK Content-Type: text/html <head> <title>WOW</title> </head> <html> <p>Wow, Python Server</p>

用bootstrap写一个简单的静态网页

先说点题外话,如果想直接进入bootstrap正题请从第二段开始.周五面试一个小公司,给了我一个psd图让我用最快的时间还愿出这个静态页面,要求是能保证兼容性以及web响应式各种屏幕正常显示.周五晚上开始着手做到了凌晨,然后周六睡了一天的觉补回来,发现现在精力真不比大学毕业.周天放松了一天,炉石新版本巫妖王的骑士刚开,必须玩一下.TI7newbee输了.中国新歌声这届真的不行.中国有嘻哈到目前为止最喜欢小青龙的才气(可惜声音一般),希望带来更多好听的歌,PGone应该是夺冠热门,现场气氛被带动到

python写一些简单的tcp服务器和客户端

代码贴上,做个记录 TcpClient # -*- coding:utf-8 -*- import socket target_host = "127.0.0.1" #服务器端地址 target_port = 5555 #与服务器的端口号一致 while True: client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) client.connect((target_host,target_port)) #data存储要发送的

Node.js最简单的静态文件服务器

首先感谢下面代码的提供者 youyudehexie非常感谢!让我有这次学习的机会! var http = require('http'); var url = require('url'); var fs = require('fs'); var util = require('util'); var mimetype = { 'txt': 'text/plain', 'html': 'text/html', 'css': 'text/css', 'xml': 'application/xml'

node 写的简单爬虫

安装cheerio npm install cheerio --save 引入http和cheeri var http=require("http"); var cheerio=require("cheerio"); 1.爬取新闻 我们选择新浪新闻来进行爬取 http://news.sina.com.cn/china/ http.get(url,function(res){ var html=''; res.on('data',function(data){ htm

使用Node.js原生代码实现静态服务器

const http=require ('http');  //导入模块 const PORT=3000; //设置端口号3000(3000 5000 6000  9000) const HOSTNAME='localhost'; //或"127.0.0.1" http.createServer((req,res)=>{ res.writeHead('Content-type:text/html,charset:utf-8'); res.writeHead( 200, { //设