手记
下载APP

Nodejs提炼与升华(一) 前言、Nodejs简介

Nodejs提炼与升华
前言

这是一套系统性非常强,逻辑紧密,由浅入深,详略得当,风趣幽默的Nodejs学习笔记。但既然是笔记,就必然没有办法做到面面俱到。事实上,我只关心基础、难于理解和容易出错的部分。如果你有一定的前端基础,并对Nodejs有十足的热情,那么这份资料非常适合你。
但实话实说,这份资料也许不适合那些初出毛犊的前端工程师们,虽然我已经尽我所能把涉及到的每个知识点讲解到最详细。

在遇到问题时,我总是喜欢强迫自己由一个问题举一反三,直到解决与此相关的所有问题为止。所以这份资料非常详细,详细到我在编写时觉得生无可恋,因为总有无数的问题需要解决。

这套资料分为基础知识和实战两部分,在基础知识部分,我们把更多的注意力放在基础理论的学习上;而在实战部分,我们则以案例代码驱动为主。这份资料具有很强的系统性,其中的课题逻辑也都是非常严密的。因此我推荐你顺序阅读这份资料,依次把份资料中所提供的代码付诸实践。

约定

(1)重点部分或值得注意的部分会加粗表示

(2)章节引子或前言

章节引子、前言或者背景会用引用字体表示

(3)代码表示

代码会放在代码块里

或者以行内代码的形式出现

(4)小故事、比喻或书名会以斜体字表示

(5) 代码注释中=>符号后面的内容表示输出的结果

第一章 Nodejs简介

Nodejs是一个为实时web应用开发而诞生的平台。它在诞生之初就充分考虑了在实时响应,超大规模数据要求下架构的可扩展性。这使它摒弃传统平台依靠多线程来实现并发的设计思路,而采用单线程、异步式IO、事件驱动式的设计模型。这些特性不仅带来了巨大的性能提升,还减少了多线程程序设计的复杂性,进而提高了开发效率。

Nodejs最初是2009年由Ryan Dahl发起的开源项目,现在由Joyent公司管理并维护。Nodejs有着强大而灵活的包管理器(node package manager,npm),目前已经有上万个第三方模块,其中,有像express这样的网站开发框架,mysql、mongodb数据库的接口,有模板语言解析、CSS生成工具、邮件、加密、图形、调试支持,甚至还有图形用户界面和操作系统API工具。

1.1 Nodejs是什么?

Nodejs并非一种独立的语言,也不是JS框架或浏览器端的库,Nodejs是一个让JS运行在服务器端的开发平台。与PHP、Python相比,它跳过了Apache、Nginx等HTTP服务器,直接面向前端开发。

Nodejs是一个让JS运行在浏览器之外的平台。它实现了诸如文件系统、模块、包、操作系统API网络通信等在浏览器中JS望尘莫及的功能。

Nodejs遵循CommonJS规范,它采用目前世界上最快的JS引擎——Google Chrome V8。Nodejs不运行在浏览器上,也就不存在所谓的浏览器兼容,你可以方心的使用JS语言的所有特性。

1.2 Nodejs能做什么?

Nodejs为网络而生,但它能做的远不止开发一个网站那么简单,使用Nodejs,你可以轻松开发:

  1. 具有复杂逻辑的网站
  2. 基于社交网络的大规模web应用
  3. web socket服务器
  4. TCP/UDP套接字应用程序
  5. 命令行工具
  6. 交互式终端程序
  7. 带有图形界面的本地应用程序
  8. 单元测试工具
  9. 客户端JS编译器

Nodejs内建了HTTP服务器支持,也就是说你可以轻而易举的实现一个网站和服务器的组合。Nodejs还可以部署到非网络应用的环境下,比如一个命令行工具。

1.3Nodejs的最大特点—— 异步式IO与事件驱动

Nodejs的最大特点就是采用异步式IO与事件驱动的架构模式设计。对于高并发的解决方案,传统的架构是多线程模型,也就是为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式IO调用时的时间开销。Nodejs使用的是单线程模式,对于所有的IO采取异步式的请求方式,避免了频繁的上下文切换。Nodejs在执行过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式IO请求完成后会被推送到事件队列,等待程序进程进行处理。我们会在后面的章节对异步式IO和事件驱动机制进行详细的说明。

1.4 Nodejs的性能

1.4.1 Nodejs架构

1.4.2 Nodejs对比PHP+Nginx

在3000并发连接,30秒的测试下,输出“hello world”请求以及对MYSQL进行查询操作请求,结果显示
Nodejs性能要明显优于PHP+Nginx。

单纯就JS而说,它已经成为了当今社会最快的脚本语言之一。

1.5 CommonJS

1.5.1 服务器端JS的重生

最初,真正使大多数人看到服务器端JS威力的是微软的ASP。但随着Web2.0时代的到来,ajax等概念被提出,JS成为了前端开发的代名词,同时服务器端的JS也逐渐被人们遗忘。直至近几年,JS又具有了在服务器端流行的条件,Nodejs应允而生。Mongodb等新型非关系型数据库也开始使用JS和Json作为其操作语言,基于JS的服务器端实现开始遍地开花。

1.5.2 CommonJS的规范与实现

为了统一JS在浏览器之外的实现标准,CommonJS诞生了。它是一种服务器端JS的规范。CommonJS不参与标准库的实现,其实现交给Nodejs之类的项目来完成。CommonJS规范包括了模块(modules),包(packages),系统(system),二进制(binary),系统文件,控制台,编码,套接字,单元测试等部分。

Nodejs是目前CommonJS最热门的一个实现,但它并不完全遵循CommonJS的规范,因为规范的指定总是滞后于技术的发展。

打开App,阅读手记
10人推荐
随时随地看视频慕课网APP