第一章欢迎进入node.js世界

本章内容

1:Node.js是什么

2:服务器端javascript

3:node的异步和事件触发本质

4:node为谁而生

5:node程序示例

  1.1

  node.js他的首次亮相是在2009年,非常流行,它在github受关注项目排行榜上位列第二(https://github.com/joyent/node),node创始人Ryan Dahl 2009年柏林JSCONF的网站上有node创始人Ryan Dahl第一次介绍node的视频。(已被拿掉)

  官网上(http://www.nodejs/org)给node下的定义是:“一个搭建在Chrome JavaScript运行时上的平台,用于构建高速、可伸缩的网络程序。node.js采用的事件驱动、非阻塞I/O模型,使他既轻量又高效,并成为构建运行在封不上设备锁的数据密集型实时程序的完美选择。‘’

  无论好坏,Javascript都是世界上最流行的编程语言,几乎遍布web上的每个角落,比较引入注目的先行者是Google地图和gmail,但类似的web应用有一大堆,从Twitter到facebook,再到github。

  现代化JavaScript虚拟机的性能正在改变着可以构建在web上的应用类型。一个很有说服力的、坦率地说是令人震撼的例子是jslinux,一个运行在JavaScript中的PC模拟器,它能加载Linux内核,可以利用终端会话与其交互,还能编写C城西,而这一切都是在浏览器中完成的。

  json是目前非常流行的数据交换格式,并且还是JavaScript原生的。

  有些nosql数据库中庸的就是JavaScript语言(couchDB和MongoDB)。

  JavaScript是一门编译目标语言,现在有很多可以编译成JavaScript语言。

  node用的虚拟机V8会紧跟ECMAScript标准。换句话说,在node中如果想用新的JavaScript语言特性,不用等到所有浏览器都支持。

  JavaScript成了一种引人瞩目的编写服务端应用的语言,Node已经赚足了眼球。但JavaScript知识整幅拼图中的一块,node使用Javascript的方式更加有趣。

  

  1.2异步和事件触发:浏览器

  node为服务端JavaScript提供了一个事件驱动的、异步的平台。它把JavaScript带到了服务端中的方式跟浏览器把JavaScript带到了客户端的方式几乎一模一样。他们都是事件驱动(事件轮询)和非阻塞的I/O处理(用异步I/O)。

  例:

  $.post(‘‘,function(data){

  console.log(data);

  //脚本继续执行

  });

 

  var = data = $.post(‘/resource.json‘);

  console.log(data);//被阻塞,需要执行完上一行再执行

  

  1.3异步和事件触发:服务器

  在node中,I/O几乎总数在主事件轮询之外进行,是的服务器可以一直处于高效并且随时能够做除响应的状态,就像Nginx一样。这样进程不会受I/O限制,因为I/O延迟不会拖垮服务器,或者像在阻塞方式下那样占很多资源。因此曾经在服务器上是重量级的操作,在node服务器上仍然可以是轻量级的。

  1.4DIRT程序

  Node所针对 的应用程序有一个专门的简称:DIRT。他表示数据密集型实时程序(data-intensive real-time),因为node自身在I/O上非常轻量,它善于将数据从一个管道混排或代理到另一个管道上,这能在处理大量请求时持有很多开放的连接,并且只占用一小部分内存,它的设计目标是保证相应能力,跟浏览器一样。

  对于web来说,实时程序是个新生事物。现在有很多web程序提供的信息几乎都是即时的,比如通过白板在线协作,对临近公交车的实时精准定位,以及多人在线游戏。不管是实时组件增强已有程序,还是打造全新的程序,web都在朝着响应式和协作型环境逐渐开发。而这种新型的web应用程序需要一个能够实时响应大量并发用户请求的平台来支撑他们。这正是node所擅长的领域,并不局限于web程序,其他的I/O负载比较重的程序也可以用到它。

  Browserling就是一个用Node开发的DIRT程序,它是一个很好的范例。在这个网站上我们可以在浏览器中使用各种浏览器。这对web前端开发工程师来说特别有用。

  

  1.5:默认DIRT

  node从构建开始就有一个事件驱动和异步的模型。JavaScript从来没有过标准的I/O库,那是服务端语言常见的配置。对于JavaScript而言,这总数有宿主环境决定的,JavaScript最常见的宿主环境,也是大多数开发人员所用的,就是浏览器,他是事件驱动和异步的。

  node重新实现了宿主中哪些常用的对象,尽量让浏览器和服务器保持一致,比如:

  计时器API(setTimeout)

  控制台API(console.log)

  

  1.5.1简单的异步程序

  $.post(‘‘,function(data){ console.log(data) })

  require(res).readFile(‘./resource,json‘,function(error,data){  })

  1.5.2hello world HTTP服务器

  var http = require(‘http‘);

  http.createServer(function(req,res){

  res.writeHead(200,{‘Content-Type‘:‘text/plain‘});

  res.end(‘hello world‘)

  }).listen(3000);

  console.log(‘server running‘)    

  1.5.3流数据

  node在数据流和数据流动上也很强大。你可以吧数据流看成特殊的数组,只不过数组中的数据分散在空间上,而数据流中的数据时分散在时间上的,通过将数据一块一块地传送,开发人员可以每收到一块数据就开始处理,而不用等到所有数据都到全了再做处理。

  只要有新的数据块准备好,就会激发data事件,当所有数据库都加载完之后,会激发一个end事件。

  node中也有可写数据流,可以往里写数据块。当http服务器上有情趣过来时,对其进行相应的res对象就是可写的数据流的一种。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于nodejs...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么实现目录不存在自动创建”文章能帮助大...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs如何实现定时删除文件”文章能帮助大家解决疑惑...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
本篇内容主要讲解“怎么安装Node.js的旧版本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎...
这篇“node中的Express框架怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要介绍“nodejs如何实现搜索引擎”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs如何实现搜索引擎...
这篇文章主要介绍“nodejs中间层如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs中间层如何设置”文...
这篇文章主要介绍“nodejs多线程怎么实现”,在日常操作中,相信很多人在nodejs多线程怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
这篇文章主要讲解了“nodejs怎么分布式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs怎么分布式”...
本篇内容介绍了“nodejs字符串怎么转换为数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
这篇文章主要介绍了nodejs如何运行在php服务器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nodejs如何运行在php服务器文章都...
本篇内容主要讲解“nodejs单线程如何处理事件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs单线程如何...
这篇文章主要介绍“nodejs怎么安装ws模块”,在日常操作中,相信很多人在nodejs怎么安装ws模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
本篇内容介绍了“怎么打包nodejs代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!
本文小编为大家详细介绍“nodejs接收到的汉字乱码怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs接收到的汉字乱码怎么解决”文章能帮助大家解...
这篇“nodejs怎么同步删除文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇...
今天小编给大家分享一下nodejs怎么设置淘宝镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希