最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node的事件處理和readline模塊詳解

 更新時(shí)間:2022年02月23日 15:58:32   作者:Han_Zhou_Z  
這篇文章主要為大家詳細(xì)介紹了Node的事件處理和readline模塊,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、Node的事件處理

1、采用事件驅(qū)動(dòng)模型

2、Node是單線程的,采用事件輪詢方式來處理事件

3、事件機(jī)制中的三個(gè)角色:

事件(Event)、事件發(fā)生器(EventEmitter)、事件監(jiān)聽器(EventListener)

const http = require('http');
 
//創(chuàng)建服務(wù)器對象
let server = http.createServer();
 
//給服務(wù)器對象綁定事件request
server.once('request',function (req,res){
    console.log('----request-1----')
})
 
server.on('request',function (req,res) {
    console.log('請求地址:',req.url)
    res.end('Hello World')
})
 
server.once('request',function (req,res) {
    console.log('---- Response End ----')
})
//服務(wù)器啟動(dòng)監(jiān)聽
server.listen(8089,'127.0.0.1')
 
//在網(wǎng)址處查找http://127.0.0.1:8089
//    ----request-1----
//    請求地址: /
//    ---- Response End ----
//    請求地址: /favicon.ico
 
//頁面處顯示Hello World
const EventEmitter = require('events').EventEmitter;
const emitter = new EventEmitter();
 
emitter.on('beep',function (){  //先執(zhí)行這個(gè)回調(diào)函數(shù),輸出beep
    console.log('beep')
})
 
emitter.on('beep',function (){  //然后再執(zhí)行這個(gè)回調(diào)函數(shù),拋出一個(gè)錯(cuò)誤,會(huì)被catch接收到
    throw Error('oops!');       //因?yàn)檫@個(gè)函數(shù)執(zhí)行完之后,發(fā)生異常,已經(jīng)被扔出去,所以后面的函數(shù)就不會(huì)再被執(zhí)行
})
 
emitter.on('beep',function (){
    console.log('beep again!');
})
 
//手動(dòng)觸發(fā)事件
try{
    emitter.emit('beep')
}catch (e) {
    console.log(e.message)  //e.message指得就是Error對象。message對應(yīng)的就是error對象的字符串(oops)
}
 
//    beep
//    oops!

二、通過Node的readline模塊實(shí)現(xiàn)終端的輸入

1、標(biāo)準(zhǔn)輸入輸出:鍵盤、鼠標(biāo)、顯示器

2、使用方法

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

(2)創(chuàng)建readline對象(接口)

(3)調(diào)用接口的相關(guān)方法

(4)監(jiān)聽和處理readline事件

onst  readline = require('readline');
 
//創(chuàng)建readline實(shí)例(接口對象)
let r1 = readline.createInterface({
    input: process.stdin,
    output : process.stdout
})
 
//調(diào)用接口方法
r1.question("請輸入姓名:",function (answer) {  //有一個(gè)輸入提示,輸入數(shù)據(jù)后,會(huì)開始調(diào)用回調(diào)函數(shù)
    console.log("姓名是:",answer)  //將輸入的字符串,賦給回調(diào)函數(shù)的參數(shù)answer,然后輸出
    r1.close()  //用r1這個(gè)方法去觸發(fā)這個(gè)close事件
})
 
//給readline實(shí)例綁定close事件
r1.on('close',function (){   //事件觸發(fā)后,整個(gè)進(jìn)程才能結(jié)束
    process.exit(0)
})
 
//    請輸入姓名:云汐(云汐需要自己手動(dòng)輸入后,點(diǎn)擊回車)
//    姓名是: 云汐
const readline = require('readline');
const r1 = readline.createInterface(process.stdin,process.stdout);
 
r1.setPrompt('Test>');  //方法setPromat(promat) ,就是給每一行設(shè)置一個(gè)提示符,
                        //就好比window命令行的> ,這里設(shè)置的是Test>
 
r1.prompt();     //prompt()是最重要的方法,因?yàn)樗w現(xiàn)了readline的核心作用,
                 //以行為單位讀取數(shù)據(jù),prompt方法就是在等待用戶輸入數(shù)據(jù)
 
 
