读了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的核心是事件驱动、非阻塞I/O模型,这使得它在处理高并发请求时表现优秀。其单线程执行和异步编程的...
nodejs开发实战详解部分,大概到第二章,高清,求完整版
nodejs开发指南中第五章微博开发实例,nodejs开发指南 nodejs微博 nodejs+express+mongodb 并在微博实例上增加了几个功能: 1.注册增加验证码功能 2.登录,密码连续输入错误3次 ,1个小时内不得登录 3.首页和用户...
基于uni-app和nodejs开发的在线学习微信小程序源码.zip 代码完整下载即用,无需修改确保可以运行。 基于uni-app和nodejs开发的在线学习微信小程序源码.zip 代码完整下载即用,无需修改确保可以运行。基于uni-app...
《node.js开发实战》,2018年1月版,忽如寄著,书中所有示例的代码
涵盖的主要内容:NodeJs的概念、应用场景、...通过编写原生代码,讲解NodeJs的应用开发 适用于Nodejs初学者; javascript程序员; 想全面了解,系统学习nodeJs的人员以及爱好者; 从事nodejs开发的相关技术人员;
这个是把nodejs开发指南中的博客实例,使用最新的nodejs 与 express实现,完成了书中的最简单的功能。
本框架是基于nodejs express框架二次开发的,本框架包含数据库操作示例和注解。 适合nodejs入门学习或者nodejs开发人员开发中小型web项目。直接在命令窗口运行:npm start,就可启动程序!访问地址:...
开发node.js是需要下载node.exe工具,希望对大家有用
使用nodejs开发后端服务demo 纯后端 下载
微信小程序开发附源码:详解NodeJs开发微信公众号
nodejs开发微信公众号
..我在阅11读NodeJS文档中读出的19个套路.docx
..我在阅11读NodeJS文档中读出的19个套路.pdf
nodejs视频教程,可以快速帮助你入门nodejs开发中,nodejs不错哦
分享一套课程——Nodejs开发仿马蜂窝旅游小程序API接口,服务器端开发,商家后台,大家下载学习。
node基础 node进阶高级 mongodb ko2全套视频 项目实战