Node.js的介绍
什么是 Node.js(官方解释)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 代码运行环境。 Node.js使用了一个事件驱动、非阻塞式I/O的模型( Node.js的特性),使其轻量级又高效。 Node.js 的包管理器 npm 是全球最大的开源库生态系统。
如上图所示:
- Node 内部采用 Google Chrome 的 V8 引擎,作为 JavaScript 语言解释器;
- 通过自行开发的 libuv 库,调用操作系统资源。
什么是 Node.js(非官方解释)
Node.js是 JavaScript 语言在服务器端的运行环境(平台)。Node.js 不是一门语言,也不是 JavaScript 的框架。
- 与PHP、JSP、Python、Perl、Ruby的“既是语言,也是平台”不同,Node.js的使用JavaScript进行编程,运行在 Chrome 的 V8 引擎上。
- 与PHP、JSP等相比(PHP、JSP、.net都需要运行在服务器程序上,Apache、Naginx、Tomcat、IIS。
),Node.js跳过了Apache、Naginx、IIS等HTTP服务器,它自己不用建设在任何服务器软件之上。Node.js的许多设计理念与经典架构(LAMP = Linux + Apache + MySQL + PHP)有着很大的不同,可以提供强大的伸缩能力。Node.js没有web容器。
运行环境(平台)的含义
- 首先,JavaScript 语言通过 Node 在服务器上运行,在这个意义上,Node 有点像 JavaScript 虚拟机。
- 其次,Node 生态系统活跃,提供了大量的开源库,使得 JavaScript 语言能与操作系统进行交互(比如读写文件、新建子进程),在这个层次上,Node 又是属于 JavaScript 的工具库。
为什么要学习服务器端开发
- 能够和后台开发的程序员更佳紧密地结合、更顺畅地沟通。
- 当网站的业务逻辑需要前置时,前端人员需要学习一些后台开发的技术,以完成相应的任务。
- 拓宽知识视野和技术栈,能够站在全局的角度审视整个项目。
为什么选择 Node.js 做后台开发
- 使用 JavaScript 语言 开发服务器端应用。
- 一些公司要求前端工程师掌握 Node.js 开发。
- Node.js 生态系统活跃,提供了大量的开源库。
Node.js的发展
Node 的历史
- 2008年左右,随着 Ajax 的逐渐普及,Web 开发逐渐走向复杂化,系统化;
- 2009年2月,Ryan Dahl 想要创建一个轻量级,适应现代 Web 开发的平台;
- 2009年5月,Ryan Dahl 在 GitHub 中开源了最初版本,同年11月,JSConf 就安排了 Node 讲座;
- 2010年底,Joyent 公司资助,Ryan Dahl 也加入了该公司,专门负责 Node 的开发;
- 2011年7月,在微软的支持下登陆 Windows 平台。PS:node 的生产环境基本是在 Linux 下。
据 Node.js 创始人 Ryan Dahl 回忆,他最初希望采用 Ruby,但是 Ruby 的虚拟机效率不行。
注意:是 Node 选择了 JavaScript,不是 JavaScript 发展出来了一个 Node。
Node.js的主要应用领域
- RESTFul API
- 实时通信:如消息推送等
- 高并发
- I/O阻塞
知名度较高的Node.js开源项目
- express:Node.js中著名的web服务器框架。
- Koa:下一代的 Node.js 的 Web 框架。
- mocha:功能强大的 node.js 测试框架。
- PM2:node 本来是单进程的,PM2可以实现和管理多进程。
- jade:非常优秀的模板引擎,不仅限于 js 语言。
- CoffeeScript:用简洁的方式展示 JavaScript 优秀的部分。
- Atom:文本编辑器。
- socket.io:实时通信框架。
Node.js的特点
- 单线程
Node.js 运行环境配置:通过 Node.js 安装包(不推荐)
去 Node.js 的官网下载安装包: