Node.js は、サーバー上で JavaScript を実行できる Chrome V8 エンジンに基づくプログラミング言語です。モジュールとパッケージを使用して、プログラムを簡単に編成し、依存関係を管理できます。このうち、module.exports
と exports
はモジュール化においてよく使われる概念であり、この記事では Node.js での使い方を紹介します。
module.exports と exports の関係
Node.js では、各ファイルは独立したモジュールです。ファイル内の変数や関数を他のモジュールで使用したい場合は、エクスポートします。変数 module.exports
と exports
の両方をエクスポートできます。
Node.js では、各モジュールに module
オブジェクトがあり、このオブジェクトには exports
属性などのモジュール関連情報が含まれます。 exports
エクスポートする変数または関数をこの属性にマウントし、require()
関数を通じて外部からモジュールを参照し、エクスポートされた変数と関数を呼び出します。
デフォルトでは、exports
は module.exports
の参照を指すため、exports
および module.exports
モジュールをエクスポートできますが、この 2 つの間のポインティング関係は常に同じであるとは限らないため、場合によっては exports
の代わりに module.exports
を使用する必要があることに注意してください。
exports と module.exports の比較
exports
を使用してオブジェクトをエクスポートする場合、実際には exports
に属性を追加し、値を割り当てます。 。例:
// add.js exports.add = function (a, b) { return a + b; }
上記のコードでは、exports
を使用して add()
メソッドをエクスポートします。次のコードを実行するのと同じです:
exports.add = function (a, b) { return a + b; } module.exports = exports; // exports被默认指向module.exports
次に例を見てみましょう:
// math.js exports.add = function (a, b) { return a + b; }; exports.sub = function (a, b) { return a - b; }; // app.js const math = require('./math'); console.log(math.add(1, 1)); // 2 console.log(math.sub(1, 1)); // 0
require()
を通じて math
モジュールを参照します。関数を実行し、そのエクスポートされたメソッドを呼び出すと、結果が正しく出力されます。なぜそれが正しいのでしょうか?
#exports がデフォルトで
module.exports を指すことはわかっていますが、
exports を新しいオブジェクト
に直接指すと、 module .exports の指向関係が変更されました。 Node.js がモジュールをロードすると、実際には
exports オブジェクトではなく
module.exports オブジェクトが返されるため、
exports を新しいオブジェクトにポイントした後、次に、新しいオブジェクトを
module.exports の値として使用します。これが実際のエクスポート操作です。
exports = { add: function (a, b) { return a + b; }, sub: function (a, b) { return a - b; }, } module.exports = exports;注:
exports の属性を再割り当てするだけでは、その属性と
module.exports の間のポインティング関係は変わりません。
// multiply.js exports = { mul: function (a, b) { return a * b; } } // app.js const multiply = require('./multiply'); console.log(multiply.mul(2, 5)); // TypeError: multiply.mul is not a function上記のコードでは、
exports は新しいオブジェクトを指しますが、そのプロパティは割り当てられていないため、エクスポートされた値は
unknown になります。 なので、呼び出し時に TypeError が発生します。
exports を直接使用してモジュールをエクスポートできます。ただし、関数やオブジェクトを
exports にマウントするのではなく、モジュールから直接エクスポートする必要がある場合があります。この場合は、
module.exports を使用する必要があります。
// foo.js module.exports = function () { console.log('Hello World!') } // app.js const foo = require('./foo'); foo(); // Hello World!上記のコードでは、関数を
module.exports に直接割り当てると、実際にはその関数がモジュール全体のエクスポート オブジェクトとして使用されます。
以上がnodejsエクスポートの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

tonavigatereAct'somplexEcosystemively、理解を理解し、認識していることを認識していることを認識しているandweakness、およびIntegreatemtoemtoemtoemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemotereconceptate、その後、勾配内で測定する

RactuseSeSeSeSeSeSeSeSpiffictifideidifiedItemsbyprovidingastableidentitytoeeedelement.1)keysallowReactTotTotTotTotTotTotTotTotTotTotTotTotTotTotTotRACKESOUTRE-RENDERINGTHEENTERELIST.2)chookiniqueandstablekeys、avolididingArrayIndices.3)reforceAsificlySificlySiflovedobrovesiondanc

KeysinReactarecrucialforoptimizingTherenderingProcessandDynamicListseffective.tospotandfixkey-relatedissues:1)adduniquekeystolistiTemstoavoidsissusisus、2)useuniqueidideididifiersfromdateadceSofofordiceys、3)

Reactの一元配置データバインディングにより、データが親コンポーネントから子コンポーネントに流れることが保証されます。 1)データは単一に流れ、親コンポーネントの状態の変化は子コンポーネントに渡すことができますが、子コンポーネントは親コンポーネントの状態に直接影響することはできません。 2)この方法により、データフローの予測可能性が向上し、デバッグとテストが簡素化されます。 3)制御されたコンポーネントとコンテキストを使用することにより、一方向のデータストリームを維持しながら、ユーザーの相互作用とコンポーネント間通信を処理できます。

keysinReactarecrucialforeffiencedomupdatessandRecOnciliation.1)選択可能でユニークな、そして類似のフルキーなど、Itemids.2)fornestedLists、useuniquekeysateachlevel.3)

useState()uscrucialforoptimizingRectperformanceduetuitsoitsimpactonre-rendersandupdates.tooptimize:1)useusecallbacktomoize funtionsandpreventunnederireRenders.2)

コンテキストとユーザーを使用して、大規模なReactアプリケーションで州の管理を簡素化できるため、状態を共有します。 1)プロップドリルを減らす、2)より明確なコード、3)グローバルな状態を管理しやすい。ただし、パフォーマンスのオーバーヘッドと複雑さのデバッグに注意してください。コンテキストと最適化技術の合理的な使用は、アプリケーションの効率と保守性を向上させることができます。

誤ったキーを使用すると、Reactアプリケーションでパフォーマンスの問題や予期しない動作を引き起こす可能性があります。 1)キーはリスト項目の一意の識別子であり、Virtual Domを効率的にReactの更新を支援します。 2)同じまたは非ユニークなキーを使用すると、リスト項目が再注文され、コンポーネント状態が失われます。 3)キーとして安定した一意の識別子を使用すると、パフォーマンスを最適化し、完全な再レンダリングを回避できます。 4)ESLINTなどのツールを使用して、キーの正しさを確認します。キーを適切に使用すると、効率的で信頼性の高い反応アプリケーションが保証されます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ホットトピック









