C++NodeJS系列~第一独稍例子,实现了request.querystring功能

回目录

百度百科上:

Node.js是同样仿照用来编排高性能网络服务器的JavaScript工具确保,一多重之更动由此开始,在Node中,Http是最主要之。Node为创造http服务器发了优化,所以于网上看的多数演示和库房都是集中在web上(http框架、模板库等)。

Node.js的优点

nodejs作为一个新兴之后台语言,有好多抓住人口之地方:

RESTful API

单线程

Node.js可以当不新增额外线程的情事下,依然得以本着任务进展并行处理 ——
Node.js是单线程的。它通过波轮询(event
loop)来实现并行操作,对这,我们应当要是充分利用这等同接触 ——
尽可能的避免阻塞操作,取而代之,多用非阻塞操作。

非阻塞IO

事件驱动

脚我愉前人写的一个资料,让大家再次清楚的垂询NodeJS,前任之章

 Node 旨在解决什么问题?

Node 公开宣称的靶子是
“旨在提供相同种植简易的构建而伸缩网络程序的法门”。当前的服务器程序有啊问题?我们来开个数学题。在
Java™ 和 PHP 这看似语言中,每个连都见面转一个新线程,每个新线程可能得
2 MB 的配套内存。在一个具 8 GB RAM
的系上,理论及无限深之面世连接数量是 4,000
单用户。随着您的客户群的加强,如果想而的 Web
应用程序支持更多用户,那么,您要上加更多服务器。当然,这会加服务器成本、流量成本和人工成本等成本。除这些成本上升外,还有一个神秘技术问题,即
用户或针对每个请求使用不同之服务器,因此,任何共享资源都必以拥有服务器之间共享。鉴于上述所有原因,整个
Web
应用程序架构(包括流量、处理器速度和内存速度)中之瓶颈是:服务器能够处理的起连接的顶特别数额。

Node 解决之问题之方式是:更改连接受服务器的法子。每个连发射一个当
Node 引擎的历程遭到运作的事件,而休是吗每个连老成一个新的 OS
线程(并也其分配一些配套内存)。Node
声称她绝对不会见死锁,因为其向无同意行使锁,它不会见直接阻塞 I/O 调用。Node
还宣称,运行它们的服务器能够支持数万个冒出连接。

当今你来了一个克处理数万只冒出连接的次序,那么您会由此 Node
实际构建什么吗?如果您有一个 Web
应用程序需要处理这样多连接,那以是一律桩好 “恐怖” 的转业!那是平等种植
“如果你有此题目,那么它从未是问题”
的题材。在回应上面的问题之前,我们事先看 Node
的工作规律同她的筹划运行方式。

Node 肯定不是什么?

对,Node 是一个服务器程序。但是,基础 Node 产品必定 像 Apache 或
Tomcat。本质上,那些服务器 “安装就绪型” 服
务器产品,支持这安排应用程序。通过这些制品,您得于平等分钟内启动并运行一个服务器。Node
肯定不是这种产品。Apache 能通过丰富一个 PHP 模块来允许开发人员创建动态
Web 页,添加一个 SSL 模块来促成安康连接,与这个类似,Node
也发模块概念,允许向 Node 内核添加模块。实际上,可供应选择的用于 Node
的模块出数百只底多,社区在开创、发布以及换代模块方面十分活跃,一天竟足以处理数十只模块。本文后面将讨论
Node 的合模块部分。

Node 如何工作?

Node 本身运行 V8 JavaScript。等等,服务器上之
JavaScript?没错,您没看错。对于只有以客户机上使用 JavaScript
的程序员而言,服务器端 JavaScript
可能是一个新定义,但此概念本身并非遥不可及,因此为何不能够于服务器上应用客户机上使用的编程语言?

