久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      深入淺析Node.js中的內(nèi)置模塊

      本篇文章帶大家了解一下Node.js中的內(nèi)置模塊,看看Node.js內(nèi)置模塊運(yùn)行機(jī)制,通過示例簡單介紹一下EventEmitter (觀察者模式)。

      深入淺析Node.js中的內(nèi)置模塊
      Node.js 架構(gòu)圖

      內(nèi)置模塊

      深入淺析Node.js中的內(nèi)置模塊

      一些栗子

      • File System 操作文件的 API
      • Process 記載 Node.js 進(jìn)程的一些信息
      • OS 操作系統(tǒng)相關(guān) API
        • os.arch() 獲取操作系統(tǒng)的架構(gòu)信息
        • os.cpus() 獲取操作系統(tǒng) CPU 及內(nèi)核相關(guān)信息

      【推薦學(xué)習(xí):《nodejs 教程》】

      Node.js 內(nèi)置模塊運(yùn)行機(jī)制

      通過 Node.js 源碼分析

      • 應(yīng)用層代碼調(diào)用 Node.js 模塊

      • Node.js 模塊通過 internalBinding 調(diào)用底層 C++ 模塊

        • lib 文件夾下存放 Node 的內(nèi)置模塊

        • 內(nèi)置模塊通過調(diào)用 internalBinding V8 層面的方法

        • internalBinding 在 src 目錄下的 C++代碼中

      • C++ 代碼定義了一些底層方法,通過 V8 的接口導(dǎo)出供 Node 層面調(diào)用

      • 最后 Node 層返回給應(yīng)用層

      EventEmitter (觀察者模式)

      有些情況下 數(shù)據(jù)不是通過 Node.js 源代碼調(diào)用的, 而是直接通過操作系統(tǒng)底層 通知到 Node.js 代碼去做一些事情,比如: EventEmitter

      栗子

      process.stdin.on("data", (e) => {   const playerAction = e.toString().trim(); });

      on 事件的原理是 使用 Class: EventEmitter 來實(shí)現(xiàn)的

      EventEmitter 就可以把底層發(fā)生的一些變化, 比如接收一個(gè)鼠標(biāo)事件,傳遞到應(yīng)用層來,讓開發(fā)者可以做相應(yīng)的操作

      事件監(jiān)聽器應(yīng)用場景

      用觀察者模式 來解決多個(gè)模塊對象之間通信的問題

      // index.js const EventEmitter = require("events").EventEmitter;  class GeekTime extends EventEmitter {   constructor() {     super();     setInterval(() => {       this.emit("newLesson", { price: Math.random() * 100 });     }, 3000);   } }  const geekTime = new GeekTime();  module.exports = geekTime;
      // buy.js const geekTime = require("./index.js");  geekTime.addListener("newLesson", (res) => {   console.log("有新課了!!", res.price);   if (res.price < 80) {     console.log("價(jià)格小于80,買買買!");   } });
      • Node.js 栗子: EventEmitter
      • 瀏覽器栗子 – addEventListener – removeEventListener

      觀察者模式與 發(fā)布-訂閱模式的 區(qū)分

      發(fā)布-訂閱模式,事件的注冊和觸發(fā)發(fā)生在獨(dú)立于雙方的第三方平臺。JS 實(shí)現(xiàn)方式-回調(diào)函數(shù) 觀察者模式:發(fā)布者會直接觸及到訂閱者。 JS 實(shí)現(xiàn)方式-拋出事件

      可以參考這篇設(shè)計(jì)模式的文章-掘金小冊

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號