文档章节

nodejs服务启动程序

淮河一梦
 淮河一梦
发布于 2015/02/06 17:19
字数 191
阅读 21
收藏 0
<!-- lang: js -->
var http = require("http"), url = require("url"), path = require("path"), fs = require("fs");

http.createServer(function(req, res) {

var pathname = __dirname + url.parse(req.url).pathname;

if (path.extname(pathname) == "") {
	pathname += "/index.html";
}

fs.exists(pathname, function(exists) {
	if (exists) {
		switch (path.extname(pathname)) {
		case ".html":
			res.writeHead(200, {
				"Content-Type" : "text/html"
			});
			break;
		case ".js":
			res.writeHead(200, {
				"Content-Type" : "text/javascript"
			});
			break;
		case ".css":
			res.writeHead(200, {
				"Content-Type" : "text/css"
			});
			break;
		case ".gif":
			res.writeHead(200, {
				"Content-Type" : "image/gif"
			});
			break;
		case ".jpg":
			res.writeHead(200, {
				"Content-Type" : "image/jpeg"
			});
			break;
		case ".png":
			res.writeHead(200, {
				"Content-Type" : "image/png"
			});
			break;
		case ".bmp":
			res.writeHead(200, {
				"Content-Type" : "image/bmp"
			});
			break;
		default:
			res.writeHead(200, {
				"Content-Type" : "application/octet-stream"
			});
		}

		fs.readFile(pathname, function(err, data) {
			res.end(data);
		});

	} else {

		pathname = __dirname + url.parse(req.url).pathname;

		if (route(pathname, req, res)) {
			res.end();
		} else {
			res.writeHead(404, {
				"Content-Type" : "text/html"
			});
			res.end("<h1>404 Not Found</h1>");
		}

	}
});

}).listen(8888, "127.0.0.1");
console.log("Server running at http://127.0.0.1:8888/");

function route(pathname, req, res) {
try {
	var app = require(pathname);
	app.main(req, res);
	return true;
} catch (err) {
	console.log('Error: %s', err.message);
	return false;
}
}

© 著作权归作者所有

共有 人打赏支持
淮河一梦
粉丝 13
博文 5
码字总数 43814
作品 0
深圳
程序员
nodejs express异常捕获

参考链接:http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/nodejs-1131.html 由于nodejs是非阻塞单进程单线程的,一旦nodejs抛出异常,整个服务就会停掉。服务将会非常不稳定。解决方法: ...

CoinIdea
08/29
0
0
vscode 调试node之npm与nodemon

更多相关内容见博客 github.com/zhuanyongxi… 调试nodejs有很多方式,可以看这一篇How to Debug Node.js with the Best Tools Available,其中我最喜欢使用的还是V8 Inspector和vscode的方式...

砖用冰西瓜
06/18
0
0
利用 Node.js 实现 SAP Hana 数据库编程接口

自 SAP HANA SP 11 之后,可以使用 Node.js 作为 Hana 的编程接口。SAP 将 Application server 简称为 XS。现在 XS 已经演化为 Advanced 版本。为了区别,早期的 XS 被称为 XS Classical。 ...

前端热爱者
05/16
0
0
超简单的前端跨域、前后端分离解决方案

简介 LiveNode是一个基于Node.js轻巧的web服务,帮助前端开发者解决本地跨域,代码刷新,以及SPA(单页应用)前后端服务分离,并且可以用于生产环境项目部署。 Github地址 安装 全局安装liven...

飞翔荷兰人
05/23
0
0
Nodejs express、html5实现拖拽上传

Nodejs express、html5实现拖拽上传 一、前言 文件上传是一个比较常见的功能,传统的选择方式的上传比较麻烦,需要先点击上传按钮,然后再找到文件的路径,然后上传。给用户体验带来很大问题...

james_laughing
2015/06/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Synchronize和ReentrantLock区别

目录介绍 1.Synchronize和ReentrantLock区别 1.1 相似点 1.2 区别 1.3 什么是线程安全问题?如何理解 1.4 线程安全需要保证几个基本特性 2.Synchronize在编译时如何实现锁机制 3.ReentrantL...

潇湘剑雨
11分钟前
0
0
ModelMap的用法

ModelMap的用法 ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用...

DemonsI
21分钟前
0
0
Hibernate环境搭建过程

B站Hibernate教学视频原网址 下边代码是照着视频一步步写出来的。由于没有视频中老师所写的文件。所以xml文件中的dtd约束是直接在网上搜到复制来的。 和视频中一样,用的MySQL数据库。数据库...

BG2KNT
23分钟前
0
0
Fragment之软件主页面制作

Fragment是一种Android 3.0后引入的API ,它出现的初衷是为了适应平板电脑的大屏幕,手机界面小巧可放下的内容有限,而平板宽阔可以放下手机上的两三个界面一起合起来展示,多个Fragment可以组...

鱼想吃肉
30分钟前
0
0
关于网站恶意注册会员

网站发生恶意注册会员,有图形验证码 ,和短信验证码 但是还是有大量恶意注册: session 和 cookie都是可以随便伪造的。 验证码有打码平台。 短信验证有短信验证平台。 IP限制有虚拟拨号/VP...

妖尾巴
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部