关于node.js

首先,node.js不是一门语言,是一个平台。因为在以前,javascript主要是用于网页的交互,所以必须依附于浏览器存在,只有在浏览器上才能运行javascript. 后来javascript的使用者越来越多,ECMAscript的标准也逐渐完善,功能越来越多,有人就想用javascript来写后端一统天下做一个全盏工程师,于是就出现node.js了。Node.js是集成了Google v8引擎来执行代码,而且大部分的模块都是用javascript来写的。这使得javascript可以离开了浏览器的环境单独工作,所以javascript的使用场景就更加多了。

基于事件驱动

Node.js是基于事件驱动的,所以可以处理高并发请求。而且node.js是非阻塞的。关于这个非阻塞其实我也一直不太明白,不过我现在好像有一点了解了。因为node.js是基于javascript写的,javascript有一个很重要的特性就是异步编程。

(下面Javascript都用js代替)

因为js本身是单线程了,也就是一个js文件,执行起来是按照语句顺序执行的。既然如此那怎么能异步呢?这个问题原来也困扰了我很久。其实异步不是指js本身的异步。因为js是在浏览器中运行的,浏览器是有多个线程的,在执行到js的异步请求语句的时候,后面的语句需要等这个请求完成之后才能执行,这样就会阻塞后面的语句了,这个时候浏览器就假死了。所以异步请求是请求浏览器另开一个b线程,b线程是不同于当前执行js 的线程的,然后通过回调函数来返回请求结果,这个时候呢,异步请求就交给b线程来做了,这个js文件剩下语句的就可以继续执行了。直到b线程做好了,然后通过回调函数返回结果给js来处理,这个时候等js把手上忙的事情都忙完了,就可以把返回结果一个个来进行处理了。(好像说的有点乱,下次再修改)

Node.js是非阻塞的,主要就是利用异步请求来实现(个人理解,不妥请指出)。

EventEmitter

因为node.js是基于事件驱动的,所以events模块非常重要。类EventEmitter是events模块的定义与实现。

今天主要是学习了EventEmitter的一些方法,不过node.js的api好多东西都看不懂,应该都是es6的新特性,比如定义用了const,还有函数不写function(a,b){//..}了而是写成(a,b)=>{//…}这样的模式,有点不太习惯。

今天先写到这里吧。

Node.js学习-1的更多相关文章

  1. NODE.JS学习的常见误区及四大名著

    NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang ...

  2. Node.js学习系列总索引

    Node.js学习系列也积累了一些了,建个总索引方便相互交流学习,后面会持续更新^_^! 尽量写些和实战相关的,不讲太多大道理... Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- ...

  3. 【入门必备】最佳的 Node.js 学习教程和资料书籍

    Web 开发人员对 Node.js 的关注日益增多,更多的公司和开发者开始尝试使用 Node.js 来实现一些对实时性要求高,I/O密集型的业务.这篇文章中,我们整理了一批优秀的资源,你可以得到所有你 ...

  4. node.js学习(1)

    新建便笺 3 node.js学习(1) 1)安装 http://nodejs.org/download/下载. 2)编写一个案例 var http=require("http"); ...

  5. 我的Node.js学习历程

    学习一门技术,每个人都有每个人的方法.我的方法很简单,做项目. 基本概念 在搭建一个node网站之前,还是要掌握一些基本的概念的,这里列举一下,具体的内容大家自己到网上去查: npm bower ex ...

  6. Node.js学习之TCP/IP数据通讯

    Node.js学习之TCP/IP数据通讯 1.使用net模块实现基于TCP的数据通讯 提供了一个net模块,专用于实现TCP服务器与TCP客户端之间的通信 1.1创建TCP服务器 在Node.js利用 ...

  7. Node.js学习起步

    Node.js学习: 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱 ...

  8. 一点感悟:《Node.js学习笔记》star数突破1000+

    写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...

  9. Node.js学习看这里:基础、进阶、文章

    Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的.可扩展的网络应用. Node.js采用事件 ...

  10. Node.js学习笔记(3):NPM简明教程

    Node.js学习笔记(3):NPM简明教程 NPM常用操作 更新NPM版本 npm install npm -g -g,表示全局安装.我们可以指定更新版本,只需要在后面填上@版本号即可,也可以输入@ ...

随机推荐

  1. C#针对js escape解码

    在javascript 中通常用escape与unescape进行编码以方便传输. 在asp.net页面接收到这些数据以后可以使用 Microsoft.JScript.GlobalObject.une ...

  2. WebForm Repeater: 重复器

    Repeater控件,可以用来一次显示一组数据项.比如,可以用它们显示一个数据表中的所有行.             Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式. ...

  3. 索尼Sony ATI显卡驱动 Win7 Win8 Win8.1 视频黑屏 解决方法

    索尼ATI显卡驱动 Win7  Win8  Win8.1 视频 黑屏 完美解决方法: 下载这个补丁 安装 即可 解决  ! baidu pan:  http://pan.baidu.com/s/1gd ...

  4. Linux下常用yum命令

    linux各发行版有多种包管理机制,下面介绍基于RedHat系的yum包管理命令: yum -y install xxx                                     无需询 ...

  5. jquery 通过ajax FormData 对象上传附件

    之前上传附件都是用插件,或者用form表单体检(这个是很久以前的方式了),今天突发奇想,自己来实现附件上传,具体实现如下 html: <div>   流程图: <input id=& ...

  6. 安卓版App开发心得

    从2016年4月到6月主要做的工作是网站的开发,而6月到现在2016年8月初,主要做的工作是Android和IOS两种App的开发,又以Android为主. 将这段时间的Android开发心得记录如下 ...

  7. Ubuntu 反复进入登录框问题

    记录一下,今天碰到一个问题,到ubuntu登陆界面时,输入用户名和密码之后,马上又回到登陆界面 查看了 .xsession-errors. 网上查找了相关资料,想到自己之前装过nvidia的驱动. 卸 ...

  8. 【已解决】新搭建的VPN服务器客户端无法正常连接

    昨天花了一天的时间,终于把VPN服务器搭建好了.但是客户端却一直提示无法拨号成功.查看VPN日志如下:[root@localhost log]# tail -f messages Jun 13 14: ...

  9. c# winform DirectX播放器 可以任意设置宽高比 屏幕拉伸

    第一步:dll引用 Microsoft.DirectX.dll Microsoft.DirectX.AudioVideoPlayback.dll 如果没有的话,可能需要安装微软的DRECTX JDK ...

  10. Raytracer

    http://www.cnblogs.com/miloyip/archive/2010/03/29/1698953.html http://www.scratchapixel.com/lessons/ ...