Node.js学习-1
关于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的更多相关文章
- NODE.JS学习的常见误区及四大名著
NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang ...
- Node.js学习系列总索引
Node.js学习系列也积累了一些了,建个总索引方便相互交流学习,后面会持续更新^_^! 尽量写些和实战相关的,不讲太多大道理... Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- ...
- 【入门必备】最佳的 Node.js 学习教程和资料书籍
Web 开发人员对 Node.js 的关注日益增多,更多的公司和开发者开始尝试使用 Node.js 来实现一些对实时性要求高,I/O密集型的业务.这篇文章中,我们整理了一批优秀的资源,你可以得到所有你 ...
- node.js学习(1)
新建便笺 3 node.js学习(1) 1)安装 http://nodejs.org/download/下载. 2)编写一个案例 var http=require("http"); ...
- 我的Node.js学习历程
学习一门技术,每个人都有每个人的方法.我的方法很简单,做项目. 基本概念 在搭建一个node网站之前,还是要掌握一些基本的概念的,这里列举一下,具体的内容大家自己到网上去查: npm bower ex ...
- Node.js学习之TCP/IP数据通讯
Node.js学习之TCP/IP数据通讯 1.使用net模块实现基于TCP的数据通讯 提供了一个net模块,专用于实现TCP服务器与TCP客户端之间的通信 1.1创建TCP服务器 在Node.js利用 ...
- Node.js学习起步
Node.js学习: 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱 ...
- 一点感悟:《Node.js学习笔记》star数突破1000+
写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...
- Node.js学习看这里:基础、进阶、文章
Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的.可扩展的网络应用. Node.js采用事件 ...
- Node.js学习笔记(3):NPM简明教程
Node.js学习笔记(3):NPM简明教程 NPM常用操作 更新NPM版本 npm install npm -g -g,表示全局安装.我们可以指定更新版本,只需要在后面填上@版本号即可,也可以输入@ ...
随机推荐
- C#针对js escape解码
在javascript 中通常用escape与unescape进行编码以方便传输. 在asp.net页面接收到这些数据以后可以使用 Microsoft.JScript.GlobalObject.une ...
- WebForm Repeater: 重复器
Repeater控件,可以用来一次显示一组数据项.比如,可以用它们显示一个数据表中的所有行. Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式. ...
- 索尼Sony ATI显卡驱动 Win7 Win8 Win8.1 视频黑屏 解决方法
索尼ATI显卡驱动 Win7 Win8 Win8.1 视频 黑屏 完美解决方法: 下载这个补丁 安装 即可 解决 ! baidu pan: http://pan.baidu.com/s/1gd ...
- Linux下常用yum命令
linux各发行版有多种包管理机制,下面介绍基于RedHat系的yum包管理命令: yum -y install xxx 无需询 ...
- jquery 通过ajax FormData 对象上传附件
之前上传附件都是用插件,或者用form表单体检(这个是很久以前的方式了),今天突发奇想,自己来实现附件上传,具体实现如下 html: <div> 流程图: <input id=& ...
- 安卓版App开发心得
从2016年4月到6月主要做的工作是网站的开发,而6月到现在2016年8月初,主要做的工作是Android和IOS两种App的开发,又以Android为主. 将这段时间的Android开发心得记录如下 ...
- Ubuntu 反复进入登录框问题
记录一下,今天碰到一个问题,到ubuntu登陆界面时,输入用户名和密码之后,马上又回到登陆界面 查看了 .xsession-errors. 网上查找了相关资料,想到自己之前装过nvidia的驱动. 卸 ...
- 【已解决】新搭建的VPN服务器客户端无法正常连接
昨天花了一天的时间,终于把VPN服务器搭建好了.但是客户端却一直提示无法拨号成功.查看VPN日志如下:[root@localhost log]# tail -f messages Jun 13 14: ...
- c# winform DirectX播放器 可以任意设置宽高比 屏幕拉伸
第一步:dll引用 Microsoft.DirectX.dll Microsoft.DirectX.AudioVideoPlayback.dll 如果没有的话,可能需要安装微软的DRECTX JDK ...
- Raytracer
http://www.cnblogs.com/miloyip/archive/2010/03/29/1698953.html http://www.scratchapixel.com/lessons/ ...