この記事では、イベント モジュール、ユーティリティ モジュール、fs モジュール、OS モジュール、パス モジュールなどを含む、Node.js のモジュール システムについて説明します。お役に立てば幸いです。
#モジュール システム
参考:Node.js ファイルが相互に呼び出せるようにするために、Node.js は単純なモジュール システムを提供します。Node.js には 4 種類のモジュールがあります (ネイティブ モジュールと 3 種類のファイル モジュール)モジュールは Node.js アプリケーションの基本コンポーネントであり、ファイルとモジュールは 1 対 1 に対応します。
つまり、Node.js ファイルはモジュールであり、このファイルは JavaScript コード、JSON、またはコンパイルされた C/C 拡張機能である可能性があります。
例:
var http = require("http");
Node.js には http というモジュールが付属しており、コード内でこれをリクエストし、戻り値をローカル変数に割り当てます。ロード モジュール:これにより、ローカル変数が、http モジュールによって提供されるすべてのパブリック メソッドを備えたオブジェクトに変換されます。 [関連チュートリアルの推奨事項:
nodejs ビデオ チュートリアル ]
- ファイル モジュール キャッシュからロード
- ネイティブからモジュールの読み込み
- ファイルからの読み込み
- require メソッドは次のパラメーターを受け入れます:
- http、fs、パス、イベント、util など、ネイティブ モジュール。
- ./mod または.../mod、相対パスを含むファイル モジュール。
- /pathtomodule/mod、絶対パスのファイルモジュール。
- mod、非ネイティブモジュールのファイルモジュール。
#モジュール インターフェイス
- exports
- オブジェクトは、モジュールによって公開されるインターフェイスです。
- オブジェクトは、モジュールのインターフェイスを外部から取得するために使用されます。つまり、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 関数は、指定されたイベントのリスナーを登録し、文字列イベントとコールバック関数を受け入れます。
- 指定されたイベントのワンタイム リスナーを登録します。つまり、リスナーは最大 1 回だけトリガーされ、リスナーはトリガーの直後に解放されます。 triggering
- 指定されたイベントのリスナーを削除します。リスナーは、イベントに登録されたリスナーである必要があります。 2 つのパラメータを受け入れます。1 つ目はイベント名、2 つ目はコールバック関数名です。
- イベントが指定されている場合、すべてのイベントのすべてのリスナーを削除します。指定されたイベントのすべてのリスナーを削除します。
- デフォルトでは、10 を超えるリスナーを追加すると、EventEmitters は警告メッセージを出力します。 setMaxListeners 関数は、リスナーのデフォルトの制限数を変更するために使用されます。
- 指定されたイベントのリスナー配列を返します。
- 各リスナーをリスナーの順序で実行します。イベントにリスナーが登録されている場合は、true を返します。それ以外の場合は false を返します。
- 指定されたイベントのリスナーの数を返します。
//例子 //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 的功能 过于精简的不足。 参考资料:Node.js 文件系统 参数: fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的提供方法判断文件的相关属性 #fs.read(fd,buffer,offset,length,position,callback) fs.close(fd, callback) fs.ftruncate(fd, len, callback) fs.unlink(path, callback) fs.mkdir(path[, options], callback) fs.readdir(path, callback) fs.rmdir(path, callback) プロパティ: os.EOL ノード関連の知識の詳細については、nodejs チュートリアル##を参照してください。 # ! util.callbackify(original)
将 async 异步函数(或者一个返回值为 Promise 的函数)转换成遵循异常优先的回调风格的函数
//例子
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,即要转换的对象。
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 文件系统模块 官网fs.open(path, flags[, mode], callback)
在异步模式下打开文件
callback(err, fd)
r
以读取模式打开文件。如果文件不存在抛出异常。r+
以读写模式打开文件。如果文件不存在抛出异常。rs
以同步的方式读取文件。rs+
以同步的方式读取和写入文件。w
以写入模式打开文件,如果文件不存在则创建。wx
类似 ‘w’,但是如果文件路径存在,则文件写入失败。w+
以读写模式打开文件,如果文件不存在则创建。wx+
类似 ‘w+’, 但是如果文件路径存在,则文件读写失败。a
以追加模式打开文件,如果文件不存在则创建。ax
类似 ‘a’, 但是如果文件路径存在,则文件追加失败。a+
以读取追加模式打开文件,如果文件不存在则创建。ax+
类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。fs.stat(path, callback)
通过异步模式获取文件信息
callback(err, stats)
, stats 是 fs.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 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容。
## を返します。 非同期モードでファイルを読み取ります。このメソッドは、ファイル記述子を使用してファイルを読み取ります。 。
パラメータ:
fd - fs.open() メソッドによって返されるファイル記述子。
非同期モードでファイルを閉じます。このメソッドは、ファイル記述子を使用してファイルを読み取ります。
パラメータ:
fd - fs.open() メソッドによって返されるファイル記述子。
非同期モードでファイルをインターセプトするこのメソッドは、ファイル記述子を使用してファイルを読み取ります。
パラメータ:
fd - fs.open() メソッドによって返されるファイル記述子。
ファイル削除の構文形式:
パラメータ:
path - ファイルパス。
ディレクトリの作成
パラメータ:
path - ファイル パス
recursive - ディレクトリを再帰的に作成するかどうか、デフォルトは false です。
ディレクトリの読み取り
パラメータ:
path -ファイル パス
ディレクトリの削除
パラメータ:
path - ファイル パス
#OS モジュール #参考:
Node.js OS モジュール
オペレーティング システムの行末文字を定義する定数。 メソッド:
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 ネット モジュール
##Node.js DNS モジュール
#ドメイン モジュール
#http モジュール
参考資料:
##url モジュール
#gulp モジュール #ES6 環境セットアップ
Webpack モジュール
Webpack 入門チュートリアル
以上がノード学習チャットモジュールシステムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

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