最近工作一直很忙,没时间更新,谅解,这次准备更新一次node教程,本课堂将持续更新,每周坚持更新一到两章,希望对大家有一些小帮助吧:

一、首先什么是node?

1/Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 
2/Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 
3/Node.js 的包管理器 npm,是全球最大的开源库生态系统。
node安装不介绍了,官网直接安装即可,傻瓜式的下一步 ,在这就不耽误时间了:

二、node初体验:

 //引入http模块
 const http = require('http');
 // 新建一个函数  作为sever的回调函数 其中req 是请求相关的内容  res是返回相关的内容
 const func = (req,res) => {
   //加上这句话防止控制台输出两边;
     if (req.url !== '/favicon.ico'){
   console.log(req.url);
   res.write('<h1>11111</h1>');
   //res.end是结束返回内容。
   res.end();
     }

 }
 // 建立sever,并且监听7001端口
 http.createServer(func).listen(7001);
 //在终端中使用node fillname.js 即可开启。在浏览器中使用http://localhost:7001/   即可访问

三、监听器event的简单使用方法:

 //倒入events模块
 const event = require('events');
 //event的唯一模块,核心功能就是:触发事件和监听事件
 evt = new event.EventEmitter();

 function eventHandler() {
 console.log('监听');
 }
 //on开始监听一个指定事件,
 evt.on('event',eventHandler);
 //emit 触发制定事件
 evt.emit('event');

四、event的方法:

1、once。只执行一次 不会触发多边(以及模拟异步执行);

 const event = require('events');
 evt = new event.EventEmitter();
 function eventHandler() {
 console.log('1111');
 }
 evt.once('event', eventHandler);

 setTimeout(() => {
 console.log(1);
 evt.emit('event');
 }, 2000);

 setTimeout(() => {
 console.log(0);
 evt.emit('event');
 }, 1000);

2、removeListener/removeAllListeners. 移除指定的监听器

 const event = require('events');
 const eventEmitter = new event.EventEmitter();
 function func() {
     console.log('func执行');
 }
 function func2() {
     console.log('function2 执行');
 }
 eventEmitter.on('eventEmitterName', func);
 eventEmitter.on('eventEmitterName', func2);

 eventEmitter.removeListener('eventEmitterName', func);
 eventEmitter.emit('eventEmitterName');

3、setMaxListeners设置监听事件的最大值(默认最大值10)+listeners。返回指定的事件的数组

 const event = require('events');
 const eventEmmiter = new event.EventEmitter();
 const sever = require('http').createServer();
 sever.setMaxListeners(15);
 sever.on('request',(req,res) =>{
     if(req.url !== '/favicon.ico'){
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin');
         res.end('haha');
     }

 }).listen(3000);
 sever.on('request', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin2');
         res.end('haha1');
     }

 })
 sever.on('request', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin3');
         res.end('haha4000');
     }

 }).listen(4000);
 sever.on('request', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin3');
         res.end('haha4000');
     }

 }).listen(4000);
 sever.on('request', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin4');
         res.end('haha1');
     }

 }).listen(3000);
 sever.on('request', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin5');
         res.end('haha1');
     }

 }).listen(3000);
 sever.on('request', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin6');
         res.end('haha1');
     }

 }).listen(3000);
 sever.on('request', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin2');
         res.end('haha1');
     }

 }).listen(3000);
 sever.on('request', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin2');
         res.end('haha1');
     }

 }).listen(3000);
 sever.on('request', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin2');
         res.end('haha1');
     }

 }).listen(3000);
 sever.on('request1', (req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin2');
         res.end('haha9');
     }

 }).listen(3000);
 /*
     返回监听指定事件的数组
 */
 const arr = sever.listeners('request1')
 console.log(arr.toString());
 /*(req, res) => {
     if (req.url !== '/favicon.ico') {
         res.writeHeader(200, {
             "Content-type": "text/html"
         });
         console.log('request begin2');
         res.end('haha9');
     }

 } */

小金课堂

五、本章总结代码:

 const event =require('events');
 const eventEmitter = new event.EventEmitter();
 function func(){
     console.log('func执行');
 }
 function func2(){
     console.log('function2 执行');
 }
 eventEmitter.on('eventEmitterName',func);
 eventEmitter.addListener('eventEmitterName',func2);
 let listers = require('events').EventEmitter.listenerCount(eventEmitter,'eventEmitterName');
 console.log('当前连接数:'+listers);
 eventEmitter.emit('eventEmitterName');

 eventEmitter.removeListener('eventEmitterName', func);

 console.log('---------------------------------');
 console.log('func连接取消');
 eventEmitter.emit('eventEmitterName');
 listers = require('events').EventEmitter.listenerCount(eventEmitter, 'eventEmitterName');
 console.log('当前连接数:' + listers);
 console.log('-------------------------------');
 eventEmitter.removeListener('eventEmitterName',func2);
 listers = require('events').EventEmitter.listenerCount(eventEmitter, 'eventEmitterName');
 console.log('当前连接数:' + listers);
 eventEmitter.emit('eventEmitterName');
 console.log('------------------------------');

 eventEmitter.on('eventEmitterName',func);

 listers = require('events').EventEmitter.listenerCount(eventEmitter, 'eventEmitterName');
 console.log('当前连接数:' + listers);
 eventEmitter.emit('eventEmitterName');

 console.log('______________________');

