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

时间: 2024-08-09 19:49:56

NodeJS系列~第一个小例子,实现了request.querystring功能的相关文章

JavaFX 二 First Blood(第一个小例子,拿起武器冲啊~)

万万没想到,上次写的JavaFX 一,回应那么激烈,令我有点小激动啊,这里感谢各位这么热心,大家的支持就是我最大的动力,让我们共同进步,共同学习.话题回归,今天我想给大家讲讲JavaFX的第一个小例子,顺便通过例子,给大家讲讲一些关于JavaFX的代码编写的一些心得体会.不多废话,好戏即将开始...... 上次说到新手开发是先Fxml,再写代码,我们先来看看如何用JavaFX Scene Builder 2.0设计我们想要的界面,首先,我介绍下工具界面的一些小知识, 首先我们认识下这个FX的可视

《hadoop权威指南》关于hive的第一个小例子的演示

本文是<hadoop权威指南>关于hive的小例子,通过这个例子可以很好地看出来hive是个什么东西. 前提是已经配置好hive的远程连接版本的环境,我是用了MYSQL数据库保存元数据. 环境要求: -配置好了Hadoop的HDFS文件系统,启动hdfs和yarn -配置好了hive的远程连接模式 -配置好了MySQL用于metadata的储存 输入文件下载: https://github.com/tomwhite/hadoop-book/blob/master/input/ncdc/micr

软件工程 第一个小例子

1.生成加减号: Math.floor(Math.random()*2)随机产生数字1或2,用1表示+,2表示- 2.随机产生两个数: Math.floor(Math.random()*range),range表示范围 因为是小学简单数学,所以结果不能为负数,这就需要做减法是第二个数比第一个数小 3.访问链接   运行效果 4.具体代码如下: javascript <script type="text/javascript" > $(function(){ $('input

什么是nodejs?nodejs的作用?创建第一个小实例

以下只是本人的理解如果错误请纠正: 1.nodejs:node是一个平台,是服务器端JavaScript的解析器,nodejs本身运行Google V8 JavaScript引擎,所以速度和性能非常好 2.nodejs旨在解决创建高性能的网络应用程序,可以编写每秒处理上万条同时访问物理机器的连接代码,并且可处理高并发和异步I/O node小实例:创建自己的第一个小实例,我用的是webstorm开发工具 1.编写代码:步骤 (1).引入http模块:require('http') (2).创建ht

python速成第二篇(小爬虫+文件操作+socket网络通信小例子+oop编程)

大家好,由于前天熬夜写完第一篇博客,然后昨天又是没休息好,昨天也就不想更新博客,就只是看了会资料就早点休息了,今天补上我这两天的所学,先记录一笔.我发现有时候我看的话会比较敷衍,而如果我写出来(无论写到笔记本中还是博客中,我都有不同的感觉)就会有不同的想法,我看书或者看资料有时候感觉就是有一种惰性,得过且过的感觉,有时候一个知识想不通道不明,想了一会儿,就会找借口给自己说这个知识不重要,不需要太纠结了,还是去看下一个吧,然后就如此往复下去,学习就会有漏洞,所以这更加坚定了我写博客来记录的想法.

c/c++ 模板与STL小例子系列&lt;一 &gt;自建Array数组

c/c++ 模板与STL小例子系列<一> 自建Array数组 自建的Array数组,提供如下对外接口 方法 功能描述 Array() 无参数构造方法,构造元素个数为模板参数个的数组 Array(int length) 有参数构造方法,构造元素个数为参数length个的数组 ~Array() 析构函数 int size() 返回数组中元素的个数 T& get(int num) 返回数组中指定下标的元素的引用 void set(T data, int num) 设置指定下标元素的值 T&a

学习NodeJs的第一天-安装环境

之前一直在网上看到NodeJs的话题,由于自身比较喜欢这方面的内容,期间也是有所关注,现在终于决定静下心来学习她了. 这是第一天,安装NodeJs并建立一个简单的例子.(我的系统是Win8) 1.首先,下载NodeJs程序.地址 http://www.nodejs.org/download/,选择Windows Installer 64bit 2.下载下来后,狂点下一步,安装在本地硬盘上.我是安装在了F盘下 F:\NodeJs 3.下载后打开nodeJs command prompt 窗口,在安

按照鬼哥学so变化,四,第一章的例子

跟随鬼哥伦比亚科学so变化,四.第一章的例子 图纸/文化  听鬼哥说故事 ---------------------------------------------切割线-------------------------------------------- 这篇文章是前段时间的文章,近期这个系列的so分析刚好能够做为一个实例教程.所以就补充拿回来了. 前三篇没看的.请继续关注博客,看完前面三篇. 趁热打铁,加深对so的分析过程,于是就有了这篇文章的补充·····················

Nodejs系列课程,从入门到进阶帮你打通全栈

本课程由社区博主:Scott 编写 本文通过提供给大家学习的方法,以及我个人录制的一系列视频,帮助你更快更好的学习 Nodejs,了解前后端的 HTTP 知识,以及配置和使用阿里云 ECS 来部署你的 Nodejs 项目,成为那个具有争议的全栈开发工程师. 要不要学习 Nodejs 如果你是前端开发工程师,你本地电脑上不可避免的要安装 Nodejs,作为工具也好,作为服务器也好,要帮助你做掉很多又脏又累的事情,比如 less/scss 的编译,ES6/7 到 ES5 的转换,Javascript