摘要:本篇文章探讨了Node.js教程之在腾讯云(windows)上搭建Node.js服务器,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。
本篇文章探讨了Node.js教程之在腾讯云(windows)上搭建Node.js服务器,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。
<
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或//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 }
本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号