学习nodejs第一步

来源:互联网 发布:淘宝特价商品 编辑:程序博客网 时间:2024/04/29 20:35
  1. Node.js 是什么?Node.js与JavaScript的区别是什么?
  2. Node.js的优点?Node.js的缺点?
  3. Node.js适用场景?Node.js不适用的场景?
  4. Node.js的基本语法。Node.js的特性:
    1. 单线程
    2. 异步 IO
    3. 事件驱动
  5. npm 是什么?npm的基本使用
  6. REPL

Node.js 是什么?
Node.js是开放源代码,跨平台,可用于服务器端和网络应用的环境,也是JavaScript的解析器。由js编写而成。
Node.js与JavaScript的区别是什么?
  1. Node.js是一个执行javascript的轻量级web 服务器,是js的解析器。
  2. js是一门脚本语言;
  3. Node.js是后端语言,js是前端语言
Node.js的优点?Node.js的缺点?
Node.js优点:
1、采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。而且JavaScript也简单易学,很多前端设计人员可以很快上手做后端设计。
2、Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务。
3、Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。
Node.js缺点:
1、可靠性低
2、单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。

不过以上缺点可以可以通过代码的健壮性来弥补。目前Node.js的网络服务器有以下几种支持多进程的方式:
#1 开启多个进程,每个进程绑定不同的端口,用反向代理服务器如 Nginx 做负载均衡,好处是我们可以借助强大的 Nginx 做一些过滤检查之类的操作,同时能够实现比较好的均衡策略,但坏处也是显而易见——我们引入了一个间接层。
#2 多进程绑定在同一个端口侦听。在Node.js中,提供了进程间发送“文件句柄” 的功能,这个功能实在是太有用了(貌似是yahoo 的工程师提交的一个patch) ,不明真相的群众可以看这里:Unix socket magic
#3 一个进程负责监听、接收连接,然后把接收到的连接平均发送到子进程中去处理。

Node.js适用场景?Node.js不适用的场景?
  1. 适合
    1. JSON APIs——构建一个Rest/JSON API服务,Node.js可以充分发挥其非阻塞IO模型以及JavaScript对JSON的功能支持(如JSON.stringfy函数)
    2. 单页面、多Ajax请求应用——如Gmail,前端有大量的异步请求,需要服务后端有极高的响应速度
    3. 基于Node.js开发Unix命令行工具——Node.js可以大量生产子进程,并以流的方式输出,这使得它非常适合做Unix命令行工具
    4. 流式数据——传统的Web应用,通常会将HTTP请求和响应看成是原子事件。而Node.js会充分利用流式数据这个特点,构建非常酷的应用。如实时文件上传系统transloadit
    5. 准实时应用系统——如聊天系统、微博系统,但Javascript是有垃圾回收机制的,这就意味着,系统的响应时间是不平滑的(GC垃圾回收会导致系统这一时刻停止工作)。如果想要构建硬实时应用系统,Erlang是个不错的选择
  2. 不适合
    1. CPU使用率较重、IO使用率较轻的应用——如视频编码、人工智能等,Node.js的优势无法发挥
    2. 简单Web应用——此类应用的特点是,流量低、物理架构简单,Node.js无法提供像Ruby的Rails或者Python的Django这样强大的框架
    3. NoSQL + Node.js——如果仅仅是为了追求时髦,且自己对这两门技术还未深入理解的情况下,不要冒险将业务系统搭建在这两个漂亮的名词上,建议使用MySQL之类的传统数据库
Node.js的基本语法
  1. 七天学会NodeJS教程
  2. Node.js的特性:
    • 单线程
      • 单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。
    • 异步 IO
      • 输入/输出(I/O)
      • 异步非阻塞 I/O 模型是一种处理与 I/O 重叠进行的模型。读请求会立即返回,说明 read 请求已经成功发起了。在后台完成读操作时,应用程序然后会执行其他处理操作。当 read 的响应到达时,就会产生一个信号或执行一个基于线程的回调函数来完成这次 I/O 处理过程。

      • 图 5. 异步非阻塞 I/O 模型的典型流程
        异步非阻塞 I/O 模型的典型流程
        在一个进程中为了执行多个 I/O 请求而对计算操作和 I/O 处理进行重叠处理的能力利用了处理速度与 I/O 速度之间的差异。当一个或多个 I/O 请求挂起时,CPU 可以执行其他任务;或者更为常见的是,在发起其他 I/O 的同时对已经完成的 I/O 进行操作。
    • 事件驱动
      • 传统的web server多为基于线程模型。你启动Apache或者什么server,它开始等待接受连接。当收到一个连接,server保持连接连通直到页面或者什么事务请求完成。如果他需要花几微妙时间去读取磁盘或者访问数据库,web server就阻塞了IO操作(这也被称之为阻塞式IO).想提高这样的web server的性能就只有启动更多的server实例。
      • Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。在开发者看来,事件由 EventEmitter 对象提供。前面提到的 fs.readFile 和 http.createServer 的回调函数都是通过 EventEmitter 来实现的。
npm 是什么?npm的基本使用
  1. 是什么?
    1. npm是一个让JavaScript程序员分享和复用代码的工具。有了它,JS程序员能高效地管理和发布自己要分享的代码。
    2. NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题
  2. 基本使用,我们需要了解什么:http://www.cnblogs.com/chyingp/p/npm.html
    1. npm的安装、卸载、升级、配置
    2. npm的使用:package的安装、卸载、升级、查看、搜索、发布
    3. npm包的安装模式:本地 vs 全局
    4. package.json:包描述信息
    5. package版本:常见版本声明形式
REPL
  1. Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。
  2. Node 自带了交互式解释器,可以执行以下任务:
    1. 读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。
    2. 执行 - 执行输入的数据结构
    3. 打印 - 输出结果
    4. 循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。
1 0