ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 前言 JavaScript开发者的时代: 不仅仅是H5规范尘埃落定,flash技术见隐江湖 智能终端的大众普及 而是更具有划时代意义的node.js推出,让JavaScript流畅的运行在服务器端,彻底打破了前后端的语言边界,解放了前端程序员的职责约束,走向一个崭新的舞台。 Node.js虽然带了一个.js后缀,但是和Javascript没有太大的关系 Node.js = Google(chrome)浏览器+V8引擎+C++语言 编写 本质上是一个“JavaScript运行环境“ 提到JavaScript,大家就会想到各种交互组件、异步请求、DOM、BOM等众多内容。它需要依赖浏览器中的JS引擎,来解析JavaScript代码 而Node.js这个运行环境,不仅仅是可以解析JS代码,并且也没有浏览器安全级的各种限制,同时还提供了许多系统级别的API,例如:1.文件的读写、2.进程的管理、3.网络通信。 Node.js 是一个 Javascript 运行环境(runtime)。它让 Java Script 可以开发后端程序,实现几乎其他后端语言实现的所有功能,可以与 PHP、JSP、Python、Ruby 、Java等后端语言平起平坐。 Nodejs 是基于 V8 引擎,V8 是 Google 发布的开源 JavaScript 引擎,本身就是用于 Chrome 浏览器 的 JS 解释部分,但是 Ryan Dahl 这哥们,鬼才般的,把这个 V8 搬到了服务器上,用于做服务器的软件。 ![NodeJS创始人](https://box.kancloud.cn/115e12c09e6ace390dd39a75f80bda24_626x306.png) 短短几年的时间,Node 取得了巨大的成功。在企业界,Node 的应用也越来越广泛,2016 年 nodeJS 官方的调查报告。2016 年全球有 350 万开发者使用 nodeJS,相比去年保持了 100%的增长率。像 Yahoo、 Microsoft 这样的大公司,有好多应用已经迁移到 Node 了。国内的阿里巴巴、网易、腾讯、新浪、百度等 公司的很多线上产品也纷纷改用 Node 开发,并取得了很好的效果。据统计很多 A 轮、 B 轮的创业公司更 喜欢使用 NodeJs 开发。 ![](https://box.kancloud.cn/ae80003a60f8630dcde5e9088b297e98_870x568.png) # 优势 1. NodeJs 语法完全是 js 语法,只要你懂 JS 基础就可以学会 Nodejs 后端开发 Node 打破了过去 JavaScript 只能在浏览器中运行的局面。前后端编程环境统一,可以大大降低开发成本。 2. NodeJs 超强的高并发能力 Node.js 的首要目标是提供一种简单的、用于创建高性能服务器及可在该服务器中运行的各种应用程 序的开发工具。 首先让我们来看一下现在的服务器端语言中存在着什么问题。 在 Java、PHP 或者.net 等服务器端语言 中,会为每一个客户端连接创建一个新的线程。而每个线程需要耗费大约 2MB 内存 理论上, 一个 8GB 内存的服务器可以同时连接的最大用户数为 4000 个左右 。要让 Web 应用程序支持更多的用户,就 需要增加服务器的数量,而 Web 应用程序的硬件成本当然就上升了。 。也就是说, Node.js 不为每个客户连接创建一个新的线程,而仅仅使用一个线程。当有用户连接了,就触发一个 内部事件,通过非阻塞 I/O、事件驱动机制,让 Node.js 程序宏观上也是并行的。使用 Node.js,一个 8GB 内存的服务器,可以同时处理超过4 万用户的连接。 3. 实现高性能服务器 严格地说,Node.js 是一个用于开发各种 Web 服务器的开发工具。在 Node.js 服务器中,运行的是高性能 V8 JavaScript 脚本语言,该语言是一种可以运行在服务器端的 JavaScript 脚本语言。 那么,什么是 V8 JavaScript 脚本语言呢?该语言是一种被 V8 JavaScript 引擎所解析并执行的脚本语言。V8 JavaScript 引擎是由 Google 公司使用 C++语言开发的一种高性能 JavaScript 引擎,该引擎并不局限于在浏览 器中运行。Node.js 将其转用在了服务器中,并且为其提供了许多附加的具有各种不同用途的 API。例如, 在一个服务器中,经常需要处理各种二进制数据。在 JavaScript 脚本语言中,只具有非常有限的对二进制数 据的处理能力,而 Node.js 所提供的 Buffer 类则提供了丰富的对二进制数据的处理能力。 另外,在 V8 JavaScript 引擎内部使用一种全新的编译技术。这意味着开发者编写的高端的 JavaScript 脚本代 码与开发者编写的低端的C语言具有非常相近的执行效率,这也是Node.js服务器可以提供的一个重要特性。 4. 开发周期短、开发成本 低、学习成本低 Node.js 自身哲学,是花最小的硬件成本,追求更高的并发,更高的处理性能。 # NodeJs 适合做什么? 在短短几年多的时间里,Node 变得非常热门,使用者也非常多。这些使用者对于 Node 的 各自倚重点也各部相同,经过整理,主要有下几类 • 前后端编程语言环境统一。这类倚重点的代表是雅虎。雅虎开放了 Cocktai 框架,利用 自己深厚的前端沉淀,将 YUI3 这个前端框架的能力借助 Node 延伸到服务器端,使得使用 者摆脱了日常工作中一边写 JavaScript—边写 PHP 所帯来的上下文交换负担。 • Node 带来的高性能 I/0 用于实时应用。Voxer 将 Node 应用在实时语音上。国内腾讯的 朋友网将 Node 应用在长连接中,以提供实时功能,花瓣网、蘑菇街等公司通过 socket.io 实 现实时通知的功能。 • 并行 I/0 使得使用者可以更高效地利用分布式环境。阿里巴巴 eBay 是这方面的典型。 阿里巴巴的 NodeFox 和 eBay 的 ql.io 都是借用 Node 并行 I/O 的能力,更高效地使用已有的 数据。 • 并行 I/O •有效利用稳定接口提升 Web 渲染能力。雪球财经和 Linkedln 的移动版网站均 是这种案例,撇弃 同步等待式的顺序请求,大胆采用并行丨/〇,加速数据的获取进而提升 Web 的渲染速度。 • 云计算平台提供 Node 支持。微软将 Node 引入 Azure 的开发中,阿里云、百度均纷纷 在云服务器上提供 Node 应用托管服务,Joyent 更是云计算中提供 Node 支持的代表。这类 平台看重 JavaScript 带来的开发上的优势,以及低资源占用、高性能的特点。 • 游戏开发领域。游戏领域对实时和并发有很高的要求,网易开源了 pomelo 实时框架, 可以应用在游戏和高实时应用中。 • 工具类应用。过去依赖 java 或其他语言构建的前端工具类应用,纷纷被一些前端工程 师用 Node 重写,用前端熟悉的语言为前端构建熟悉的工具。 ![](https://box.kancloud.cn/1b7b78829a213caa7d97dfe142c73f35_1171x515.png) 二、 为什么学习Node.js 1. 它很火 2. 它很强 Node-Webkit appjs jade ghost grunt express.js gulp nodecast log.io nodeOS Imdex Filsh Forever PDFKit Hyro NoduinoWeb Haroopad 很火,很强怎能不学?OK,怎么学?推荐一下几个学习的网站: 1. nodejs.org(nodejs的官网) 2. npmjs.com 3. github.com 4.stackoverflow.com