node基础篇一:node介绍、node http、node event 课堂(持续)
最近工作一直很忙,没时间更新,谅解,这次准备更新一次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 课堂(持续)的更多相关文章
- node基础篇二:模块、路由、全局变量课堂(持续)
今天继续更新node基础篇,今天主要内容是模块.路由和全局变量. 模块这个概念,在很多语言中都有,现在模块开发已经成为了一种潮流,它能够帮助我们节省很多的时间,当然咱们的node自然也不能缺少,看下例 ...
- 【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!
[COCOS2DX-LUA 脚本开发之一]在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! 分类: [Cocos2dx Lua 脚本开发 ] 2012-04-1 ...
- Node基础篇(文件操作)
文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...
- Node基础篇(概要)
Node简介 客户端的JavaScript是怎样的 什么是 JavaScript? 脚本语言 运行在浏览器中 一般用来做客户端页面的交互(Interactive) JavaScript 的运行环境? ...
- node基础01:简要介绍
1.node vs php 优点 性能高(机制问题) 开发效率高(省了不少优化的事) 应用范围广(可以开发桌面系统,electron框架) 缺点 新,人少 中间件少 IDE不完善 2.node的劣势和 ...
- Node基础篇(模块和NPM)
核心模块 核心模块的意义 如果只是在服务器运行JavaScript代码,意义并不大,因为无法实现任何功能(读写文件,访问网络). Node 的用处在于它本身还提供的一系列功能模块,用于与操作系统互动. ...
- 【转】WF4.0 (基础篇)
转自:http://www.cnblogs.com/foundation/category/215023.html 作者:WXWinter —— 兰竹菊梅★春夏秋冬☆ —— wxwinter@16 ...
- PHP实现微信公众平台开发—基础篇
PHP实现微信公众平台开发—基础篇 2 1课程介绍 2 2. 微信公众号账号介绍的申请流程详解 2 2.1微信三角色关系 2 2.2信息流的过程 2 2.4微信公众账号的认证 3 2.5订阅号的申请流 ...
- iOS开发 - OC - block的详解 - 基础篇
深入理解oc中的block 苹果在Mac OS X10.6 和iOS 4之后引入了block语法.这一举动对于许多OC使用者的编码风格改变很大.就我本人而言,感觉block用起来还是很爽的,但一直以来 ...
随机推荐
- Linux上MySQL的安装
a.检测是否安装了mysql rpm -qa | grep mysql b.卸载系统自带的mysql rpm -e --nodeps 卸载的包 rpm -e --nodeps mysql-libs- ...
- Lucene搜索引擎例子demo
一.导入相应的jar包 KAnalyzer3.2.0Stable.jar lucene-analyzers-3.0.1.jar lucene-core-3.0.1.jar lucene-highlig ...
- C#中float, double的精度问题
在工作中我发现了一个C#浮点数的精度问题,以下的程序运行结果并未得到我预期的结果: view source print? 01 namespace FloatTest 02 03 class ...
- 初始MyBatis
初始MyBatis 框架的概念: 框架是一个提供可重复的功用结构的半成品.它为我们构建新的应用程序提供了极大的便利,一方面提供了可以拿来就用的工具,更重要的是提供了可重用的设计.D 框架技术的优势: ...
- web前端-----JAVA Script(一)
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase ...
- JS小游戏:贪吃蛇(附源码)
javascript小游戏:贪吃蛇 此小游戏采用的是面向对象的思想,将蛇,食物,和游戏引擎分为3个对象来写的. 为方便下载,我把js写在了html中, 源码中暂时没有注释,等有空我在添加点注释吧. 游 ...
- 【python】python的正则表达式 re
ps:本文摘自互联网,觉得结构很好,讲的也很清晰.记下,备查. 延伸阅读:python的 内建函数 和 subprocess .此文是本系列的第三篇文章了,和之前一样,内容出自官方文档,但是会有自己的 ...
- [转]oracle系统表v$session、v$sql字段说明
在本视图中,每一个连接到数据库实例中的 session都拥有一条记录.包括用户 session及后台进程如 DBWR, LGWR, arcchiver等等. V$SESSION中的常用列 V$SESS ...
- 脱掉Golang的第一层衣裳 golang入坑系列
读前必读,博客园的文章并非最新,想看最新还是建议点击这里.博客园的文章是为了方便不能FQ的同学,同步而来的.不放在博客园,不是不支持国产,而是博客园的排版太难看了,太难看了,太难看了!而且还没有客户端 ...
- 实现基于Keepalived主从高可用集群网站架构
背景 上一期我们实现了基于lvs负载均衡集群的电商网站架构,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展 ...