Heim > Web-Frontend > js-Tutorial > Hauptteil

Node Learning Chat-Modulsystem

青灯夜游
Freigeben: 2023-01-30 20:10:22
nach vorne
2358 Leute haben es durchsucht

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
Nach dem Login kopieren
  • 只是想把一个对象封装到模块中: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
Nach dem Login kopieren

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:
    < li>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🎜🎜🎜
  • Verwandte Etiketten:
    Quelle:csdn.net
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!