検索
ホームページウェブフロントエンドjsチュートリアルノード学習チャットモジュールシステム

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

Jan 30, 2023 pm 08:10 PM
Node.jsモジュール

この記事では、イベント モジュール、ユーティリティ モジュール、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で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンの理解:実装の詳細JavaScriptエンジンの理解:実装の詳細Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:学習曲線と使いやすさPython vs. JavaScript:学習曲線と使いやすさApr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソースPython vs. JavaScript:コミュニティ、ライブラリ、リソースApr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへ:すべてがどのように機能するかC/CからJavaScriptへ:すべてがどのように機能するかApr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。