关于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. form上传文件2种方式

    示例1: 表单里有图片/文件的上传 <form enctype="multipart/form-data" method="post"> <i ...

  2. 一个简单的c# 贪吃蛇程序

    一个简单的c#贪吃蛇程序 程序分为界面设计和程序设计:界面设计和程序设计均参考了一些游戏实例,但是所有代码内容是本人编写. 由于看到别人写的程序并没有署名,这里的署名全部都是csdn官网. 游戏界面设 ...

  3. C/C++之指针加减法

    C和C++中可对指针进行加减,但对其进行乘除则基本无实际意义.一般来说,对指针进行减法的前提是减数和被减数均指向同一数组.加法同理.需要注意的是,两个指针的减法,结果是两个地址之间索引变量的数目,而不 ...

  4. http 协议集合,超级简单

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web; ...

  5. C#面向编程的三大特征

    在面向对象的编程中,首先要清楚地理解面向对象编程的三个基本特征: 封装, 继承, 多态! 1.封装 更确切地说,是对象封装.就是每个对象都包含自己进行某种操作时所需要的所有信息,而不依赖于其他对象来完 ...

  6. Infinite loop when using cookieless session ID on Azure

    If you use cookieless session ID and deploy them on Azure, you might get infinite loop when you quer ...

  7. jquery autocomplete

    <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="http: ...

  8. MKRCVCD-MKRCVCDSER.exe can't start in service

    Logfile contents: 2016/11/23 02:15:09 NamePipeSer Log Start.2016/11/23 02:15:09 Start C:\Program Fil ...

  9. php常用数组函数回顾一

    数组对于程序开发来说是一个必不可少的工具,我根据网上的常用数组函数,结合个人的使用情况,进行数组系列的总结复习.里面当然不只是数组的基本用法,还有相似函数的不同用法的简单实例,力求用最简单的实例,记住 ...

  10. 19-ES6(2)

    Promise 概念 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果. 特点 对象的状态不受外界影响.Promise 对象代表一个异步操作,有三种 ...