node.js学习1-----node.js理论

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/strivenoend/article/details/86617010

(一)node.js学啥?

node.js=事件(单线程执行模型实现并发的依赖)+io(非阻塞io实现异步)+计时器

Node.js 使用事件驱动非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

(二)node.js历史?

  • 2009年2月,Ryan Dahl在博客上宣布准备基于V8创建一个轻量级的Web服务器并提供一套库。

  • 2009年5月,Ryan Dahl在GitHub上发布了最初版本的部分Node.js包,随后几个月里,有人开始使用Node.js开发应用。

  • 2009年11月和2010年4月,两届JSConf大会都安排了Node.js的讲座。

  • 2010年年底,Node.js获得云计算服务商Joyent资助,创始人Ryan Dahl加入Joyent全职负责Node.js的发展。

  • 2011年7月,Node.js在微软的支持下发布Windows版本。 

(三)node的架构?

javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全

Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node。

(四)nodejs的特点

RESTful API(第三方库)

Node.js可以在不新增额外线程的情况下,依然可以对任务进行并发处理 —— Node.js是单线程的。它通过事件循环(event loop)来实现并发操作,对此,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。

非阻塞IO

V8虚拟机

事件驱动+单线程

(五)node.js的解释器

node.js的解释器是?他的运行环境是?他在哪里执行?他的虚拟机是?

v8引擎,机器平台,v8虚拟机,v8

(六)node.js的模块

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');

模块中包含了很多功能代码片断,在模块中的代码大部分都是私有的,意思是在模块中定义的函数方法和变量,都只能在同一个模块中被调用。当然,可以将某些方法和变量暴露到模块外,这个时候可以使用exports对象去实现。 

猜你喜欢

转载自blog.csdn.net/strivenoend/article/details/86617010