前言:
其实很早就对nodejs感兴趣没时间研究,最近做web前端感觉时间还充裕,来看看曾经买的图灵的nodejs书,也记录一下学习学习。防工具盗链抓取 freddon所有
其实基于google v8引擎而上的nodejs,服务端写javascript还是优点多多的,尤其是对于我这样一个一直喜欢javascript的人来说真是haliluya!hayaya! nodejs是单进程(严格意义来讲是无线程概念的)、采取事件轮询、回调等等来达到‘多任务’的效果,好了,我简单就说这么多。上Code!
Server服务端
为了好代码好看、测试好操作,get、post请求方式全在一个js文件里面写了
说明部分也全写在代码里了,也养成一个好习惯
app.js
/*导入需要用到的nodejs库*/
var http = require('http');
var url = require('url');
var qs = require('querystring');
/**
* 简单配置个路由 用来检测无用的请求 仅符合路由规则的才能被接受
* 自己可以按照需要定义
* @type { {/: string, favicon: string, user: string, login: string, biz: string}}
*/
var route = {
'/': "/",
'favicon': '/favicon.ico',
'user': '/user',
'login': '/user/login',
'biz': '/biz'
};
/**
* 上述路由的简单判断规则
* @param reqPath
* @returns {boolean}
*/
var isValid = function (reqPath) {
for (var key in route) {
if (route[key] == reqPath) {
return true;
}
}
return false;
};
/**
* 照样输出json格式的数据
* @param query
* @param res
*/
var writeOut = function (query, res) {
res.write(JSON.stringify(query));
res.end();
}
/**
* 启用http创建一个端口为8124的服务
* createServer内侧为回调函数:
* ...可看作java servlet中的 onService(HttpRequest,HttpResponse)
* ...或者(doGet、doPost)
*/
http.createServer(function (req, res) {
if (!isValid(url.parse(req.url).pathname)) {
res.writeHead(404, {'Content-Type': 'text/plain;charset=utf-8'});
res.write("{'errcode':404,'errmsg':'404 页面不见啦'}");
res.end();
} else {
res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
if (req.method.toUpperCase() == 'POST') {
var postData = "";
/**
* 因为post方式的数据不太一样可能很庞大复杂,
<