前端(Node.js)(1)-- 初识Node.js

一、认识 Node.js

诞生、发展、应用现状、生态圈等方面

1.一、

2008年前端

RyanDahl的目标是建立一个易扩展、适用于现代Web应用通讯的服务器平台java

1.二、国内外的应用状况

LinkedIn移动版From ROR to Node.js,base on Joyentnode

Paypal From Java to Node.jspython

Twitter的队列:收集须要保存从Tweets,传给负责写入的进程web

知乎的推送mongodb

网易express

阿里编程

各类创业团队后端

1.三、主要应用领域

RESTFul API浏览器

实时通讯:如消息推送等

高并发

I/O阻塞

1.四、社区

生于社区

社区推动

Github

国内

1.五、生态圈

以NPM为中心

基础服务提供商的支持

周边服务提供商的支持

1.六、知名度较高的Node.js开源项目

express(web服务器框架)

PM2(Node原本是单进程,PM2实现和管理多进程)

jade(优秀的模板引擎,还支持其余一些语言)

coffeeScript(JavaScript的转义语言(相似于python),相对JS它更加简洁、具备更好的高毒性,coffeescript的代码也能够转换为JS的代码,有不少js代码和Node.js代码是用coffeescript完成的)

itom(文本编译器,主要使用coffeescript完成,他的文件系统子进程管理以及用于调试和测试的服务器部分都是使用Node.js来支撑的)

socket.io是一个实时通讯框架(应用他能够在Node.js中方便地使用websocket进行通讯)

Pomelo是一个网易公司推出的一个策略游戏服务器端框架,mongoose是Node.js中使用mongodb的扩展、mocha是功能强大的Nnode.js测试框架

1.七、IO.js

Joyent的目标:兼容性、性能

社区:New features

IO.js: A friendly fork of Node.js with an open governance model

现状: IO.js的发展速度成为了有史以来成长最快的开源项目

关系:全面兼容,两者依然有可能并存

二、Node.js 与 JavaScript 的关系

  诞生、发展、2004年之后的新浪潮、服务器端运行 JavaScript 的解决方案,以及 Node.js 与 JavaScript 之间的关系

2.一、JavaScript的诞生

1995年

JavaScript诞生:Branden Eich,10天时间

JavaScript的目标:业余人士,浏览器上的脚本语言

2.二、ECMAScript与DOM/BOM

1996-08,包含JScript的IE3.0发布

1996-11,Netscape将JavaScript提交给ECMA

1997-06,ECMA-262发布

JavaScript = ECMAScript + DOM + BOM

2.三、Gmai与GoogleV8

2004-04-01,Gmail发布

2005-0208,Google Maps发布,后又推出街景服务

2008-09-02,Google Chrome发布,一同面世的还有V8

2.四、新浪潮中的前端框架

DOM操做:jQuery/ExtJS/YUI

结构化前端框架:AngularJS/backbone.js/Ember.js

2.五、在服务器上运行JavaScript的尝试

Rhino引擎

javax.script API

2.六、Node为什么选择了JavaScript

原生支持异步

历史包袱

开发门槛

2.七、Node.js与JavaScript的关系 -- 另外一种实现:Fibjs

{fib:JS}

2.八、全栈语言:JavaScript

前端:AngularJS、BACKBONE.JS、emben

后端:Node.js、{fib:JS}

移动端:PhoneGap、ReactNative

三、Node.js 的特色

  优势与缺点

3.一、部署简单方便

环境配置简单,只须要安装Node.js便可

注重约定

项目所须要扩展、插件、资源相对独立,不易冲突

3.二、事件驱动

主要观点:根据当前出现的事件,调动资源进行相关的处理

3.三、异步编程

3.四、异步编程

异步的实现方式

回调函数

事件监听

订阅/发布

3.五、高效与性能

单个操做的性能并不优于其它解决方案

经过优化资源调配和I/O操做来实现高效

其它语言对IO的处理:

PHP:原地等待,开多进程

C/C++:利用线程,程序要本身维护线程和资源的状态

3.六、单线程与多线程

Google V8 是单线程的,因此与Node.js一样是单线程的。为了更好地利用CPU资源,能够利用子进程和多进程:

子进程:Node.js的child_process模块

多进程:PM2等等第三方工具

3.七、Node.js的缺点

大量采用匿名函数,使得抛出的异常不易阅读

try/catch限于同步代码,使得异常捕获较为复杂

单线程:可靠性

不适合CPU密集型的场景

回调的代码习惯影响阅读

3.八、你须要着重了解如下知识

Node.js的应用领域

Node.js的特色与缺点

相关文章
相关标签/搜索