Nodejs のモジュールとメソッドの詳細な紹介

不言
リリース: 2018-08-14 16:48:44
オリジナル
2116 人が閲覧しました

この記事では、nodejs のモジュールとメソッドについて詳しく説明します。必要な方は参考にしていただければ幸いです。

1. モジュール読み込み仕様

ES6 よりも前には js モジュール読み込みソリューションがあり、最も重要なものは CommonJS と AMD 仕様です。 commonjs は主に、nodejs などの同期読み込みを実現するためにサーバーで使用されます。 AMD 仕様は、requirejs などの非同期読み込み用のブラウザーに適用されます。 seaJS などの同期読み込みソリューション用の CMD 仕様もあります。

Nodejs にはシンプルなモジュール読み込みシステムがあります。 Nodejs では、ファイルとモジュールは 1 対 1 に対応します (各ファイルは独立したモジュールとみなされます)。

require が参照できる唯一のオブジェクトは module.exports です。exports オブジェクトは参照できません。また、モジュールを作成するときに使用するエクスポート オブジェクトは、実際には module.exports への参照にすぎません。

2、module.exportsとexports

Nodejsのすべてのモジュールは、モジュールオブジェクトを自動的に作成します。同時に、モジュールオブジェクトの下に、特定のクラスのインスタンスを割り当てることができます。このクラスのエクスポート インスタンスにエクスポートします。

モジュールが実行される前に、Nodejs は module.exports の値をグローバル変数 exports に割り当てます。これにより、 module.exports.f = ... はより簡潔に exports.f = ... として記述できます。注: すべての変数と同様、exports が再割り当てされると、module.exports にバインドされなくなり、指定されたモジュールはエクスポートされなくなります。

3。 . X はファイル名またはディレクトリ名です。Nodejs が require(Y+X) に遭遇すると、次の順序で処理されます:

1. If Module (例: require("http")

b. それ以上は不要です。実行

2. Yが「./」、「/」、または「../」で始まる場合(相対パスと絶対パスが考慮されます ファイルモジュールです)

a. 指定されたものから始まるXをファイルとして扱いますパスを指定し、次のファイルを順番に検索します: X、X.js、X.json、Execute

b. 指定されたパスから開始して、X をディレクトリとして扱い、次のファイルを順番に検索します: X/package .json (メインフィールド)、X/index.js、X/index.json、存在する場合は、ファイルに戻り、実行を続行しません

3. npmによってインストールされたサードパーティモジュール、パッケージ

の場合X はコア モジュールではありません。「./」、「/」、または「../」で終わりません。最初に、Nodejs は現在のモジュールの親ディレクトリから開始し、その / からモジュールをロードしようとします。それでも見つからない場合は、ファイルシステムのルートディレクトリまで次の親ディレクトリに移動します

4.「見つからない」をスローします

4、importとrequireの違い

​​ ES6規格がリリースされてからは、exportコマンドでインターフェースをエクスポート(モジュールの出力)し、インポートでモジュールを導入するのが標準的な使い方になりましたが、通常のnodeモジュールではCommonJSの仕様を採用しており、 require を使用してモジュールを導入し、 module.exports を使用してインターフェースをエクスポートします。

ES6 は言語仕様のレベルでモジュール機能を実装しており、その実装は非常に簡単で、既存の CommonJS および AMD 仕様を完全に置き換えることができ、ブラウザーとサーバー用のユニバーサル モジュール ソリューションになります。

import の構文は require とは異なり、import はファイルの先頭に配置する必要があり、他の論理コードを前に置くことはできません

import $ from 'jquery';
import * as _ from '_';
import {a,b,c} from './a';
import {default as alias, a as a_a, b, c} from './a';
ログイン後にコピー

​​ require の使い方は非常に簡単です。 module.exports の内容は何ですか? そして、結果を代入します。変数は、require と module.exports の位置を並列空間で重複させることと同じです。これを使用するときは、モジュール性の概念を完全に無視して、単にノードの組み込みグローバル関数として扱うことができます。そのパラメータは、式

require('./a')(); // a模块是一个函数,立即执行a模块函数
var data = require('./a').data; // a模块导出的是一个对象
var a = require('./a')[0]; // a模块导出的是一个数组
ログイン後にコピー

5、ノード非同期プログラミング I/0 およびイベント ループ

であっても構いません。ノード .js 非同期プログラミングの直接的な表現はコールバックです。コールバック関数は、タスクの完了後に呼び出されます。すべてのノード API はコールバック関数をサポートしています。

他のコマンドを実行しながらファイルを読み取ることができます。ファイルの読み取りが完了したら、ファイルの内容をコールバック関数のパラメーターとして返します。これにより、コードの実行中にファイル I/O 操作がブロックされたり、待機したりすることがなくなります。これにより、Node.js のパフォーマンスが大幅に向上し、多数の同時リクエストを処理できるようになります。

Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发。

Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数.

6,nodejs事件系统 Node.js EventEmitter

Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。EventEmitter 对象如果在实例化时发生错误,会触发 error 事件。当添加新的监听器时,newListener 事件会触发,当监听器被移除时,removeListener 事件被触发。

// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
ログイン後にコピー

方法:

       1,addListener(event, listener) 为指定事件添加一个监听器到监听器数组的尾部。

       2,on(event, listener) 为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数。

       3,removeListener(event, listener) 移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器。它接受两个参数,第一个是事件名称,第二个是回调函数名称。

        4,removeAllListeners([event]) 移除所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器

        5, listeners(event) 返回指定事件的监听器数组。

        6,emit(event, [arg1], [arg2], [...]) 按参数的顺序执行每个监听器,如果事件有注册监听返回 true,否则返回 false。

7,nodejs文件系统

        异步和同步:Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。

方法:

       1、打开文件 fs.open(path, flags[, mode], callback)

       2、获取文件信息 fs.stat(path, callback)

        3、写入文件 fs.writeFile(file, data[, options], callback)

        4、读取文件 fs.read(fd, buffer, offset, length, position, callback)

             参数使用说明如下:

                     fd - 通过 fs.open() 方法返回的文件描述符。

                     buffer - 数据写入的缓冲区。

                     offset - 缓冲区写入的写入偏移量。

                     length - 要从文件中读取的字节数。

                     position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。

                    callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。

        5、关闭文件 fs.close(fd, callback)

        6、截取文件 fs.ftruncate(fd, len, callback)

        7、删除文件 fs.unlink(path, callback)

        8、创建目录 fs.mkdir(path[, mode], callback)

        9、读取目录 fs.readdir(path, callback)

        10、删除目录 fs.rmdir(path, callback)

8、Node.js Stream(流)

        Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出)。

        所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:

               data - 当有数据可读时触发。

               end - 没有更多的数据可读时触发。

               error - 在接收和写入过程中发生错误时触发。

