>  기사  >  웹 프론트엔드  >  노드 학습 채팅 모듈 시스템

노드 학습 채팅 모듈 시스템

青灯夜游
青灯夜游앞으로
2023-01-30 20:10:222373검색

이 기사에서는 이벤트 모듈, util 모듈, fs 모듈, OS 모듈, 경로 모듈 등을 포함하여 Node.js의 모듈 시스템에 대해 설명합니다. 도움이 되길 바랍니다!

노드 학습 채팅 모듈 시스템

모듈 시스템

참조: Node.js 모듈 시스템

Node.js 파일이 서로 호출할 수 있도록 Node.js는 간단한 모듈 시스템을 제공합니다.
모듈은 Node.js 애플리케이션의 기본 구성 요소이며 파일과 모듈은 일대일 대응을 갖습니다.
즉, Node.js 파일은 JavaScript 코드, JSON 또는 컴파일된 C/C++ 확장일 수 있는 모듈입니다.

Node.js에는 4가지 유형의 모듈(네이티브 모듈과 3가지 파일 모듈)이 있습니다
예: 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가 제공됩니다. http라는 모듈을 사용하여 코드에서 이를 요청하고 반환 값을 지역 변수에 할당합니다.
  • 이렇게 하면 로컬 변수가 http 모듈에서 제공하는 모든 공개 메소드를 사용하는 객체로 전환됩니다. [권장 관련 튜토리얼: nodejs 동영상 튜토리얼
]

모듈 로딩:
    파일 모듈 캐시에서 로드
  • 네이티브 모듈에서 로드
  • 파일에서 로드
    • require 메소드는 다음 매개변수를 허용합니다:
      • http, fs, path , 이벤트, 유틸리티 등, 기본 모듈.

  • ./mod 또는…/mod, 상대 경로가 있는 파일 모듈.
  • /pathtomodule/mod, 절대 경로가 있는 파일 모듈.

  • mod, 비네이티브 모듈의 파일 모듈.

    🎜🎜🎜모듈 인터페이스🎜🎜🎜
  • 위 내용은 노드 학습 채팅 모듈 시스템의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제