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用起来还是很爽的,但一直以来 ...
随机推荐
- 入我新美大的Java后台开发面试题总结
静儿最近在总结一些面试题,那是因为做什么事情都要认真.面试也一样,静儿作为新美大金融部门的面试官,负责任的告诉大家,下面的问题回答不上来,面试是过不了的.不过以下绝不是原题,你会发现自己实力不过硬,最 ...
- FTP&samba 服务简单部署
第1章 FTP服务部署 在Linux下,我们应用最广泛的FTP服务程序是 vsftpd ( TCP端口:而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与 ...
- D3.js从入门到“放弃”指南
前言 近期略有点诸事不顺,趁略有闲余之时,玩起D3.js.之前实际项目中主要是用各种chart如hightchart.echarts等,这些图形库玩起来貌都是完美的,一切皆可配置,但几年前接触了D3之 ...
- 注销/etc/passwd带来的系统登陆不上
今天在修改虚拟机密码上的时候,将/etc/passwd中root所在的哪行注销掉了,想象是注销了,root登陆时应该不要输入密码,结果是系统进度条走到最后的时候 进入不了系统了. 结果去普及了下/et ...
- JSOUP教程,JSOUP 乱码处理,JSOUP生僻字乱码解决方案
JSOUP乱码情况产生 这几天我用 JSOUP 多线程的方式,爬取了200 多万数据,数据为各地的地名相关.结果有小部分数据,不到 1 万乱码.我先检查了我的编码为UTF-8 ,觉得应该没有问题.代码 ...
- 安全框架Shiro入门
Shiro简介 Apache Shiro是Java的一个安全框架,官网为shiro.apache.org,主要场景为控制登陆,判断用户是否有访问某个功能的权限等等. Shiro的核心功能(入门知识,只 ...
- mybatis从数据库中取到的date格式不是yyyy-MM-dd HH:mm:ss
问题:sqlserver中的存储时间格式为date,pojo的时间属性也是date,直接mybatis取出的时间格式是带英语的那种,不满足客户要求. 解决:将pojo的时间属性改为string类型,在 ...
- 移动端效果之LoadMore
写在前面 列表一直是展示数据的一个重要方式,在手机端的列表展示又和PC端展示不同,毕竟手机端主要靠滑.之前手机端之前一直使用的IScroll,但是IScroll本身其实有很多兼容性BUG,想改动一下需 ...
- [转载] 详述三种现代JVM语言--Groovy,Scala和Clojure
转载自http://www.tuicool.com/articles/jYzuAv和http://www.importnew.com/1537.html 在我与Martin Fowler曾经合作呈现的 ...
- js中this的意义
随着函数使用场合的不同,this的值会发生变化.但是有一个总的原则,那就是this指的是,调用函数的那个对象.