一.认识Node
1.什么是Node
Node的名称
-
Nodejs,NodeJS,Node.js等.本课程遵循官方说法Node
-
Node是javascript语言的服务器运行环境
所谓运行环境有两层意思:
1.javascript语言通过Node在服务器上运行,就好像Node是javascript的虚拟机.
2.Node提供大量的工具库,使javascript与操作系统可以互动,Node是javascript的工具库. -
Node内部采用Google公司的V8引擎,作为JavaScript语言解释器,执行JavaScript的速度非常快,性能非常好.
2.Node的诞生
3.为什么要学习Node
- 很火
- Linkedln(国外的社交网站)移动版from ROR to Node,base on Joyent
- 著名的支付公司Paypal From Java to Node.js
- 国内的网易公司,推出的开源服务器框架Pomelo
- 知乎的推送
- 阿里的天猫的业务
- UBER ,优步中国也是用node来创建的
- 很强
- 有很多知名度很高的开源项目都是node如:Express,PM2,CoffeeScript,socket.io
- 应用领域广
- RESTful API 主要的数据获取方式
- 实时通信 服务器和浏览器的消息的推送
- 高并发 node是单进程就可以承载大量的请求
- I/O阻塞 JavaScript的事件和异步可以协调I/O阻塞
二.Node与javascript
1.Node为什么选择JavaScript
- 高性能:通过事件驱动,非阻塞I/O达到高性能
- 符合事件驱动: JavaScript天生就是事件驱动,支持异步操作
- 没有历史包袱:JavaScript的门槛低,历史包袱少.
2.Node给JavaScript带来的意义
Node打破了JavaScript只能在浏览器中运行的局面,前后端环境统一,大大降低前后端转换所需的上下文交换代价
三.Node的特点
1.Node的特点及缺点
- 特点
- 环境部署简单
- 注重约定
- 基于事件
- 异步编程
- 高效与性能
- 单线程与多进程
- 子进程
- 多进程
- 缺点
- 大量采用匿名函数,使得抛出的异常不易阅读
给匿名函数命名是很好的习惯,匿名函数可以使代码更简洁,但是出错后的提示非常难以研读. - try/catch 限于同步代码,使得异常铺货较为复杂
try/catch是无法处理回调函数的,换句话说只能捕获同步代码的错误.如果是异步代码,
就需要在异步代码内部做异常的判断,但是异步处理不使用try/catch,一般和回调函数搭配使用
而且Node规定,回调函数的第一个参数,为异步的错误对象.
总结:同步代码使用try/catch来处理错误,
异步代码使用错误标志参数来进行异步的处理. - 单线程可靠性问题
单线程最大的好处就是:存在不同线程之间的资源的调动性,最大的问题就是可靠性.
当一个单线程在运行中发生了错误,而错误并没有获取到,这时候问题就出现了;
执行同步错误的时候被阻塞了,单线程是无能为力的.为了避免这种情况的发生,
需要注意以下几个方面:1.代码一定要严谨 2.尽量避免使用同步代码 3.使用多进程工具 - 不适合cpu密集型的场景
比如:事情的处理,纯粹的运算. - 回调代码习惯影响阅读
2.推荐Node学习的网站
- node官网 nodejs.org
- 程序员社区 gitHub.com
网友评论