終了 -すべてのデータが基盤となるシステムに書き込まれたときにトリガーされます。

1. 読み取り可能なストリームを作成します

var ReaderStream = fs.createReadStream('input.txt');

2. 書き込み可能なストリームを作成し、ファイルoutput.txtに書き込みます

var WriterStream = fs .createW ri​​teStream( 'output.txt');

3. パイプ読み取りおよび書き込み操作、input.txt ファイルの内容を読み取り、その内容を output.txt ファイルに書き込みます

ReaderStream.pipe(writerStream);

4 、圧縮input.txt ファイルを input.txt.gz、チェーン ストリーム

fs.createreadstream ('input.txt')。PIPE (zlib.creategzip ()));

5. input.txt.gz を解凍します。 input.txt

input.txt'));

9. Node.js グローバル オブジェクト

JavaScript にはグローバル オブジェクト (Global Object) と呼ばれる特別なオブジェクトがあり、このオブジェクトとそのすべてのプロパティは次のようになります。プログラム内の任意の場所、つまりグローバル変数にアクセスできます。

1. __filename __filename は、現在実行されているスクリプトのファイル名を表します。ファイルの場所の絶対パスが出力されますが、コマンド ライン パラメーターで指定したファイル名と同じでない場合があります。 モジュール内の場合、戻り値はモジュール ファイルへのパスです。

2. __dirname __dirname は、現在実行されているスクリプトが配置されているディレクトリを表します。

3. setTimeout(cb, ms) setTimeout(cb, ms) グローバル関数は、指定されたミリ秒数 (ms) 後に指定された関数 (cb) を実行します。 :setTimeout() は、指定された関数を 1 回だけ実行します。タイマーを表すハンドル値を返します。

4. clearTimeout(t) clearTimeout(t) グローバル関数は、setTimeout() によって以前に作成されたタイマーを停止するために使用されます。 パラメータ t は、setTimeout() 関数によって作成されたタイマーです。

5. setInterval(cb, ms) setInterval(cb, ms) グローバル関数は、指定されたミリ秒 (ms) 数後に指定された関数 (cb) を実行します。

タイマーを表すハンドル値を返します。タイマーは、clearInterval(t) 関数を使用してクリアできます。 setInterval() メソッドは、clearInterval() が呼び出されるかウィンドウが閉じられるまで、関数を呼び出し続けます。

6. コンソール console は、コンソールの標準出力を提供するために使用されます。これは、Internet Explorer の JScript エンジンによって提供されるデバッグ ツールであり、その後徐々にブラウザーの実装標準になりました。

7. プロセス process はグローバル変数、つまりグローバル オブジェクトのプロパティです。これは、現在の Node.js プロセスのステータスを記述するために使用されるオブジェクトであり、オペレーティング システムとのシンプルなインターフェイスを提供します。重要な属性には、標準入力ストリームと標準出力ストリーム stdin および stdout が含まれます

関連する推奨事項:

reac 肌の色を変更する機能を実装する方法

ページ間のデータ転送を実装するための js コード

以上がNodejs のモジュールとメソッドの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート