读了byvoid的NodeJS开发后,一时手痒写下此篇文章,byvoid的nodeJS试读章节只是讲了NodeJS的历史由来,现状,没有专门的例子,在这里我写了个简单的'hello world'NodeJS例子,简单介绍NodeJS的特点。
1 NodeJS是什么
引用
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
翻译如下:
引用
Node.js 是一个平台,内置了chrome的javaScript运行环境,可以轻易的构建
快速,可伸缩的网络应用平台。Node.js使用了事件驱动,非堵塞的 I/O模块,使得它可以轻量级,高效的和完美的为数据密集型实时的应用程序服务,它可以运行在分布式设备上。
2. 从NodejS官方解释中可以看到Node.js具有以下特点:
1 )以单进程,单线程模式运行。
2)是时间驱动机制.
Node.js通过颞部单线程高校的维护时间循环队列来实现,没有多线程的资源占用和上下文切换。
3)支持的编程 语言是 JavaScript。
在helloworld例子可以看到回调函数采用了匿名函数的形式来实现
var hostRequest = http.request(requestOptions,function(response) {
var responseHTML ='';
response.on('data', function (chunk) {
responseHTML = responseHTML + chunk;
});
response.on('end',function(){
console.log(responseHTML);
});
});
开发环境配置:
安装node-v0.8.6-x86.msi, 运行后再dos下输入 node –version,如果配置正常会显示正在使用 的Nodejs版本,如下所示:
第一个nodejs例子: helloworld
目标:在 控制台输出 helloworld
步骤:
1创建一个helloworld.js文件,把以下内容保存到文件中。
console.log("Hello World, wangwu !");
2. 使用node.js来执行js文件
node helloworld.js
第二个例子: 一个基于Node.Js的web应用
目标: 客户可以通过浏览器访问web应用,当客户在浏览器输入 http://127.0.0.1:8888时,可以看到一个欢迎页面。
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World,王五");
response.end();
}).listen(8888);
当调用 http.createServer(…)时 ,不仅要监听某个端口的服务器,还要确定服务器在接受到一个请求时,应该如何响应请求,响应给客户什么内容?而且这个过程不是同步的,而是异步的。因为请求在任何时刻都可以到达,使用http.createServer()后向创建它的方法传递一个函数,这样无论何时我们的服务器收到一个请求,这个传递进去的函数都会被调用,这样这个传递进去的函数是预先定义好的函数或是匿名函数都不重要了。
当收到请求时,使用response.writeHead()函数发送一个Http状态为200和HTTP头的内容类型( content-type),使用resonse.write()函数在HTTP主体发送文本”hello world wangwu”,最后调用 response.end()完成响应。
最后使用listen方法使服务器监听8888端口,用户在浏览器中直接输入
http://127.0.0.1:8888,就可以看到欢迎页面”hello world”了。
这里使用了回调函数,这个方法在有相应时间发生时调用这个函数来进行回调。
Node.jS 采用了非阻塞模式,当执行http.createServer(…)时,这条语句会被放到一个队列里,主进程接着往后执行后面的代码。比如jquery的异步请求,代码如下所示:
function ajaxConfirmInputPay( callBackFun )
{
jQuery.ajax({
//访问WebService使用Post方式请求
type : 'post',
//调用WebService的地址和方法名称组合
url : '${ctx}/carInsure_confirmInput_ajax',
//这里是要传递的参数,格式为 data: "{paraName:paraValue}"
data {name:'wangwu',age:'22',gender:'male’ },
//设置jquery ajax异步调用webservice
async: true,
//WebService 会返回Json类型
dataType : 'json',
//调用的回调函数
success : function(result){
callBackFun(result);
},
error : function(data, msg){
alert("server not responding!");
}
});
}
function inputCallBackFun(data)
{
if( data.flag == 'ok' ){
//调用自定义业务方法,比如关闭窗口
closeWindow();
}
}
jQuery(document).ready(function() {
doOperateBeforeAjax ();
ajaxConfirmInputPay(inputCallBackFun);
/**
* 当调用 ajaxConfirmInputPay()发生阻塞时,继续执行
* doperateAfterAjax()
*/
doOperateAfterAjax();
});
正常情况下,在页面初始化时代码会按照第一句执行完后,执行第二句。执行完第二句后在执行第三句顺序执行,但如果第二句ajaxConfirmInputPay非常耗费资源需要很长时间来操作,整个进程会停在这一句上,等待这句执行完后在执行第三句。
如果属于这种情况就是阻塞模式,建议使用ajax的异步调用来改善性能,当运行到第二句ajaxConfirmInputPay()发生阻塞时,继续执行 doOperateAfterAjax()方法,而不是等待ajaxConfirmInputPay()完成后在执行doOperateAfterAjax()方法。这就是非阻塞模式。就是增加一个回调函数inputCallBackFun,作为参数传入到doOperateAfterAjax 方法中。
- 大小: 3.3 KB
- 大小: 3.3 KB
分享到:
相关推荐
NodeJS开发指南
nodejs开发指南带随书源码
nodejs开发实战详解部分,大概到第二章,高清,求完整版
nodejs开发指南中第五章微博开发实例,nodejs开发指南 nodejs微博 nodejs+express+mongodb 并在微博实例上增加了几个功能: 1.注册增加验证码功能 2.登录,密码连续输入错误3次 ,1个小时内不得登录 3.首页和用户...
介绍Nodejs基础知识,在Windows、Linux下如何安装,使用框架如何开发,及使用forever部署,最后介绍一下自动生成javascriptAPI文档
NodeJs开发指南,从零基础学习NodeJs,就差此ZIP了,不懂的可以留言,必回。
基于uni-app和nodejs开发的在线学习微信小程序源码.zip 代码完整下载即用,无需修改确保可以运行。 基于uni-app和nodejs开发的在线学习微信小程序源码.zip 代码完整下载即用,无需修改确保可以运行。基于uni-app...
《nodejs开发指南》microblog实例express4.15.x版
nodejs开发指南,电子版,可以复制粘贴。本书适合刚学习nodejs和nodejs初级开发人员
NodeJs不可多得的中文技术指南,rar包中附赠随书源码code,由BYVoid编写!大家共同学习!
《node.js开发实战》,2018年1月版,忽如寄著,书中所有示例的代码
用Nodejs开发网页聊天室。内有源码!
《nodejs开发指南》中文 pdf 不错的入门书籍
Nodejs开发指南书中博客实例基于Express2,而由于Express3.0做出了较大改变使得原例无法直接使用。此例针对Express3.0修改了原案例,亲测可用。
涵盖的主要内容:NodeJs的概念、应用场景、...通过编写原生代码,讲解NodeJs的应用开发 适用于Nodejs初学者; javascript程序员; 想全面了解,系统学习nodeJs的人员以及爱好者; 从事nodejs开发的相关技术人员;
nodejs开发环境搭建示例
这个是把nodejs开发指南中的博客实例,使用最新的nodejs 与 express实现,完成了书中的最简单的功能。
NODEJS 常用开发包 留着备用 随时下载
基于nodejs开发的经典俄罗斯方块小游戏 基于nodejs开发的经典俄罗斯方块小游戏 基于nodejs开发的经典俄罗斯方块小游戏