1、认识 Node.js

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

1.1、

2008年

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

1.2、国内外的应用情况

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

Paypal From Java to Node.js

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

知乎的推送

网易

阿里

各种创业团队

1.3、主要应用领域

RESTFul API

实时通信:如消息推送等

高并发

I/O阻塞

1.4、社区

生于社区

社区推进

Github

国内

1.5、生态圈

以NPM为中心

基础服务提供商的支持

周边服务提供商的支持

1.6、知名度较高的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.7、IO.js

Joyent的目标:兼容性、性能

社区:New features

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

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

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

2、Node.js 与 JavaScript 的关系

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

2.1、JavaScript的诞生

1995年

JavaScript诞生:Branden Eich,10天时间

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

2.2、ECMAScript与DOM/BOM

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

1996-11,Netscape将JavaScript提交给ECMA

1997-06,ECMA-262发布

JavaScript = ECMAScript + DOM + BOM

2.3、Gmai与GoogleV8

2004-04-01,Gmail发布

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

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

2.4、新浪潮中的前端框架

DOM操作:jQuery/ExtJS/YUI

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

2.5、在服务器上运行JavaScript的尝试

Rhino引擎

javax.script API

2.6、Node为何选择了JavaScript

原生支持异步

历史包袱

开发门槛

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

{fib:JS}

2.8、全栈语言:JavaScript

前端:AngularJS、BACKBONE.JS、emben

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

移动端:PhoneGap、ReactNative

3、Node.js 的特点

  优点与缺点

3.1、部署简单方便

环境配置简单,只需要安装Node.js即可

注重约定

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

3.2、事件驱动

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

3.3、异步编程

3.4、异步编程

异步的实现方式

回调函数

事件监听

订阅/发布

3.5、高效与性能

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

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

其它语言对IO的处理:

PHP:原地等待,开多进程

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

3.6、单线程与多线程

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

子进程:Node.js的child_process模块

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

3.7、Node.js的缺点

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

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

单线程:可靠性

不适合CPU密集型的场景

回调的代码习惯影响阅读

3.8、你需要着重了解以下知识

Node.js的应用领域

Node.js的特点与缺点

前端(Node.js)(1)-- 初识Node.js的更多相关文章

  1. 前端知识(一)02 初识 Node.js-谷粒学院

    目录 初识Node.js 一.Node.js的概念 1.JavaScript引擎 2.什么是Node.js 3.Node.js有什么用 二.BFF 1.BFF 解决什么问题 2.BFF是什么 三.安装 ...

  2. 【Node.js】初识Node.js

    因组里项目需要,我和另外一名同事要学习Node.js.之前接触过Javascript,都是前台处理html时用到,现在要用Javascript做后端,学习Node.js,用一段时间专心学习一门新技术, ...

  3. Node学习笔记---初识Node

    博客原文地址:Claiyre的个人博客 https://claiyre.github.io/ 博客园地址:http://www.cnblogs.com/nuannuan7362/ 如需转载,请在文章开 ...

  4. 初识node.js(通过npm下载项目依赖的包的过程)

    一.初识node.js 简单的说Node.js 就是运行在服务器端的JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事 ...

  5. Node.js实战项目学习系列(1) 初识Node.js

    前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js ...

  6. node初识——node中的require方法与require.js的区别

    出处:http://blog.csdn.net/u013613428/article/details/51966500 作为一个前端的新手,总是诧异于js的模块载入方式,看到了通过requireJs提 ...

  7. 初识Node.js之Node与java作为后台服务器的对比

    > 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. ![file](https://img2018.cnblogs.com/blog/830272/20 ...

  8. 从 0 到 1 到完美,写一个 js 库、node 库、前端组件库

    之前讲了很多关于项目工程化.前端架构.前端构建等方面的技术,这次说说怎么写一个完美的第三方库. 1. 选择合适的规范来写代码 js 模块化的发展大致有这样一个过程 iife => commonj ...

  9. Node.js之路【第一篇】初识Node.js

    什么是Node.js 1.Node.js就是运行在服务端的JavaScrip. 2.Node.js是一个基于Chrome JavaScrip运行时简历的一个平台. 3.Node.js是一个非阻塞I/O ...

随机推荐

  1. LINUX挂接光盘镜像文件

    1.从光盘制作光盘镜像文件.将光盘放入光驱,执行下面的命令. #cp /dev/cdrom /home/sunky/mydisk.iso 或 #dd if=/dev/cdrom of=/home/su ...

  2. Python xlwt模块

    Examples Generating Excel Documents Using Python’s xlwt Here are some simple examples using Python’s ...

  3. 下面分享一下RHEL/CentOS7 安装图形化桌面详细图解

    Linux是一个多任务的多用户的操作系统,好多linux爱好者在安装完linux后经常遇到一个问题——没有图形化桌面(http://www.xcmnyy.com)今天小编在安装RHEL7的时候,一步留 ...

  4. 二分+2-sat——hdu3062

    hdu3622升级版 注意要保留两位小数 /* 给定n对圆心(x,y),要求从每对里找到一个点画圆,不可相交 使得最小半径最大 二分答案,设最小半径为r 然后两两配对一次进行判断,在2-sat上连边即 ...

  5. LUOGU P1291 [SHOI2002]百事世界杯之旅 (期望dp)

    传送门 解题思路 期望$dp$.因为这个是期望步数,所以要倒着推.那么这道题就变得一脸可做了,设$f[i]$表示还有$i$张牌没有收集的期望,那么考虑再抽一张,有$(n-i)/n$的概率抽到抽过的牌, ...

  6. 最后的egret

    坚持做一件事真的好难~ 决定重新写博客的时候想着一定要坚持一个周一篇,然而.... 年后上班老板找我的第一件大事:以后公司的棋牌产品不会有大的动作了:公司PHP(内部用的运营后台)的小姐姐休产假了,我 ...

  7. 转:Eclipse中设置编码的方式

    来源:http://blog.csdn.net/jianw2007/article/details/3930915 如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Ja ...

  8. java 调用区块链 发布和调用智能合约

    java连接区块链 很简单 ,调用智能合约要麻烦一些. 先说连接 区块链查询数据. 1 maven 项目导入 web3j 的依赖. <dependency> <groupId> ...

  9. xml中的<if>和截取字符串

    <#if (envPollute=='1')>√</#if><#if (envPollute=='0')>√</#if>${as_title?subst ...

  10. Swagger发布服务器时错误 500 : { "Message": "An error has occurred." }

    在做Web API的文档自动生成时,本机调试都正常,发布到服务器上出现500错误 500 : { "Message": "An error has occurred.&q ...