NodeJs入门解析

来源:互联网 发布:富士康数据库工程师 编辑:程序博客网 时间:2024/05/23 00:04

一、Node简介

   简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。我们可以使用Node构建快速、易于扩展的网络应用平台。Node的结构与Chrome十分相似,它们都是基于事件驱动的一部构架,浏览器通过事件驱动来服务界面上的交互,Node通过事件驱动来服务I/O。在Node中,JavaScript可以随心所欲地访问本地文件,可以搭建WebSocket服务器端,可以连接数据库,可以如Web Workers一样玩转多进程。Node.js使用事件驱动,非阻塞I/O模型,轻量、高效,可以完美地处理时时数据,运行在不同的设备上。

1、Node的特点

(1)、异步I/O

  在Node中,绝大多数的操作都以异步的方式进行调用,我们可以从语言层面很自然地进行并行I/O操作。每个调用之间无须等待之前的I/O调用结束。在编程模型上可以极大提升效率。

(2)、事件与回调函数

  事件的编程方式具有轻量级、松耦合、只关注事务点等优势。回调函数是最好接受异步调用返回数据的方式。

(3)、单线程

  单线程的最大好处是不用像多线程编程那样处处在意状态的同步问题,这里没有锁死的存在,也没有线程上下文交换所带来的性能上的开销。单线程也有它自身的弱点:

   a、无法利用多核CPU。

   b、错误会引起整个程序的退出,应用的健壮性值得考验。

   c、大量计算占用CPU导致无法继续调用I/O。

  Node采用与Web Workers相同的思路来解决单线程中大计算量的问题:子进程。子进程的出现,意味着Node可以从容地应对单线程在健壮性和无法利用多核CPU方面的问题。通过将计算分发到各个子进程,可以将大量计算分解掉,然后再通过进程之间的事件消息来传递结果。

(4)、跨平台

  起初Node只可以在Linux平台上运行,随着Node的发展,为了兼容Windows和*nix平台,就在操作系统与Node上层模块系统之间构建了一层平台层架构,即libuv。libnv已经成为许多系统实现跨平台的基础组件。

2、Node的应用场景

(1)、I/O密集型

  Node面向网络且擅长并行I/O,能够有效地组织起更多的硬件资源,从而提供更多的服务。I/O密集的优势主要在于Node利用事件循环的处理能力,而不是启动每一个线程为每一个请求服务,资源占用极少。

(2)、擅长CPU密集型业务

  由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起。但是适当调整和分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起,这样既可同时享受到并行异步I/O的好处,又能充分利用CPU。

  Node的异步I/O已经解决了在单线程上CPU与I/O之间阻塞无法重叠利用的问题,I/O阻塞造成的性能浪费远比CPU的影响小。

(3)、与遗留系统和平共处

(4)、分布式应用

二、Node安装配置

1、Node.js安装包下载

  Node.js安装包及源码下载地址为:https://nodejs.org/en/download/。

 

  你可以根据不同平台系统选择你需要的Node.js安装包。Node.js 历史版本下载地址:https://nodejs.org/dist/。注意:Linux上安装Node.js需要安装Python 2.6 或 2.7 ,不建议安装Python 3.0以上版本。

2、安装nodejs 

本文实例以 v4.5.0 版本为例,其他版本类似, 安装步骤:

步骤 1 : 双击下载后的安装包 v4.5.26.0,如下所示:

        

步骤 2 : 勾选接受协议选项,点击 next(下一步) 按钮 :

 

步骤 3 : Node.js默认安装目录为 "C:\Program Files\nodejs\" , 你可以修改目录,并点击 next(下一步):

 

步骤4 : 点击树形图标来选择你需要的安装模式 ,这里我们选择Online documentation shortcuts模式,然后点击下一步 next(下一步)

 

步骤 5 :点击 Install(安装) 开始安装Node.js。你也可以点击 Back(返回)来修改先前的配置。 然后并点击 next(下一步):

  

点击 Finish(完成)按钮退出安装向导。

 

检测PATH环境变量是否配置了Node.js,点击开始=》运行=》输入"cmd" => 输入命令"path",输出如下结果:

 

我们可以看到环境变量中已经包含了D:\Download\nodejs\

检查Node.js版本

 

三、Node创建第一个应用

 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi。从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需 要 PHP 来处理。

 不过对Node.js来说,概念完全不一样了。使用 Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器。事实上,我们的 Web 应用以及对应的Web服务器基本上是一样的。

 在我们创建 Node.js 第一个 "Hello, World!" 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的:

 (1)、引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。

 (2)、创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。

 (3)、接收请求与响应请求:服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

1、创建 Node.js 应用

步骤一、引入 required 模块

我们使用 require 指令来载入http模块,并将实例化的HTTP赋值给变量http,实例如下:

var http = require("http");

步骤二、创建服务器

接下来我们使用 http.createServer() 方法创建服务器,并使用 listen 方法绑定8888端口。函数通过request, response参数来接收和响应数据。实例如下,在你项目的根目录下创建一个叫 server.js 的文件,并写入以下代码:

//引入http模块var http = require('http');//创建服务器var server =http.createServer(function (request, response) {// 发送 HTTP 头部// HTTP 状态值: 200 : OK// 内容类型: text/htmlresponse.writeHead(200, {"content-type":"text/html;charset=UTF-8"});// 发送响应数据 "Hello World"response.end('<h1>Hello World!山水子农利用Node.js创建的第一个应用</h1>');})//启动服务器,并且监听80端口。server.listen(80);// 终端打印如下信息console.log('Server running at http://127.0.0.1:8888/');

以上代码我们完成了一个可以工作的 HTTP 服务器。

使用 node 命令执行以上的代码:

 

接下来,打开浏览器访问 http://127.0.0.1:80/,你会看到一个写着 "Hello World!山水子农利用Node.js创建的第一个应用"的网页。

 

 

0 0