初识Node.js

本文介绍了Node.js的诞生和发展历程,包括其在国内外的应用情况及主要应用领域,并探讨了Node.js与JavaScript之间的关系,同时概述了Node.js的特点及其面临的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、认识Node.js

(一)诞生

    2008年,由Ryan Dahl始创,其目标:创建一个易扩展、适用于现代Web应用通信的服务器平台
(二)国内外的应用情况
    1.LinkedIn移动版From RoR to Node.js, base on Joyent
   2. Paypal From Java to Node.js
   3. Twitter的队列:收集需要保存的Tweets,传给负责写入的进程
   4. 知乎的推送
    5.网易
    6.阿里
   7. 各种创业团队(如优步等。)
(三)主要应用领域
    1.RESTFul API
    2.实时通信:如消息推送等
    3.高并发
    4.I/O阻塞
(四)社区
  1.生于社区
  2.社区推进
   3.Github
   4.国内
 (五)生态圈
    1.以NPM为中心
   Node Package Manager ,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的 标准
    2.基础服务提供商的支持
    3.周边服务提供商的支持
  (六)知名度较高的Node.js开源项目
    1.express
   2. PM2
   3. iade Node Templete Engine
   4. Coffee Script
    5.Atom
    6.socket.io
   7. pomelo
   8.mongoose
   9.mocha
 (七)IO.js
    1.Joyent的目标:兼容性、性能
    2.社区:New features
    3.IO.js:A friendly fork of Node.js with an open governance model
    4.现状:IO.js的发展速度,成为了有史以来成长最快的开源项目
    5.关系:全面兼容,二者依然有可能合并
二、Node.js与JavaScript的关系

(一)JavaScript的诞生

     1995年
JavaScript诞生:Branden Eich,10天时间
JavaScript的目标:业余人士,浏览器上的脚本语言
(二)ECMAScript与DOM/BOM
    1.1996-08,包含JScript的IE3.0发布
   2.1996-11,Netscape将JavaScript提交给ECMA
   3.1997-06,ECMA-262发布
   4.JavaScript = ECMAScript + DOM + BOM
 
(三)Gmail与Google V8
    1.2004-04-01,Gmail发布
    2.2005-02-08,Google Maps发布,后又推出街景服务
    3.2008-09-02,Google Chrome发布,一同面世的还有V8
    4.I/O阻塞
(四)新浪潮中的前端框架
  1.DOM操作:jQuery / ExtJS / YUI
  2.结构化前端框架:AngularJS / Backbone.js / Ember.js
 
 (五)在服务器上运行JavaScript的尝试
    1.Rhino引擎
    2.javax.script API
  (六)Node为何选择了JavaScript?
    1.原生支持异步
   2.历史包袱
   3.开发门槛
   (七)另一种实现:Fibjs
   (八)全栈语言:JavaScript
   三、Node.js的特点
   (一)部署简单方便
   1.环境配置简单,只要安装Node.js即可。
   2.注重约定。
   3.项目所需要扩展、插件、资源相对独立,不易冲突。
 
(二)事件驱动
   主要观点:根据当前出现的事件,调动资源进行相关的处理。
 
(三)异步编程
    异步的实现方式:
    1.回调函数
    2.事件监听
    3.订阅发布
    4.I/O阻塞
(四)高效与性能
  1.单个操作的性能并不优于其它解决方案
  2.通过优化资源调配和I/O操作来实现高效
 (其它语言对IO的处理:
    PHP:原地等待,开多进程
    C/C++:利用线程,程序要自己维护线程和资源的状态)
 
 (五)单线程与多进程

    Google V8是单线程的,所以Node.js与同样是单进程的。为了更好的利用CPU资源,可以利用子进程和多进程:

    1.子进程:Node.js的child_process模块
    2.多进程:PM2等第三方工具
  (六) Node.js的缺点
    1.大量采用匿名函数,使得抛出的异常不易阅读
    2.try/catch限于同步代码,使得异常捕获较为复杂
    3.单线程:可靠性
    4.不适合CPU密集型的场景
    5.回调的代码习惯影响阅读
   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值