node 简介

1 什么是Node.js?

是一个可以让 JavaScript 运行在服务器端的平台

它可以让JavaScript 脱离浏览器的束缚运行在服务器环境下,就像运行 Python、 Perl、 PHP、 Ruby程序一样。

你可以用 Node.js 轻松地进行服务器端应用开发, Python、 Perl、 PHP、 Ruby 能做的事情 Node.js 几乎都能做,而且可以做得更好。

Node.js 是一个为实时Web(Real-time Web)应用开发而诞生的平台,它从诞生之初就充分考虑了在实时响应超大规模数据要求下架构的可扩展性。

这使得它摒弃了传统平台依靠多线程来实现高并发的设计思路,而采用了单线程异步式I/O事件驱动式的程序设计模型。

这些特性不仅带来了巨大的性能提升,还减少了多线程程序设计的复杂性,进而提高了开发效率。

Node.js 有着强大而灵活的包管理器(node package manager, npm),目前已经有上万个第三方模块,其中有网站开发框架,有 MySQL、 MongoDB等数据库接口,有模板语言解析、 CSS 生成工具、加密、调试支持,甚至还有图形用户界面和操作系统 API工具。

Node.js 可以作为服务器向用户提供服务,与 PHP、 Python、 Ruby on Rails 相比,它跳过了 Apache、 Nginx 等 HTTP服务器,直接面向前端开发。

Node.js 中所谓的 JavaScript 只是 Core JavaScript,或者说是 ECMAScript 的一个实现,不包含 DOM、 BOM 或者 Client JavaScript。

这是因为 Node.js 不运行在浏览器中,所以不需要使用浏览器中的许多特性。

历史上将 JavaScript移植到浏览器外的计划不止一个,但Node.js 是最出色的一个。

随着 Node.js 的成功,各种浏览器外的 JavaScript 实现逐步兴起,因此产生了 CommonJS 规范

CommonJS 试图拟定一套完整的 JavaScript 规范,以弥补普通应用程序所需的 API,譬如文件系统访问、命令行、模块管理、函数库集成等功能。

Node.js 的部份实现遵循了CommonJS规范,但由于两者还都处于诞生之初的快速变化期,也会有不一致的地方。

Node.js 的 JavaScript 引擎是 V8,来自 Google Chrome 项目。

Node.js 不运行在浏览器中,所以也就不存在 JavaScript 的浏览器兼容性问题,你可以放心地使用 JavaScript 语言的所有特性。

正如 JavaScript 为客户端而生, Node.js 为网络而生。

Node.js能做什么?

Node.js 能做的远不止开发一个网站那么简单,使用 Node.js,你可以轻松地开发:

  • 具有复杂逻辑的网站;
  • 基于社交网络的大规模 Web 应用;
  • Web Socket 服务器;
  • TCP/UDP 套接字应用程序;
  • 命令行工具;
  • 交互式终端程序;
  • 带有图形用户界面的本地应用程序;
  • 单元测试工具;
  • 客户端 JavaScript 编译器。

Node.js 内建了 HTTP 服务器支持,也就是说你可以轻而易举地实现一个网站和服务器的组合。

这个服务器不仅可以用来调试代码,而且它本身就可以部署到产品环境,它的性能足以满足要求。

Node.js 还可以部署到非网络应用的环境下,比如一个命令行工具。

Node.js 还可以调用C/C++ 的代码,这样可以充分利用已有的诸多函数库,也可以将对性能要求非常高的部分用C/C++ 来实现。

2 异步式 I/O 与事件驱动

对于高并发的解决方案,传统的架构是多线程模型,也就是为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式 I/O 调用时的时间开销。

Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。

时间: 2024-08-09 09:56:38

node 简介的相关文章

nodejs从0到1(Node简介+模块机制)

1.nodejs简介: 1.Node不是js应用,而是js运行平台.客户端js通过浏览器和v8引擎联系到了一起,服务器端js用Node和v8又牵起了小手,所以说Node是运行平台,类似于客户端的浏览器.Node采用c++语言编写,v8引擎也是c++写的.Node为神马用c++写呢?这是个有趣的故事,详见<深入浅出Nodejs>. 2.模块机制: 说模块机制之前,先说下CommonJS.CommonJS是一种规范.原来js规范比较薄弱,不利于js大规模应用:主要有以下的缺陷: 2.1:js没有模

node 简介 起源

