1 2 3 4 5 6 7 8 9 10 |
// node版本较旧 先凑合用下 yum -y install gcc make gcc-c++ openssl-devel wget wget http://nodejs.org/dist/v0.10.26/node-v0.10.26.tar.gz tar -zvxf node-v0.10.26.tar.gz cd node-v0.10.26 ./configure --prefix=/usr/local/node make make install ln /usr/local/node/bin/node /usr/local/bin/node node -v |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
// index.js 入口文件 // 命令行执行 node index.js 就可以挂起服务 var server = require("./server"); var router = require("./router"); server.start(router.route); /************************************************************************************/ //server.js 启动服务文件 // http url 是node内置的模块 var http = require("http"); var url = require("url"); function start(route, handle) { function onRequest(request, response) { var pathname = url.parse(request.url).pathname; route(pathname, response); } //创建服务,监听8888端口 http.createServer(onRequest).listen(8888); } // 使用exports.functionName 就可以在外部调用server.start(route, handle); exports.start = start; /************************************************************************************/ // router.js 路由文件 function route(pathname, response) { try { // 这里随便写写,比较乱。。 var pathArr = pathname.split('/'); var controller = require("./" + pathArr[1] + "/" + pathArr[2]); var params = '{'; for(var i=4; i<pathArr.length; i+=2) { params = params + '"' + pathArr[i] + '":"' + pathArr[i+1] + '",'; } params = params.substring(0, params.length-1); params += '}'; // 响应响应信息 response.writeHead(200, {"Content-Type" : "text/plain"}); response.write(controller.action(pathArr[3], params)); response.end(); } catch (err) { // 响应错误信息 response.writeHead(404, {"Content-Type" : "text/plain"}); response.write('not fount'); response.end(); } } exports.route = route; /************************************************************************************/ // ./user/user.js 用户模块 // 统一操作调度方法 可写到父类中 function action(method, params) { method = eval(method); return method(params); } // 解析GET参数 可写到父类中 function parseGet(params) { return JSON.parse(params); } // 具体操作方法 // http://localhost:8888/user/user/show/test/helloworld // 第1个user为user目录 第2个user为user.js 后面是GET参数 key=>value 形式 function show(params) { params = parseGet(params); return params.test; } exports.action = action; |