标签:
1:安装Node.js
使用MSI文件,并按照提示安装node.js,默认情况下,安装程序将 Node.js 发行到 C:\Program Files\nodejs. 但这里我们需要修改安装路径到:D:\yiibai_worksp\nodejs,并将 D:\yiibai_worksp\nodejs 目录添加到Window系统的PATH环境变量中。重新启动打开命令提示符,以使更改生效。
第一步:双击下载的 “node-v0.12.7-x64.msi" 文件,出现提示安装界面:
第二步:选择安装目录,这里安装在目录 D:\yiibai_worksp\nodejs 中,如下图:
第三步:选择安装的模块和功能,这里全部安装,并添加到系统环境变量,如下图所示:
最后一步:安装完成!
创建一个js文件名为test.js 在 D:\>yiibai_worksp\nodejs.
File: test.js
console.log("Hello World")
现在运行test.js看到的结果:
D:\yiibai_worksp\nodejs> node test.js
验证输出结果:
[小贴士]①:腾讯云系统默认文件后缀名是隐藏的,导致test.js可能实际上是test.js.txt;注意改掉,很关键!
②一些基本的Shell操作:1:cd..回退 2:cd hehe进入文件夹 3:node xx.js 启动文件
②搭建HTTP服务
下面是个http.js文件,node这个文件就可以启动监听
1 // 这是一个简单的Node HTTP服务器,能处理当前目录的文件 2 // 并能实现两种特殊的URL用于测试 3 // 用HTTP://localhost:8000或http://127.0.0.1:8000连接这个服务器 4 5 // 首先加载所有需要用到的模块 6 var http = require(‘http‘); // Http服务器API 7 var fs = require(‘fs‘); // 用于处理本地文件 8 var server = new http.Server(); // 创建新的HTTP服务器 9 server.listen(8000); // 监听端口8000 10 11 // 使用on方法注册时间处理 12 server.on(‘request‘, function(request, response) { // 当有request请求的时候触发处理函数 13 console.log(‘request‘); 14 // 解析请求的URL 15 var url = require(‘url‘).parse(request.url); 16 // 特殊URL会让服务器在发送响应前先等待 17 switch(url.pathname) { 18 case ‘‘||‘/‘ : // 模拟欢迎页,nodejs是高效流处理的方案,也可以通过配置文件来配置 19 fs.readFile(‘./index.html‘, function(err, content){ 20 if(err) { 21 response.writeHead(404, { ‘Content-Type‘:‘text/plain; charset="UTF-8"‘ }); 22 response.write(err.message); 23 response.end(); 24 } else { 25 response.writeHead(200, { ‘Content-Type‘ : ‘text/html; charset=UTF-8‘ }); 26 response.write(content); 27 response.end(); 28 } 29 }); 30 break; 31 case ‘/test/delay‘:// 此处用于模拟缓慢的网络连接 32 // 使用查询字符串来获取延迟时长,或者2000毫秒 33 var delay = parseInt(url.query) || 2000; 34 // 设置响应状态和头 35 response.writeHead(200, {‘Content-type‘:‘text/plain; charset=UTF-8‘}); 36 // 立即开始编写响应主体 37 response.write(‘Sleeping for‘ + delay + ‘ milliseconds...‘); 38 // 在之后调用的另一个函数中完成响应 39 setTimeout(function(){ 40 response.write(‘done.‘); 41 response.end(); 42 }, delay); 43 break; 44 case ‘/test/mirror‘:// 如果请求是test/mirror,则原文返回它 45 // 响应状态和头 46 response.writeHead(200, {‘Content-type‘:‘text/plain; charset=UTF-8‘}); 47 // 用请求的内容开始编写响应主体 48 response.write(request.mothod + ‘ ‘ + request.url + ‘ HTTP/‘ + request.httpVersion + ‘\r\n‘); 49 // 所有的请求头 50 for (var h in request.headers) { 51 response.write(h + ‘:‘ + request.headers[h] + ‘\r\n‘); 52 } 53 response.write(‘\r\n‘);// 使用额外的空白行来结束头 54 // 在这些事件处理程序函数中完成响应 55 // 当请求主体的数据块完成时,把其写入响应中 56 request.on(‘data‘, function(chunk) { response.write(chunk); }); 57 // 当请求结束时,响应也完成 58 request.on(‘end‘, function(chunk){ response.end(); }); 59 break; 60 case ‘/json‘ : // 模拟JSON数据返回 61 // 响应状态和头 62 response.writeHead(200, {‘Content-type‘:‘application/json; charset=UTF-8‘}); 63 response.write(JSON.stringify({test:‘success‘})); 64 response.end(); 65 break; 66 default:// 处理来自本地目录的文件 67 var filename = url.pathname.substring(1); // 去掉前导‘/‘ 68 var type = getType(filename.substring(filename.lastIndexOf(‘.‘)+1)); 69 // 异步读取文件,并将内容作为单独的数据模块传给回调函数 70 // 对于确实很大的文件,使用流API fs.createReadStream()更好 71 fs.readFile(filename, function(err, content){ 72 if(err) { 73 response.writeHead(404, { ‘Content-Type‘:‘text/plain; charset="UTF-8"‘ }); 74 response.write(err.message); 75 response.end(); 76 } else { 77 response.writeHead(200, { ‘Content-Type‘ : type }); 78 response.write(content); 79 response.end(); 80 } 81 }); 82 break; 83 } 84 85 }); 86 function getType(endTag){ 87 var type=null; 88 switch(endTag){ 89 case ‘html‘ : 90 case ‘htm‘ : 91 type = ‘text/html; charset=UTF-8‘; 92 break; 93 case ‘js‘ : 94 type = ‘application/javascript; charset="UTF-8"‘; 95 break; 96 case ‘css‘ : 97 type = ‘text/css; charset="UTF-8"‘; 98 break; 99 case ‘txt‘ : 100 type = ‘text/plain; charset="UTF-8"‘; 101 break; 102 case ‘manifest‘ : 103 type = ‘text/cache-manifest; charset="UTF-8"‘; 104 break; 105 default : 106 type = ‘application/octet-stream‘; 107 break; 108 } 109 return type; 110 }
标签:
原文地址:http://www.cnblogs.com/cndotabestdota/p/5694629.html