zoukankan      html  css  js  c++  java
  • 初识Node.js

    一、认识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.回调的代码习惯影响阅读
       
  • 相关阅读:
    windows 安装 make
    go lang AES 加密
    Microsoft .NET Framework 5.0
    Prometheus+Grafana+Alertmanager实现告警推送教程 ----- 图文详解
    ElasticSearch实战系列九: ELK日志系统介绍和安装
    1024快乐,加班使我快乐,福报如圣光醍醐灌顶!
    react-redux笔记
    (转)Vuex、Flux、Redux、Redux-saga、Dva、MobX
    React笔记
    SQLServer设置客户端使用IP地址登录
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/5347596.html
Copyright © 2011-2022 走看看