Node.js笔记之简介

来源:互联网 发布:我的世界临冬城数据 编辑:程序博客网 时间:2024/05/16 13:54

什么是Node.js

Node.js是一门将javascript应用于服务器端并追求打造高性能web服务器的技术。社区火爆,在github上也有很多支持者。越来越多企业将其应用于自己项目,像阿里巴巴团队就十分支持Node.js,开放了很多学习教程,还提供了开源淘宝npm(Node.js模块下载工具)镜像方便中国使用者下载。

命名与起源

Node.js最早是在09年由一个叫Ryan Dahl的人在github上发布的,他希望每个Node进程都构成这个网络应用中的一个节点,所以将其起名为Node。在创造Node.js之前,他主要从事高性能web服务器,经历很多尝试和失败,他发现web服务器的几个要点:事件驱动,非阻塞I/O。此外他评估了很多编程语言想作为Node.js的实现道路,最终选择了javascript,主要因为它符合事件驱动,高性能(V8),没历史包袱(javascript在服务器端没市场,不影响导入I/O库),基于这两点他便开始走向开启了Node.js的大门的道路。

特点

1.异步I/O

异步I/O是web开发的十分重要的技术,不了解可以举例来说,在页面加载时候如果不使用异步,页面加载完成时间是每个需要加载任务的时间总和,而使用异步则是每个加载任务当中最长的任务所需时间,后者极大的提高了用户体验。Node.js底层构建了许多异步API,我们可以在语言层面很自然的进行调用。

2.事件与回调函数

事件的编程方式轻量级,松耦合,只用关注事务点。回调函数则非常适合异步调用的数据返回。

3.单线程

单线程有好有坏。最大好处是不用像多线程那样处处在意状态同步问题,也没有死锁,也没有线程上下文交换带来的性能开销。最大问题就是无法利用多核CPU,错误引起整个应用推出,大量计算占用CPU无法调用异步I/O等,但Node.js有其对应的处理方法。

4.跨平台

Node.js有个libuv中间件可以帮助它夸windows,*nix。

适合场景

1.I/O密集型

Node.js面向网络且擅长并行I/O,能够有效地组织起更多硬件资源,从而提供更好服务。

2.分布式应用

Node.js可伸缩性强,阿里巴巴团队开发的NodeFox中间件用多个mysql数据库像单个mysql一样。

3.与遗留系统和平共处

许多公司将Node.js整合到旧系统中,两者互相结合,取长补短。

4.关于CPU密集型

Node.js可以利用C/C++扩展模块、子进程间消息传递来利用CPU。

0 0
原创粉丝点击