归来目录

百度百科上:

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

 回去目录

相关文章

网站地图xml地图