nodejs

- 编辑:大众自然网 -

nodejs

  保藏

  查看我的保藏

  0

  有效+1

  已投票

  0

  编辑

  锁定

  本词条由“科普中邦”科学百科词条编写与利用办事项目

  审核

  。

  Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运转情况。 Node.js 运用了一个事情驱动、非滞碍式 I/O 的模子。

  [1]nodejs

  Node 是一个让 JavaScript 运转正在效劳端的开辟平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等效劳端说话平起平坐的剧本说话。

  [2]

  宣告于2009年5月,由Ryan Dahl开辟,本色是对Chrome V8引擎举行了封装。Node对极少分外用例举行优化,供给取代的API,使得V8正在非浏览器情况下运转得更好。V8引擎践诺Javascript的速率万分疾,机能万分好。Node是一个基于Chrome JavaScript运转时创立的平台, 用于轻易地搭筑反映速率疾、易于扩展的搜集利用。Node 运用事情驱动, 非滞碍I/O 模子而得以轻量和高效,万分适合正在分散式装备上运转数据群集型的及时利用。

  中文名

  node.js

  外文名

  Node

  类 别

  运转于效劳端的JavaScript阐明器

  宣告时分

  2009年5月

  开辟者

  Ryan Dahl

  最新版本

  13.9.0

  更新时分

  2020-02-25

  1

  成长史

  2

  个性

  3

  模块

  4

  装置

  ?

  Linux下装置Node

  ?

  Windows下装置Node

  5

  集成开辟情况

  6

  利用偏向

  7

  示例次第

  8

  事情处置示例

  编辑

  2009年2月,Ryan Dahl正在博客上发外打定基于V8创筑一个轻量级的Web效劳器并供给一套库。

  2009年5月,Ryan Dahl正在GitHub上宣告了最第一版本的局部Node包,随后几个月里,有人开头运用Node开辟利用。

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

  2010年年闭,Node得回云盘算效劳商Joyent资助,创始人Ryan Dahl插手Joyent全职负担Node的成长。

  2011年7月,Node正在微软的支柱下宣告Windows版本。

  编辑

  V8引擎自身运用了极少最新的编译技巧。这使得用Javascript这类剧本说话编写出来的代码运转速率得回了极大擢升,又省俭了开辟本钱。对机能的苛求是Node的一个枢纽成分。 Javascript是一个事情驱动说话,Node愚弄了这个便宜,编写出可扩展性高的效劳器。Node采用了一个称为“事情轮回(event loop)”的架构,使得编写可扩展性高的效劳器变得既容易又安静。提升效劳器机能的技艺有众种众样。Node选拔了一种既能提升机能,又能减低开辟丰富度的架构。这是一个万分厉重的个性。并发编程每每很丰富且布满地雷。Node绕过了这些,但仍供给很好的机能。

  Node采用一系列“非滞碍”库来支柱事情轮回的形式。本色上便是为文献编制、数据库之类的资源供给接口。向文献编制发送一个哀告时,无需等候硬盘(寻址并检索文献),硬盘打定好的时间非滞碍接口会知照Node。该模子以可扩展的形式简化了对慢资源的探访, 直观,易懂。特别是对付熟练onmouseover、onclick等DOM事情的用户,更有一种似曾认识的感触。

  固然让Javascript运转于效劳器端不是Node的怪异之处,但却是其一健旺功用。不得不供认,浏览器情况局限了咱们选拔编程说话的自正在。任何效劳器与日益丰富的浏览器客户端利用次第间共享代码的抱负只可通过Javascript来杀青。固然还存正在其他极少支柱Javascript正在效劳器端 运转的平台,但由于上述个性,Node成长迅猛,成为到底上的平台。

  正在Node启动的很短时分内,社区就仍旧进献了大宗的扩展库(模块)。此中许众是连合数据库或是其他软件的驱动,但另有许众是凭他们的能力筑制出来的万分有效的软件。

  终末,不得不提到的是Node社区。固然Node项目还万分年青,但很少看到对一个项目如斯狂热的社区。不管是新手,如故专家,群众都缠绕着项目,运用并进献本身的本领,全力于打制一个搜索、支柱、分享、听取提倡的乐园。

  Node的便宜

  Node行动一个新兴的前端框架,后台说话,有许众吸引人的地方:

  RESTful API

  单线程

  Node可能正在不新增分外线程的情状下,还是可能对义务举行并发处置 —— Node.js是单线程的。它通过事情轮回(event loop)来杀青并发操作,对此,咱们应当要填塞愚弄这一点 —— 尽或者的避免滞碍操作,取而代之,众运用非滞碍操作。

  非滞碍IO

  V8虚拟机

  事情驱动

  编辑

  Node运用Module模块去划分分歧的功用,以简化利用的开辟。Modules模块有点像C++说话中的类库。每一个Node的类库都蕴涵了异常丰裕的各式函数,譬喻http模块就蕴涵了和http功用闭联的许众函数,可能助助开辟者很容易地比照如http,tcp/udp等举行操作,还可能很容易的创筑http和tcp/udp的效劳器。

  要正在次第中运用模块是异常轻易的,只必要如下:

  正在这里,引入了http类库,而且对http类库的援用存放正在http变量中了。这个时间,Node会正在咱们利用中查找是否存正在node_modules的目次,而且查找这个目次中是否存正在http的模块。即使Node.js找不到这个目次,则会到全体模块缓存中去寻找,用户可能通过相对或者绝对道途,指定模块的地位,譬喻:

  var myModule=require();

  模块中蕴涵了许众功用代码片断,正在模块中的代码大局部都是私有的,有趣是正在模块中界说的函数方式和变量,都只可正在统一个模块中被挪用。当然,可能将某些方式和变量展现到模块外,这个时间可能运用exports对象去杀青。

  编辑

  下面先容下Node的装置,起初正在nodejs的网站上按照操作编制下载闭联的装置包,对付Ubuntu(linux)下的装置,可能如下举行:

  sudo apt-get update

  sudo apt-get install node

  或者:

  sudo apt update

  sudo apt install node

  官网现已供给装置包(最新的历久支柱版本: 10.16.0)、编译器和相应的API 文档(English)。

  [1]

  编辑

  具备书写JavaScript的IDE均可。平常的记事本也可能举行开辟。

  编辑

  正在几年的时分里,Node.JS渐渐成长成一个成熟的开辟平台,吸引了很众开辟者。有很众大型高流量网站都采用Node.JS举行开辟,别的,开辟职员还可能运用它来开辟极少神速挪动Web框架。

  除了Web利用外,NodeJS也被利用正在很众方面,本文清点了NodeJS正在其它方面所开辟的十大令人奇妙的项目,这些项目涉及到利用次第监控、媒体流、长途支配、桌面和挪动利用等等。

  编辑

  任何一套规范都由一个知名的次第开头:Hello World !正在Node中,Http是首要的。Node为创筑http效劳器做了优化,因而你正在网上看到的大局部示例和库都是鸠集正在web上(http框架、模板库等)。以下做了一个nodejs的Hello World 演示:

  var http = require(http);

  server = http.createServer(function (req, res) {

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

  res.end("Hello World

  ");

  });

  server.listen(8000);

  console.log("httpd start @8000");

  编辑

  本示例希图向读者传达 Node.js 闭于 HTTP 处置经过的翔实观念。正在不商量编程说话和情况的情状下,咱们假设您仍旧晓得每每情状下 HTTP 哀告是奈何办事的,而且对 Node.js 的 EventEmitters 和 Streams 也已晓得。即使您对他们并不熟练,通过 API 文档可能神速查阅。

  创筑效劳

  Node 的搜集利用都必要先创筑一个搜集效劳对象,这里咱们通过 createServer 来杀青。

  var http = require(http);

  var server = http.createServer(function(request, response) {

  // handle your request

  });

  传入 createServer 的 function 正在每次 HTTP 哀告时都将被挪用践诺,是以这个 function 也被称为哀告的处置者。到底上通过 createServer 返回的 Server 对象是一个 EventEmitter,咱们必要做的仅仅是正在这里存储这个 server 对象,并正在之后对其增添监听器。

  var http = require(http);

  var server = http.createServer();

  server.on(request, function(request, response) {

  // handle your request

  });

  当 HTTP 哀告这个效劳时,node 挪用哀告处置者 function 并传入极少用于处置事情闭联的对象:request 和 response。咱们可能万分轻易的得回这两个对象。

  var http = require(http);

  var server = http.createServer();

  server.on(request, function(request, response) {

  // handle your request

  }).listen(8080);

  为了对实质的哀告供给效劳,正在 server 对象上必要挪用 listen 方式。绝大大都情状你必要传入 listen 你思要效劳监听的端标语,这里也存正在许众其他的可选计划,参睹 API reference。

  参考材料

  1.

  Node.js中文网

  .Node.js中文网[援用日期2019-06-08]

  2.

  Node.js开辟实战详解

  .清华大学出书社.2012-5-5[援用日期2018-08-21]


nodejs