小金课堂

node基础篇一:node介绍、node http、node event 课堂(持续)的更多相关文章

  1. node基础篇二:模块、路由、全局变量课堂(持续)

    今天继续更新node基础篇,今天主要内容是模块.路由和全局变量. 模块这个概念,在很多语言中都有,现在模块开发已经成为了一种潮流,它能够帮助我们节省很多的时间,当然咱们的node自然也不能缺少,看下例 ...

  2. 【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!

    [COCOS2DX-LUA 脚本开发之一]在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! 分类: [Cocos2dx Lua 脚本开发 ] 2012-04-1 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. Node基础篇(概要)

    Node简介 客户端的JavaScript是怎样的 什么是 JavaScript? 脚本语言 运行在浏览器中 一般用来做客户端页面的交互(Interactive) JavaScript 的运行环境? ...

  5. node基础01:简要介绍

    1.node vs php 优点 性能高(机制问题) 开发效率高(省了不少优化的事) 应用范围广(可以开发桌面系统,electron框架) 缺点 新,人少 中间件少 IDE不完善 2.node的劣势和 ...

  6. Node基础篇(模块和NPM)

    核心模块 核心模块的意义 如果只是在服务器运行JavaScript代码,意义并不大,因为无法实现任何功能(读写文件,访问网络). Node 的用处在于它本身还提供的一系列功能模块,用于与操作系统互动. ...

  7. 【转】WF4.0 (基础篇)

    转自:http://www.cnblogs.com/foundation/category/215023.html 作者:WXWinter  ——  兰竹菊梅★春夏秋冬☆ —— wxwinter@16 ...

  8. PHP实现微信公众平台开发—基础篇

    PHP实现微信公众平台开发—基础篇 2 1课程介绍 2 2. 微信公众号账号介绍的申请流程详解 2 2.1微信三角色关系 2 2.2信息流的过程 2 2.4微信公众账号的认证 3 2.5订阅号的申请流 ...

  9. iOS开发 - OC - block的详解 - 基础篇

    深入理解oc中的block 苹果在Mac OS X10.6 和iOS 4之后引入了block语法.这一举动对于许多OC使用者的编码风格改变很大.就我本人而言,感觉block用起来还是很爽的,但一直以来 ...

随机推荐

  1. SSM框架中的注解,配置和控制器相关笔记

    常规SSM实例 探索SSM理论的前提,应该是在对框架基础的运作方式有一定了解,以下是个人Android后台项目,用SSM框架快速搭建,以下是代码,主要 观察结构. 代码结构: model实体类 Ida ...

  2. html 自定义标签使用实现方法

    通过指定html命名空间的名字来定义自定义标签:默认的一些标签p div等都在html默认的命名空间下.而自定义的标签可以放在自定义的命名空间下,可通过xmlns:命名空间名 来指定,而自定义标签需要 ...

  3. JAVAscript学习笔记 js条件语句 第三节 (原创) 参考js使用表 (2017-09-14 15:55)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 从一个实例谈谈postgresql索引锁

    最近客户在使用我司开发的数据库时,报告了如下问题(也不能算是问题,就是疑惑吧),环境如下: OS : Red Hat Enterprise Linux Server release 6.7 (Sant ...

  5. Python爬虫小实践:爬取任意CSDN博客所有文章的文字内容(或可改写为保存其他的元素),间接增加博客访问量

    Python并不是我的主业,当初学Python主要是为了学爬虫,以为自己觉得能够从网上爬东西是一件非常神奇又是一件非常有用的事情,因为我们可以获取一些方面的数据或者其他的东西,反正各有用处. 这两天闲 ...

  6. C#中结构体定义并转换字节数组

    最近的项目在做socket通信报文解析的时候,用到了结构体与字节数组的转换:由于客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性,这一 ...

  7. 《Linux命令行与shell脚本编程大全》 第六章环境变量

    很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息. 6.1 什么是环境变量: bash shell用一个叫环境变量(environment variable)的特性来存储有关shel ...

  8. selenium 之 ActionChains (二)

    今天,小编为大家介绍的是标题中的三个新方法,以及一个老方法 以下方法都需要操作一个名为Keys的包,先来简单认识下 ALT = u'\ue00a' CONTROL = u'\ue009' ENTER ...

  9. android 人脸检测你一定会遇到的坑

    笔者今年做了一个和人脸有关的android产品,主要是获取摄像头返回的预览数据流,判断该数据流是否包含了人脸,有人脸时显示摄像头预览框,无人脸时摄像头预览框隐藏,看上去这个功能并不复杂,其实在开发过程 ...

  10. 项目实战2—LVS负载均衡

    负载均衡集群企业级应用实战-LVS 实现基于LVS负载均衡集群的电商网站架构 随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢 ...