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 或
汤姆(Tom)cat。本质上,那一个服务器 “安装就绪型” 服
务器产品,支持即时计划应用程序。通过这么些产品,您可以在一分钟内开行并运行一个服务器。Node
肯定不是这种产品。Apache 能通过添加一个 PHP 模块来允许开发人士创造动态
Web 页,添加一个 SSL 模块来贯彻平安连接,与此类似,Node
也有模块概念,允许向 Node 内核添加模块。实际上,可供接纳的用来 Node
的模块有数百个之多,社区在创制、公布和翻新模块方面极度活跃,一天还可以够拍卖数十个模块。本文后边将探讨Node 的所有模块部分。

Node 咋做事?

Node 本身运行 V8 JavaScript。等等,服务器上的
JavaScript?没错,您没有看错。对于只在客户机上使用 JavaScript
的程序员而言,服务器端 JavaScript
可能是一个新定义,但那一个定义本身并非遥不可及,因而为什么无法在服务器上行使客户机上使用的编程语言?

怎么是 V8?V8 JavaScript 引擎是 谷歌 用于其 Chrome 浏览器的平底
JavaScript 引擎。很少有人考虑 JavaScript
在客户机上实际做了些什么?实际上,JavaScript
引擎负责解释并推行代码。谷歌 使用 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的相干目录

图片 1

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控制台的结果就为:

图片 2

 归来目录