哟是 V8?V8 JavaScript 引擎是 Google 用于其 Chrome 浏览器的底色
JavaScript 引擎。很少有人考虑 JavaScript
在客户机上实际做了把什么?实际上,JavaScript
引擎负责解释并尽代码。Google 使用 V8 创建了一个于是 C++
编写的超快解释器,该解释器拥有别样一个突出特征;您可以下载该引擎并将那个坐任何
应用程序。V8 JavaScript 引擎并不仅限于在一个浏览器被运行。因此,Node
实际上会利用 Google 编写的 V8 JavaScript
引擎,并拿那重建也而于服务器上运。太圆满了!既然已有一个不利的解决方案可用,为何还要创建同种新语言也?

事件驱动编程

广大程序员接受的教诲要她们看,面向对象编程是两全的编程设计,这叫他们本着任何编程方法不屑一顾。Node
使用了一个所谓的事件驱动编程模型。

清单 1. 客户端上使 jQuery 的事件驱动编程
// jQuery code on the client-side showing how Event-Driven programming works

// When a button is pressed, an Event occurs - deal with it
// directly right here in an anonymous function, where all the
// necessary variables are present and can be referenced directly
$("#myButton").click(function(){
     if ($("#myTextField").val() != $(this).val())
         alert("Field must match button text");
});

实际上,服务器端和客户端从未其它区别。没错,这未尝按钮点击操作,也没向文本字段键入的操作,但当一个重新胜似的规模达到,事件正在
发生。一个连于起,这是一个波!数据经过连日进行收,这吗是一个事件!数据经过连日已,这还是一个风波!

否 什么这种装置类型对 Node 很妙?JavaScript
是一致种怪棒的事件驱动编程语言,因为它同意利用匿名函数和闭包,更要的凡,任何写了代码的人数还熟悉它的语法。事件时有发生常调用的回调函数可以以破获事件处
进行编辑。这样可使代码容易编写和保安,没有复杂的面向对象框架,没有接口,没有过分设计的可能性。只待监听事件,编写一个回调函数,其他事情都得交
给系统处理!

扩展的模块

Node.js使用Module模块去划分不同的成效,以简化使用之开发。Modules模块有点象C语言中之类
库。每一个Node.js的类库都饱含了挺加上的各类函数,比如http模块就隐含了同http功能有关的多多函数,可以帮忙开发者很轻地比如
http,tcp/udp等展开操作,还可老易之创立http和tcp/udp的服务器。

而在程序中采用模块是大有利于的,只需要如下:

于此处,引入了http类库,并且针对http类库的援存放于http变量中了。这个时刻,node.js会在咱们
应用中查找是否有node_modules的目,并且搜索是目录中是不是在http的模块。如果node.js找不顶之目录,则会及全局模块缓存
中去寻觅,用户可经过相对要绝对路径,指定模块的职,比如:

var myModule = require(‘./myModule.js’);

模块中蕴含了许多效代码片断,在模块中的代码大部分还是私家的,意思是在模块中定义之函数方法及变量,都只好以跟一个模块中被调用。当然,可以用一些方法与变量暴露到模块外,这个时段可使用export对象去实现

首先得设置nodejs环境,相关文件下充斥

下载后,安装后,在C盘就会现出nodejs的系目录

OK,我们来拘禁一下争兑现request.querystring功能的,即get请求的功能,相关代码如下:

var qs = require('querystring');
var http = require('http');
var formidable = require('formidable');
var exec = require('child_process').exec;
var fs = require('fs');
var filename = '';

var url = require("url");

function start(response, request) {
    var getQuery = url.parse(request.url).query;
    var getData = qs.parse(getQuery); //getData数据 
    console.log(getData["zzl"]);
}

变外一样种植于正式的写法重到querystring字符串,写法如下:

var http = require("http");
var url = require("url");
var params = url.parse(request.url, true).query;
console.log(params.zzl);

感觉到第二种写法更清晰

测试:

http://127.0.0.1:8888?zzl=1234

对nodejs的console控制台的结果就是为:

 归来目录