Node.js(6)-node的web编程
admin
2024-02-24 20:36:43
0

一、node的事件处理

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

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

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

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

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

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

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

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

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

(3)事件监听器(EventListener)

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

二、node的全局对象

1、全局变量

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

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

2、全局对象

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

程序:静态的代码

进程:运行中的程序

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

(2)process对象的属性

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

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

三、node的readline模块

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

2、使用方法:

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

//1.引入readline模块
const readline = require('readline')

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

//2.创建readline的实例
let r1 = readline.createInterface({input:process.stdin,output:process.stdout
}

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

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

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

r1.on('line',(result)=>{处理代码
})

例如:

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

四、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) // /?empName=zhangsanlet client = url.parse(req.url)//4.2获取url对象client的query属性值:就是前端的表单数据let queryData = client.query
​console.log(queryData); //empName=zhangsan//4.3对获取的表单数据进行处理let arr = (queryData.toString()).split('=')//4.4用res将表单数据响应给客户端res.end(`Welcome:${arr[1]}`)}
​
})
​
//5.启动服务器的监听
httpServer.listen(9000, '127.0.0.1')

相关内容

热门资讯

江苏雨花数字文旅产业联盟与安庆... 2025年6月27日,江苏雨花数字文旅产业联盟主席、新中安股份董事长邹传江,联盟副秘书长、新中安未来...
请就周洋冬奥会获奖后的感谢词引... 请就周洋冬奥会获奖后的感谢词引起社会对于先是感谢国家还是感谢家人的争论写个一百字的看法评论?我晕,这...
原创 捅... 五台山景区发生了一件骇人听闻的事情,一名游客在景区参观风景的时候,偶然间碰到了牛群,本着带着狗狗的他...
现代旅游是遭罪?上海爷叔谈现代... 本文根据被采访人的叙述整理而成,涉及隐私,当事人系化名,仅代表被采访人的个人观点。 我这把年纪,走过...
谢娜:相恋6年,张杰才向我求婚... 谢娜:相恋6年,张杰才向我求婚。感情里主动的女人,会幸福吗?嗯,我觉得应该是幸福的,毕竟是谈了6年的...
岚县王狮乡蛤蟆神村星空营地 图为岚县蛤蟆神露营地一角。 图为岚县蛤蟆神村的农家乐。 盛夏时节,岚县王狮乡蛤蟆神村星空营地迎...
急!订了武广高铁,要在哪里取票... 急!订了武广高铁,要在哪里取票啊~~我不在武汉市,是否必须要去武汉市才能取票,怎么网上都查不到啊~ ...
自驾游去黄山玩4天怎么安排划算... 黄山,这座镶嵌在安徽省南部的自然瑰宝,自古以来便以其奇松、怪石、云海、温泉四绝吸引着无数文人墨客前来...
张家界5日游大概要花费多少钱?... 张家界5日游攻略:预算、行程与注意事项 一、初识张家界:人间仙境的魅力 张家界,一个被誉为“人间仙...
WOW大元帅套装是怎么得的 WOW大元帅套装是怎么得的是怎么得的 说的详细一点好么?打战场用荣誉和牌子在暴风勇士大厅 hua...
暑假去张家界旅游怎么玩?带朋友... 第一天:抵达张家界,初探魅力山城 清晨从北京出发,搭乘高铁约6小时抵达张家界西站,一出站就被四周环绕...
求洪荒大神穿越或重生到异世界的... 求洪荒大神穿越或重生到异世界的小说如《云中子异界游》云中子这个我倒是没有看过不过我把我喜欢的介绍给你...
求一篇文笔很赞的情书 求一篇文笔很赞的情书[你是我一生最唯命的执着,天荒地老] [你是我无荒爱的堇色年华,千秋万世]...
赛尔号打麒麟,有圣者炎龙,暴风... 赛尔号打麒麟,有圣者炎龙,暴风女,圣天使,先手消强2只,美队,求全攻略。需要其他就说。大哥供热挖人通...
爱与被爱,我该如果选择? 爱与被爱,我该如果选择?最好是双方都相爱不过如果真的要在爱与被爱中作出选择的话如果是我,我会选择爱被...
如果一个机会摆在我们面前,我们... 如果一个机会摆在我们面前,我们应该当机立断的抓住还是考虑考虑再决定?如果一个机会摆在我们面前,我们应...
斗罗大陆漫画单行本总共有几册? 斗罗大陆漫画单行本总共有几册?到目前为止,出了12册了。目前出了13本,但进度很慢,平均六~七本漫画...
瑜伽教练喜欢学员的表现 瑜伽教练喜欢学员的表现主动聊天。如果教练喜欢学员,会特别主动,包括主动聊天,主动帮助解决一切能够解决...
有什么开局剧情设计就很精彩的动... 有什么开局剧情设计就很精彩的动画作品值得安利?以下是一些开局剧情设计精彩的动画作品:1.《你的名字》...
拟物的例子 拟物的例子 拟物的例子:1、忽如一夜春风来,千树万树梨花开。以梨花比雪花,作者的原意是描写雪花。...