Heim  >  Artikel  >  Web-Frontend  >  Node Learning Chat-Modulsystem

Node Learning Chat-Modulsystem

青灯夜游
青灯夜游nach vorne
2023-01-30 20:10:222314Durchsuche

In diesem Artikel geht es um das Modulsystem in Node.js, einschließlich des Ereignismoduls, des Util-Moduls, des FS-Moduls, des Betriebssystemmoduls, des Pfadmoduls usw. Ich hoffe, es wird Ihnen hilfreich sein!

Node Learning Chat-Modulsystem

Modulsystem

Referenz: Node.js-Modulsystem

Damit Node.js-Dateien sich gegenseitig aufrufen können, stellt Node.js ein einfaches Modulsystem bereit.
Module sind die Grundkomponenten von Node.js-Anwendungen, und Dateien und Module haben eine Eins-zu-Eins-Entsprechung.
Mit anderen Worten, eine Node.js-Datei ist ein Modul, bei dem es sich um JavaScript-Code, JSON oder eine kompilierte C/C++-Erweiterung handeln kann.

Es gibt 4 Arten von Modulen (native Module und 3 Arten von Dateimodulen) in Node.js
Beispiel: var http = require("http");var http = require("http");

Node.js 中自带了一个叫做 http 的模块,我们在我们的代码中请求它并把返回值赋给一个本地变量。
这把我们的本地变量变成了一个拥有所有 http 模块所提供的公共方法的对象。【相关教程推荐:nodejs视频教程

加载模块:

  • 从文件模块缓存中加载
  • 从原生模块加载
  • 从文件加载
    • require方法接受以下几种参数的传递:
      • http、fs、path、events、util等,原生模块。
      • ./mod或…/mod,相对路径的文件模块。
      • /pathtomodule/mod,绝对路径的文件模块。
      • mod,非原生模块的文件模块。

模块接口

  • exports 对象是模块公开的接口
  • require 对象用于从外部获取一个模块的接口,即所获取模块的 exports 对象。
//例子
//hello.js
exports.world = function() {       //相当于给function()函数取了个别名world()
    console.log('Hello World');
  }

//main.js
var hello = require('./hello');
hello.world();  //访问 hello.js 的 world 函数

//结果
PS E:\learn> node main.js
Hello World
  • 只是想把一个对象封装到模块中:module.exports = function() {...}
    模块接口的唯一变化是使用 module.exports = Hello 代替了exports.world = function(){}。 在外部引用该模块时,其接口对象就是要输出的 Hello 对象本身,而不是原先的 exports。

exports 和 module.exports 的使用
如果要对外暴露属性或方法,就用 exports 就行,要暴露对象(类似class,包含了很多属性和方法),就用 module.exports。

//hello.js 
function Hello() { 
    var name; 
    this.setName = function(thyName) { 
        name = thyName; 
    }; 
    this.sayHello = function() { 
        console.log('Hello ' + name); 
    }; 
}; 
module.exports = Hello;   

//main.js 
var Hello = require('./hello'); 
hello = new Hello(); 
hello.setName('BYVoid'); 
hello.sayHello();

//结果
PS E:\learn> node main.js
Hello BYVoid

events模块

参考资料:Node.js EventEmitter

events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。

  • events 为一个模块,用 require("events"); 访问该模块。
  • EventEmitter 相当于events模块里面的唯一的一个类,该类下有多个属性
    • addListener(event, listener) 为指定事件添加一个监听器到监听器数组的尾部。
    • on(event, listener) on函数为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数。
    • once(event, listener) 为指定事件注册一个单次监听器,即 监听器最多只会触发一次,触发后立刻解除该监听器
    • removeListener(event, listener)移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器。它接受两个参数,第一个是事件名称,第二个是回调函数名称
    • removeAllListeners([event]) 移除所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器。
    • setMaxListeners(n) 默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。 setMaxListeners 函数用于改变监听器的默认限制的数量。
    • listeners(event) 返回指定事件的监听器数组。
    • emit(event, [arg1], [arg2], [...]) 按监听器的顺序执行执行每个监听器,如果事件有注册监听返回 true,否则返回 false。
    • listenerCount(emitter, event)
    Node.js kommt Mit einem Modul namens http fordern wir es von unserem Code an und weisen den Rückgabewert einer lokalen Variablen zu.
  • Dadurch wird unsere lokale Variable in ein Objekt mit allen vom http-Modul bereitgestellten öffentlichen Methoden umgewandelt. [Empfohlene verwandte Tutorials: nodejs-Video-Tutorial
]

Lademodul:
    Aus dem Dateimodul-Cache laden
  • Aus dem nativen Modul laden
  • Aus der Datei laden
    • Die require-Methode akzeptiert die folgenden Parameter:
      • http, fs, path , Events, Util usw., native Module.

  • ./mod oder…/mod, Dateimodul mit relativem Pfad.
  • /pathtomodule/mod, Dateimodul mit absolutem Pfad.

  • mod, Dateimodul eines nicht nativen Moduls.

    🎜🎜🎜Modulschnittstelle🎜🎜🎜
  • Das obige ist der detaillierte Inhalt vonNode Learning Chat-Modulsystem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen