ホームページ  >  記事  >  ウェブフロントエンド  >  ノード学習チャットモジュールシステム

ノード学習チャットモジュールシステム

青灯夜游
青灯夜游転載
2023-01-30 20:10:222387ブラウズ

この記事では、イベント モジュール、ユーティリティ モジュール、fs モジュール、OS モジュール、パス モジュールなどを含む、Node.js のモジュール システムについて説明します。お役に立てば幸いです。

ノード学習チャットモジュールシステム

#モジュール システム

参考:

Node.js モジュール システム

Node.js ファイルが相互に呼び出せるようにするために、Node.js は単純なモジュール システムを提供します。

モジュールは Node.js アプリケーションの基本コンポーネントであり、ファイルとモジュールは 1 対 1 に対応します。
つまり、Node.js ファイルはモジュールであり、このファイルは JavaScript コード、JSON、またはコンパイルされた C/C 拡張機能である可能性があります。

Node.js には 4 種類のモジュールがあります (ネイティブ モジュールと 3 種類のファイル モジュール)

例:
var http = require("http");

Node.js には http というモジュールが付属しており、コード内でこれをリクエストし、戻り値をローカル変数に割り当てます。

これにより、ローカル変数が、http モジュールによって提供されるすべてのパブリック メソッドを備えたオブジェクトに変換されます。 [関連チュートリアルの推奨事項:
nodejs ビデオ チュートリアル ]

ロード モジュール:

    ファイル モジュール キャッシュからロード
  • ネイティブからモジュールの読み込み
  • ファイルからの読み込み
    • require メソッドは次のパラメーターを受け入れます:
      • http、fs、パス、イベント、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() {...}
  • モジュールの唯一の変更点インターフェイスは、exports.world = function(){} の代わりに module.exports = Hello を使用します。モジュールが外部から参照される場合、そのインターフェイス オブジェクトは、元のエクスポートではなく、出力される Hello オブジェクトそのものになります。
エクスポートと module.exports の使用

プロパティまたはメソッドを外部に公開したい場合は、エクスポートを使用するだけです。オブジェクトを公開するには (同様の多くのプロパティやメソッドを含むクラスに追加するには、 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

イベント モジュール参考:

Node.js EventEmitter

イベント モジュールは、events.EventEmitter という 1 つのオブジェクトのみを提供します。 EventEmitter の中核は、イベント トリガー関数とイベント リスナー関数のカプセル化です。

    events
  • はモジュールです。モジュールにアクセスするには、require("events"); を使用します。
  • EventEmitter
  • は、events モジュールの唯一のクラスと同等です。このクラスには複数の属性があります
      addListener(event, listener)
    • 指定されたイベントのリスナーをリスナー配列の末尾に追加します。
    • on(event,listener)
    • on 関数は、指定されたイベントのリスナーを登録し、文字列イベントとコールバック関数を受け入れます。
    • once(event,listener)
    • 指定されたイベントのワンタイム リスナーを登録します。つまり、リスナーは最大 1 回だけトリガーされ、リスナーはトリガーの直後に解放されます。 triggering
    • removeListener(event,listener)
    • 指定されたイベントのリスナーを削除します。リスナーは、イベントに登録されたリスナーである必要があります。 2 つのパラメータを受け入れます。1 つ目はイベント名、2 つ目はコールバック関数名です。
    • removeAllListeners([event])
    • イベントが指定されている場合、すべてのイベントのすべてのリスナーを削除します。指定されたイベントのすべてのリスナーを削除します。
    • setMaxListeners(n)
    • デフォルトでは、10 を超えるリスナーを追加すると、EventEmitters は警告メッセージを出力します。 setMaxListeners 関数は、リスナーのデフォルトの制限数を変更するために使用されます。
    • listeners(event)
    • 指定されたイベントのリスナー配列を返します。
    • emit(event, [arg1], [arg2], [...])
    • 各リスナーをリスナーの順序で実行します。イベントにリスナーが登録されている場合は、true を返します。それ以外の場合は false を返します。
    • listenerCount(emitter,event)
    • 指定されたイベントのリスナーの数を返します。
    • #
      //例子
      //event.js 文件
      var events = require('events');            // 引入 events 模块
      var emitter = new events.EventEmitter();   // 创建 eventEmitter 对象
      //为事件someEvent注册两个监视器
      emitter.on('someEvent', function(arg1, arg2) { 
          console.log('listener1', arg1, arg2); 
      }); 
      emitter.on('someEvent', function(arg1, arg2) { 
          console.log('listener2', arg1, arg2); 
      }); 
      //按顺序执行someEvent的每个监视器
      emitter.emit('someEvent', 'arg1 参数', 'arg2 参数');  // 'arg1 参数', 'arg2 参数'为参数arg1,arg2的值
      //结果
      $ node event.js 
      listener1 arg1 参数 arg2 参数
      listener2 arg1 参数 arg2 参数

#ユーティリティ モジュール参考:## util Utility 公式 Web サイト

Node.js 共通ツール

util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心 JavaScript 的功能 过于精简的不足。

util.callbackify(original)
将 async 异步函数(或者一个返回值为 Promise 的函数)转换成遵循异常优先的回调风格的函数

  • 参数:original 为 async 异步函数。
  • 返回值:返回传统回调函数(或者一个返回值为 Promise 的函数)
    • 在返回的回调函数中,第一个参数为拒绝的原因(如果 Promise 解决,则为 null),第二个参数则是解决的值。
//例子
const util = require('util');

async function fn() {
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

//结果
hello world

util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数。

//例子
var util = require('util'); 
//Base构造函数内三个属性
function Base() {    
    this.name = 'base'; 
    this.base = 1991; 
    this.sayHello = function() { 
    console.log('Hello ' + this.name); 
    }; 
} 

//原型中定义的一个函数
Base.prototype.showName = function() { 
    console.log(this.name);
}; 

//Sub构造函数内一个属性
function Sub() { 
    this.name = 'sub'; 
} 

util.inherits(Sub, Base);  //Sub从Base继承
var objBase = new Base(); 
objBase.showName(); 
objBase.sayHello(); 
console.log(objBase); 

var objSub = new Sub(); 
objSub.showName(); 
//objSub.sayHello(); 
console.log(objSub); 

//结果
base 
Hello base 
{ name: 'base', base: 1991, sayHello: [Function] } 
sub 
{ name: 'sub' }
//Base 有 name , base , sayHello() , showName()
//Sub  有 name(自己定义的,不是继承的) , showName() 从Base继承的
  • util.inspect(object,[showHidden],[depth],[colors]) 是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出。它至少接受一个参数 object,即要转换的对象。
    • 它至少接受一个参数 object,即要转换的对象。
    • showHidden 是一个可选参数,如果值为 true,将会输出更多隐藏信息。
    • depth 表示最大递归的层数,如果对象很复杂,你可以指定层数以控制输出信息的多 少。如果不指定depth,默认会递归 2 层,指定为 null 表示将不限递归层数完整遍历对象。
    • 如果 colors 值为 true,输出格式将会以 ANSI 颜色编码,通常用于在终端显示更漂亮 的效果。
var util = require('util'); 
function Person() { 
    this.name = 'byvoid'; 
    this.toString = function() { 
    return this.name; 
    }; 
} 
var obj = new Person(); 
console.log(obj);
console.log(util.inspect(obj)); 
console.log(util.inspect(obj, true));

ノード学習チャットモジュールシステム

fs 模块

参考资料:Node.js 文件系统
Node.js 文件系统模块 官网
fs.open(path, flags[, mode], callback) 在异步模式下打开文件

  • 参数:

    • path - 文件的路径。
    • flags - 文件打开的行为。具体值详见下文。
    • mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
    • callback - 回调函数,带有两个参数如:callback(err, fd)

    r 以读取模式打开文件。如果文件不存在抛出异常。
    r+ 以读写模式打开文件。如果文件不存在抛出异常。
    rs 以同步的方式读取文件。
    rs+ 以同步的方式读取和写入文件。
    w 以写入模式打开文件,如果文件不存在则创建。
    wx 类似 ‘w’,但是如果文件路径存在,则文件写入失败。
    w+ 以读写模式打开文件,如果文件不存在则创建。
    wx+ 类似 ‘w+’, 但是如果文件路径存在,则文件读写失败。
    a 以追加模式打开文件,如果文件不存在则创建。
    ax 类似 ‘a’, 但是如果文件路径存在,则文件追加失败。
    a+ 以读取追加模式打开文件,如果文件不存在则创建。
    ax+ 类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。

fs.stat(path, callback) 通过异步模式获取文件信息

  • 参数:
    • path - 文件路径。
    • callback - 回调函数,带有两个参数如:callback(err, stats), stats 是 fs.Stats 对象。

fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的提供方法判断文件的相关属性

stats.isFile() 如果是文件返回 true,否则返回 false。
stats.isDirectory() 如果是目录返回 true,否则返回 false。
stats.isBlockDevice() 如果是块设备返回 true,否则返回 false。
stats.isCharacterDevice() 如果是字符设备返回 true,否则返回 false。
stats.isSymbolicLink() 如果是软链接返回 true,否则返回 false。
stats.isFIFO() 如果是FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。
stats.isSocket() 如果是 Socket 返回 true,否则返回 false。

fs.writeFile(file, data[, options], callback) 异步模式下写入文件
writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容。

  • パラメータ:
    • file - ファイル名またはファイル記述子。
    • data - ファイルに書き込まれるデータ。String または Buffer オブジェクトにすることができます。
    • options - このパラメータは、{encoding, mode, flag} を含むオブジェクトです。デフォルトのエンコーディングは utf8、モードは 0666、フラグは 'w'です。
    • callback - コールバック関数。コールバック関数にはエラー情報パラメータ (err) のみが含まれ、
    ## を返します。

#fs.read(fd,buffer,offset,length,position,callback) 非同期モードでファイルを読み取ります。このメソッドは、ファイル記述子を使用してファイルを読み取ります。 。

    パラメータ:
    • fd - fs.open() メソッドによって返されるファイル記述子。
    • buffer - データが書き込まれるバッファー。
    • offset - バッファ書き込みの書き込みオフセット。
    • length - ファイルから読み取るバイト数。
    • position - ファイル読み取りの開始位置。position の値が null の場合、現在のファイル ポインターの位置から読み取ります。
    • callback - err、bytesRead、buffer の 3 つのパラメータを持つコールバック関数。err はエラー メッセージ、bytesRead は読み取られたバイト数を表し、buffer はバッファ オブジェクトです。

fs.close(fd, callback) 非同期モードでファイルを閉じます。このメソッドは、ファイル記述子を使用してファイルを読み取ります。

    パラメータ:
    • fd - fs.open() メソッドによって返されるファイル記述子。
    • callback - コールバック関数、パラメータなし。

fs.ftruncate(fd, len, callback) 非同期モードでファイルをインターセプトするこのメソッドは、ファイル記述子を使用してファイルを読み取ります。

    パラメータ:
    • fd - fs.open() メソッドによって返されるファイル記述子。
    • len - 切り詰められたファイルコンテンツの長さ。
    • callback - コールバック関数、パラメータなし。

fs.unlink(path, callback) ファイル削除の構文形式:

    パラメータ:
    • path - ファイルパス。
    • callback - コールバック関数、パラメータなし。

fs.mkdir(path[, options], callback) ディレクトリの作成

    パラメータ:
    • path - ファイル パス
    • options パラメータは
      • recursive - ディレクトリを再帰的に作成するかどうか、デフォルトは false です。
      • mode - ディレクトリのアクセス許可を設定します。デフォルトは 0777 です。
    • callback - コールバック関数、パラメータなし。

fs.readdir(path, callback) ディレクトリの読み取り

    パラメータ:
    • path -ファイル パス
    • callback - コールバック関数。コールバック関数は 2 つのパラメータを取ります。err、files、err はエラー メッセージ、files はディレクトリ内のファイル配列リストです。

fs.rmdir(path, callback) ディレクトリの削除

    パラメータ:
    • path - ファイル パス
    • callback - コールバック関数、パラメーターはありません。

#OS モジュール #参考:

Node.js OS モジュール

プロパティ: os.EOL
オペレーティング システムの行末文字を定義する定数。 メソッド:
os.tmpdir()
オペレーティング システムのデフォルトの一時フォルダーを返します。 os.endianness()
CPU のエンディアンネスを返します (可能な場合)。 「BE」または「LE」です。 os.hostname()
オペレーティング システムのホスト名を返します。 os.type()
オペレーティング システム名を返します os.platform()
コンパイルされたオペレーティング システム名を返します os.arch()
オペレーティング システムの CPU アーキテクチャを返します。可能な値は「x64」、「arm」、および「ia32」です。 os.release()
オペレーティング システムのリリース バージョンを返します。 os.uptime()
オペレーティング システムの実行時間を秒単位で返します。 os.loadavg()
1 分、5 分、15 分の負荷平均を含む配列を返します。 os.totalmem()
システム メモリの合計量をバイト単位で返します。 os.freemem()
オペレーティング システムの空きメモリ量をバイト単位で返します。 os.cpus()
インストールされている各 CPU/コアに関する情報を含むオブジェクト配列を返します: モデル、速度 (単位 MHz)、時間 (1 つは user、nice、sys、idle、および irq オブジェクトを含みます) CPU/コアの使用ミリ秒数)。 os.networkInterfaces()
ネットワーク インターフェイスのリストを取得します。

#パス モジュールNode.js パス モジュール

##Net モジュール

Node.js ネット モジュール

##DNS モジュール

##Node.js DNS モジュール

#ドメイン モジュール

#Node.js ドメイン モジュール

#http モジュール

参考資料:

Node,js Web モジュール

##url モジュール

#gulp モジュール #ES6 環境セットアップ

Webpack モジュール

Webpack 入門チュートリアル

ノード関連の知識の詳細については、nodejs チュートリアル##を参照してください。 # !

以上がノード学習チャットモジュールシステムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。