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 或
汤姆cat。本质上,那一个服务器 “安装就绪型” 服
务器产品,扶助即时安顿应用程序。通过这个制品,您可以在一分钟内开行并运行一个服务器。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
实际上会拔取 谷歌 编写的 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的相关目录

PHP 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);

感到第二种写法更清晰

PHP,测试:

http://127.0.0.1:8888?zzl=1234

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

PHP 2

 回到目录

相关文章