天天看点

nodejs-学习笔记001

简介   

 Node.js,或者 Node,是一个可以让 JavaScript 运行在服务器端的平台。它可以让JavaScript 脱离浏览器的束缚运行在一般的服务器环境下,就像运行 Python、Perl、PHP、Ruby程序一样。你可以用 Node.js 轻松地进行服务器端应用开发,Python、Perl、PHP、Ruby 能做的事情 Node.js 几乎都能做,而且可以做得更好。 一句话概括,就是让javascript作为后台服务器的开发语言。

    Node.js 不是一种独立的语言 

    Node.js 也不是一个 JavaScript 框架 

    Node.js 更不是浏览器端的库 

    Node.js 是一个让 JavaScript 运行在服务端的开发平台 

Node.js 不运行在浏览器中 

Node.js 是一个让 JavaScript 运行在浏览器之外的平台。它实现了诸如文件系统、模块、包、操作系统 API 、网络通信等 Core JavaScript 没有或者不完善的功能。 

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

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

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

 具有复杂逻辑的网站;

 基于社交网络的大规模 Web 应用;

 Web Socket 服务器;

 TCP/UDP 套接字应用程序;  8

 命令行工具;

 交互式终端程序;

 带有图形用户界面的本地应用程序;

 单元测试工具;

 客户端 JavaScript 编译器。

Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计 。Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。 

nodejs-学习笔记001

这种异步事件模式的弊端也是显而易见的,因为它不符合开发者的常规线性思路,往往需要把一个完整的逻辑拆分为一个个事件,增加了开发和调试难度。 

Node.js 的架构

nodejs-学习笔记001

CommonJS 规范与实现 

为了统一 JavaScript 在浏览器之外的实现,CommonJS 诞生了。CommonJS 试图定义一套普通应用程序使用的API,从而填补 JavaScript 标准库过于简单的不足。CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环境下运行,就像用 C++ 编写的应用程序可以使用不同的编译器和运行时函数库一样。为了保持中立,CommonJS 不参与标准库实现,其实现交给像 Node.js 之类的项目来完成。图1-5是 CommonJS 的各种实现。 

nodejs-学习笔记001

CommonJS 规范包括了模块(modules)、包(packages)、系统(system)、二进制(binary)、控制台(console)、编码(encodings)、文件系统(filesystems)、套接字(sockets)、单元测试(unit testing)等部分。目前大部分标准都在拟定和讨论之中,已经发布的标准有Modules/1.0、Modules/1.1、Modules/1.1.1、Packages/1.0、System/1.0。 

继续阅读