一.node的事件处理;二.node的全局对象;三.node的readline模块;四.node的Web编程
创始人
2024-01-30 19:50:30
0

目录

一.node的事件处理

1.node采用的事件驱动模式来进行事件处理的:只有当事件被触发时才执行相关程序

2.node是单线程运行的:采用事件轮询方式,不断的查询事件队列中的消息,然后根据消息执行对应的回调函数

3.node事件机制中的三个角色

(1)事件(Event):使用node的内置模块'events'

(2)事件发射器(EventEmitter):是一个类。使用时创建该类的对象,通过对象调用以下的方法

(3)事件监听器(EventListener):

二.node的全局对象

1.全局变量

(1)__filename:表示正在执行的文件的文件名。带绝对路径的文件名(绝对路径+文件名)

(2)__dirname:表示当前正在执行的文件所在的目录

2.全局对象

(1)stdout:返回的是一个对象,代表一个标准输出。它下面的方法write,作用和console.log方法一样

(2)stdin:返回的是一个对象,代表一个标准输入。

三.node的readline模块

1.是node中实现标准输入输出的模块,可以逐行的读取终端的数据。使用时必须通过require引入

2.使用方法:

(1)引入模块:require('readline')

(2)创建readline模块的实例,该实例的input属性值就是process.stdin,output属性值是process.stdout

(3)注册事件监听:完成输入输出

3.readline模块的事件:line --- 会在用户输入一行,按回车键后触发

四.node的Web编程

1.web服务器:专门处理通过http协议发送的用户请求的应用程序。可以给用户返回信息,这些信息可以是文本、图片、html文档等

2.web应用程序的体系结构:

(1)Client端:手机浏览器、电脑的浏览器、应用程序等

(2)Server端:拦截客户端通过http协议发出的请求

(3)Business:运行在Server上的程序

(4)Data:数据

3.url模块:用来处理和解析url地址

(1)引入:require('url')

(2)parse(字符串):将给定的字符串解析成url对象返回。url对象的属性包括:

一.node的事件处理

1.node采用的事件驱动模式来进行事件处理的:只有当事件被触发时才执行相关程序

2.node是单线程运行的:采用事件轮询方式,不断的查询事件队列中的消息,然后根据消息执行对应的回调函数

 

3.node事件机制中的三个角色

(1)事件(Event):使用node的内置模块'events'

(2)事件发射器(EventEmitter):是一个类。使用时创建该类的对象,通过对象调用以下的方法

        addListener(事件名,事件处理程序)

        on(事件名,事件处理程序):注册事件监听

        removeListener(event,listener):删除事件监听

        emit(事件名):手动触发指定的事件

(3)事件监听器(EventListener):

// 导入events模块
const events = require('events')
// 2.创建EventEmitter类的对象
// const EventEmitter = events.EventEmitter
const eventEmitter = new events.EventEmitter()
// 3.注册事件
eventEmitter.on('rabbit',function(){//'rabbit'是自定义的事件名console.log('疫情严重,保护好自己')
})
// 4.手动触发'rabbit'事件
eventEmitter.emit('rabbit')
// 导入http模块
const http = require('http')
const { url } = require('inspector')
// 1.创建server
const server = http.createServer()
/* 2.给服务器绑定(注册)事件:request --- 请求事件(处理客户端的请求)req:请求对象。服务器通过该对象获取客户端的请求信息res:响应信息。服务器通过该对象向客户端发送信息 */
server.on('request',(req,res)=>{//req:表示请求对象(存放了客户端的请求信息);res:表示响应对象(用于服务器向客户端发送响应信息)/* let info = req.url//req.url:客户端的urlconsole.log(info)info = info.substring(2,info.length)let temp = info.split('=')res.end(`hello,${temp[1]}`)//服务器向客户端发送字符串:'hello,'+用户名 */let info = url.parse(req.url)let query = info.query/* console.log(req.url)//req.url:客户端的urlres.end('hello,server')//服务器向客户端发送字符串:'hello,server' */
})
// 3.启动监听:指定服务器地址、端口号
server.listen(8089,'127.0.0.1')