最近的node 的一篇文章阅读量很大,所以写一篇基础篇供大家分享,抛砖引玉,各取所需. 部分内容来源大神笔记. Node.js 简介:@@@@@@@@@@@@@@@@@@@ Node.js是目前非常火热的技术,但是它的诞生经历却很奇特. 众所周知,在Netscape设计出JavaScript后的短短几个月,JavaScript事实上已经是前端开发的唯一标准. 后来,微软通过IE击败了Netscape后一统桌面,结果几年时间,浏览器毫无进步.(2001年推出的古老的IE 6到今天仍然有人在使用!)

node简介--node三大特性

三大特点 单线程 非阻塞I/O 事件驱动 1. 单线程 Node 不为买个用户连接创建一个 线程,而是只通过一个 线程 这样做的好处:系统就不需要有创建线程,和销毁的时间的开销,是性能更好 缺点:单线程的阻塞的问题.(一个崩溃了 ,其他的都崩溃了) 2.非阻塞 I/O I/O阻塞了代码的执行,node就是非阻塞的i/o,在执行完访问数据库的代码之后,将立即执行后面 的代码,而不是等待,而是将处理数据的过程放在回调函数中,提高了效率 为了处理异步的I/O线程就必须要有事件的循环,不断的检查有没有未

【读书笔记】《深入浅出nodejs》第一章 Node简介

1. Node的官方网站: http://nodejs.org 2. Node的缘起: Ryan Dahl 打算设计一个高性能的Web服务器. Ryan Dahl 认为设计高性能Web服务器的要点在于: (1)事件驱动 (2)非阻塞I/O (what? && why?) Ryan Dahl 选择使用JavaScript作为该服务器的实现语言,起名为Node. *为什么是JavaScript? (1)高性能 (2)符合事件驱动 (3)没有历史包袱 3. Node的特点 (1)保留前端浏览器J

node简介

node: 服务端 JavaScript 它允许在后端(脱离浏览器环境)运行 JavaScript 代码. 它使用了 Google 的 V8 虚拟机(Google 的 Chrome 浏览器使用的 JavaScript 执行环境),来解释和执行 JavaScript 代码. 伴随着 Node.js 的还有许多有用的模块,它们可以简化很多重复的劳作,比如向终端输出字符串. Node.js 事实上既是一个运行时环境,同时又是一个库.

Node.js 学习资源

这篇文章编译整理自Stack Overflow的一个如何开始学习Node.js的Wiki帖,这份资源列表在SO上面浏览接近60万次,数千个收藏和顶.特意整理发布到这里,其中添加了部分中文参考资料. 学习指南和教程 NodeSchool.io 交互式课程 Node的艺术 (Node简介) Hello World Hello World Web Server Node.js 指南 使用Node.js, express和MongoDB创建一个博客 Node+MongoDB 100分钟建站攻略 Proj

一个月时间整理《深入浅出Node.js》

今天终于把朴灵老师写的<深入浅出Node.js>给学习完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架.库的使用层面上,而是从不同的视角来揭示Node自己内在的特点和结构.建议 有一定Node基础或者做过Node方面的小项目的同学阅读,看完以后你的思维会有很奇特的碰撞,我看的时候就常常会有这样的想法:“哦,原来这个功能是 这样实现的哦”.下面这篇文章是我第二次阅读<深入浅出Node.js>的一些学习记录,并且通过百度脑图这个工具来画出思维导图,每天将自

Node.js 开发指南笔记

第一章:node简介 介绍了node是什么:node.js是一个让javascript运行在服务器端的开发平台, node能做些什么:[书上的] 具有复杂逻辑的网站 基于社交网络的大规模Web应用 Web Socket服务器 TCP/UDP套接字应用程序 命令行工具 交互式终端程序 带有图形用户界面的本地应用程序 单元测试工具 客户端Javascript编译器 node能做些什么:[网上比较好的一段说明]: NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的

Node 基础 备注

1.1 Node简介 Node的异步I/O, 在Node中,可以从语言层面很自然的进行并行I/O操作,每个操作直接无需等待之前的I/O调用结束: 事件与回调函数: Node保持了JavaScript在浏览器中单线程的特点,而且在Node中,JavaScript与其余线程是无法共享热河状态的,单线程的最大好处是不用像多线程编程那样处处在意状态的同步问题,没有死锁的存在,也没有线程上下文交换所带来的性能上的开销: 1.2 模块 JavaScript先天缺乏一项功能: 模块:  javascript通