r1.on('line',function (line){ //監(jiān)聽了'line' 事件,因?yàn)閜rompt方法調(diào)用一次就只會(huì)讀取一次數(shù)據(jù)
    switch (line.trim()){
        case 'copy':
            console.log('復(fù)制');
            break;
        case 'hello':
            console.log('world')
            break
        case 'close':
            r1.close()
            break
        default:console.log('沒有找到命令')
            break
    }
    r1.prompt()  //所以,在這個(gè)方法又調(diào)用了一次prompt方法,這樣就可以繼續(xù)讀取用戶輸入,從而達(dá)到一種命令行的效果
});
r1.on('close',function (){
    console.log('bye bye');
    process.exit(0)
})

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!   

相關(guān)文章

  • Node版本切換不成功的問題解決

    Node版本切換不成功的問題解決

    使用 Node.js 和 npm 安裝 Taro 等工具時(shí),可能會(huì)遇到一些環(huán)境問題或配置錯(cuò)誤,本文就來介紹一下Node版本切換不成功的問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-12-12
  • 詳解nodejs如何實(shí)現(xiàn)查詢緩存

    詳解nodejs如何實(shí)現(xiàn)查詢緩存

    對于頻繁查詢、數(shù)據(jù)穩(wěn)定性高、讀取代價(jià)高的場景,查詢緩存可以發(fā)揮重要的作用,提高系統(tǒng)的性能和用戶體驗(yàn),下面我們就來學(xué)習(xí)一下nodejs是如何實(shí)現(xiàn)查詢緩存的
    2023-12-12
  • node.js中的fs.mkdirSync方法使用說明

    node.js中的fs.mkdirSync方法使用說明

    這篇文章主要介紹了node.js中的fs.mkdirSync方法使用說明,本文介紹了fs.mkdirSync方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • mac下徹底卸載node和npm方法步驟

    mac下徹底卸載node和npm方法步驟

    我們經(jīng)常在卸載軟件的時(shí)候會(huì)遇到有殘留,這樣就很難去重新下載,本篇文章就來介紹mac下徹底卸載node和npm及重新安裝的方法,有需要的朋友可以借鑒參考下
    2021-09-09
  • node故障定位頂級技巧動(dòng)態(tài)追蹤Dynamic?Trace詳解

    node故障定位頂級技巧動(dòng)態(tài)追蹤Dynamic?Trace詳解

    這篇文章主要為大家介紹了node故障定位頂級技巧動(dòng)態(tài)追蹤Dynamic?Trace詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • jwt在express中token的加密解密實(shí)現(xiàn)過程

    jwt在express中token的加密解密實(shí)現(xiàn)過程

    文章詳細(xì)介紹了JWT在Node.js中的生成和驗(yàn)證過程,包括設(shè)置密鑰、使用中間件進(jìn)行token驗(yàn)證等步驟,并提供了一個(gè)完整的示例代碼,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 詳解Node.js一行命令上傳本地文件到服務(wù)器

    詳解Node.js一行命令上傳本地文件到服務(wù)器

    這篇文章主要介紹了Node.js一行命令上傳本地文件到服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Node.js 多線程完全指南總結(jié)

    Node.js 多線程完全指南總結(jié)

    這篇文章主要介紹了Node.js 多線程完全指南總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • Node.js實(shí)現(xiàn)文件上傳

    Node.js實(shí)現(xiàn)文件上傳

    這篇文章主要介紹了Node.js實(shí)現(xiàn)文件上傳的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Node.JS中快速掃描端口并發(fā)現(xiàn)局域網(wǎng)內(nèi)的Web服務(wù)器地址(80)

    Node.JS中快速掃描端口并發(fā)現(xiàn)局域網(wǎng)內(nèi)的Web服務(wù)器地址(80)

    在 Node.JS 中進(jìn)行端口掃描還是比較方便的,一般會(huì)有廣播和輪詢兩種方式。下文重點(diǎn)給大家介紹node.js 掃描端口并發(fā)現(xiàn)局域網(wǎng)內(nèi)的web服務(wù)器地址的方法,一起看看吧
    2017-09-09

最新評論

胶南市| 罗甸县| 靖州| 钟山县| 山西省| 洪雅县| 连州市| 娄底市| 伊宁县| 香港| 凉山| 扎囊县| 汾西县| 固始县| 呼伦贝尔市| 桐乡市| 吉隆县| 博客| 潢川县| 灵武市| 雅江县| 甘谷县| 五河县| 厦门市| 恩平市| 阜阳市| 嵊州市| 邓州市| 潜江市| 建平县| 无棣县| 且末县| 隆子县| 榕江县| 桑日县| 麻城市| 南和县| 兴海县| 遂宁市| 东丰县| 贞丰县|