二.node的全局对象

1.全局变量

(1)__filename:表示正在执行的文件的文件名。带绝对路径的文件名(绝对路径+文件名)

(2)__dirname:表示当前正在执行的文件所在的目录

console.log('文件名:'+__filename)
console.log('文件路径:'+__dirname)

2.全局对象

process对象:存放的node的进程信息,可以放在程序的任何位置,也不用require进行加载

console.log('系统信息:',process)

        程序:静态的代码

        进程:运行中的程序

        线程:是进程的一个小的单元

process对象的属性:

(1)stdout:返回的是一个对象,代表一个标准输出。它下面的方法write,作用和console.log方法一样

process.stdout.write('咸阳市')

(2)stdin:返回的是一个对象,代表一个标准输入。

process.stdout.write('请输入一个数:')
process.stdin.on('data',(result)=>{// process.stdout.write('你输入的数据是:'+result.toString().trim())let s=1for (let i = 1; i <= parseInt(result); i++) {s = s * i}process.stdout.write(parseInt(result)+'!='+s)process.exit()//结束进程
})

三.node的readline模块

1.是node中实现标准输入输出的模块,可以逐行的读取终端的数据。使用时必须通过require引入

2.使用方法:

(1)引入模块:require('readline')

const readline = require('readline')

(2)创建readline模块的实例,该实例的input属性值就是process.stdin,output属性值是process.stdout

let r1 = readline.createInterface({input:process.stdin,output:process.stdout
})

(3)注册事件监听:完成输入输出

r1.question('请输入数据:',(result)=>{console.log('你输入的数据是:',result)// process.exit()r1.close()//当r1对象调用close()函数时,触发close事件
})

3.readline模块的事件:line --- 会在用户输入一行,按回车键后触发

        r1.on('line',(result)=>{

                处理代码

        })

例如:

r1.on('line',(result)=>{switch(result.trim()){case 'copy':console.log('复制')breakcase 'add':console.log('添加')breakcase 'close':r1.clos()}
})

四.node的Web编程

1.web服务器:专门处理通过http协议发送的用户请求的应用程序。可以给用户返回信息,这些信息可以是文本、图片、html文档等

2.web应用程序的体系结构:

(1)Client端:手机浏览器、电脑的浏览器、应用程序等

(2)Server端:拦截客户端通过http协议发出的请求

(3)Business:运行在Server上的程序

(4)Data:数据

3.url模块:用来处理和解析url地址

(1)引入:require('url')

(2)parse(字符串):将给定的字符串解析成url对象返回。url对象的属性包括:

        protocol:网络协议

        host:主机名和端口号

        port:端口号

        hostname:主机名

        search:客户端的请求数据。包含了分隔符?

        query:请求字符串

        href:将字符串转换后的url地址

        示例:前后端交互

        (1)前端:login.html(包含form表单)

    

        (2)后端:node的http模块来创建服务器(接收表单数据、并把表单的数据传回给前端)

// 1.导入http模块:用来创建服务器
const http = require('http')
// 2.导入url模块:解析客户端的请求地址
const url = require('url')
// 3.创建服务器
const httpServer = http.createServer()
// 4.给服务器注册事件监听:request(请求事件),当客户端向服务器发期请求时触发该事件
httpServer.on('request',(req,res)=>{if(req.url != '/favicon.ico'){//过滤谷歌浏览器自动发送的请求// 4.1使用url模块的parse方法将客户端的请求地址解析成url对象// console.log(req.url)//  /?user=zhanglet client = url.parse(req.url)// 4.2获取url对象client的query属性值:就是前端的表单数据let queryData = client.query// console.log(queryData)//  user=zhang// 4.3对获取的表单数据进行处理:let arr = (queryData.toString()).split('=')// 4.4用res将表单数据响应给客户端res.end(`Welcome:${arr[1]}`)}
})
// 5.启动服务器的监听
httpServer.listen(9000,'127.0.0.1')

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...