ホームページ ウェブフロントエンド jsチュートリアル エクスポートのデフォルト、要求とエクスポート、およびエクスポートの違いと関連性の詳細な説明

エクスポートのデフォルト、要求とエクスポート、およびエクスポートの違いと関連性の詳細な説明

Jun 22, 2017 am 11:53 AM
default export

module.exports、exports、export と exportdefault、import と require の違いや接続についてまだ心配していませんか? 基本的にはこの記事で十分です。

1. まず、基本的な質問を理解しましょう:

module.exportsexportsCommonJS モジュール仕様に属しています。 (commonjs についてよくわかりません? マスター、ここで commonjs の仕様を見てください)

exportexportdefaultES6 構文 に属します (ES6 についてよくわかりません? マスター、ES6 の仕様を見てください)モジュールはこちら)!

同様に、importrequireはそれぞれES6とCommonJSに属します。

2 番目に、それがどの構文に属するかを明確にする必要があります:

module.exportsexports、exportデフォルトのエクスポート エクスポートモジュール

importrequire モジュールをインポートします。 だから、ここで混乱しないでください。 module.exports のエクスポートは require import に対応し、export のエクスポートは import のインポートに対応します。

やあ!待ってください。なぜ module.exports のエクスポートは require import に対応し、export のエクスポートは import のインポートに対応すると言えるのでしょうか。では、exports と export default があるのです。 ?それでは続けましょう。

3. module.exports

exportsの違いと関係 ここでモジュール性について少し触れておく必要があります: Node アプリケーションはモジュールで構成され、CommonJS を使用しますモジュール仕様。 この仕様によれば、各ファイルはモジュールであり、独自のスコープを持ちます。ファイル内で定義された変数、関数、およびクラスはプライベートであり、他のファイルからは参照できません。 CommonJS 仕様では、各モジュール内の module 変数が現在のモジュールを表すと規定されています。この変数はオブジェクトであり、その exports 属性 (つまり、module.exports) は外部インターフェイスです。モジュールをロードすると、実際にはモジュールの module.exports 属性がロードされます。

var x = 5;var addX = function (value) {  return value + x;};module.exports.x = x;module.exports.addX = addX;
ログイン後にコピー
上記のコードは、module.exportsx と関数 addX

require メソッドはモジュールのロードに使用されます。

var example = require('./example.js');console.log(example.x); // 5console.log(example.addX(1)); // 6
ログイン後にコピー

commonjs 仕様の概要を読んだ後は、次の違いと関連性を知ることができます:

実際、exports 変数は module.exports を指します。 、モジュールをロードすると、実際にはこのモジュールの module.exports がロードされます。これは、各モジュールの先頭に次のような行があることと同じです。

var exports = module.exports;
ログイン後にコピー
module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

<code class=" javascript"><span class="token comment">// testA.js<span class="token keyword">var f <span class="token operator">= <span class="token string">&#39;Miel&#39;<span class="token punctuation">;<span class="token keyword">var name <span class="token operator">= <span class="token string">&#39;Jack&#39;<span class="token punctuation">;<span class="token keyword">var data<span class="token operator">= <span class="token number">1988<span class="token punctuation">;

export <span class="token punctuation">{f<span class="token punctuation">, name<span class="token punctuation">, data<span class="token punctuation">}<span class="token punctuation">;<br/></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
ログイン後にコピー

上面代码通过module.exports输出变量x和函数addX

require方法用于加载模块。

<code class=" javascript"><span class="token comment">// main.js
import <span class="token punctuation">{</span></span></code><code class=" javascript"><span class="token comment"><span class="token keyword"><span class="token operator"><span class="token string"><span class="token punctuation"><span class="token keyword"><span class="token operator"><span class="token string"><span class="token punctuation"><span class="token keyword"><span class="token operator"><span class="token number"><span class="token punctuation"><span class="token punctuation">f<span class="token punctuation">, name<span class="token punctuation">, data</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code><code class=" javascript"><span class="token comment"><span class="token punctuation"><span class="token punctuation"><span class="token punctuation"><span class="token punctuation">} from <span class="token string">&#39;./testA&#39;<span class="token punctuation">;<br/></span></span></span></span></span></span></span></code>
ログイン後にコピー

看了刚刚这段commonjs规范上面的介绍可以知道以下区别与联系:

其实exports变量是指向module.exports,加载模块实际是加载该模块的module.exports。这等同在每个模块头部,有一行这样的命令。

<code class=" javascript"><span class="token comment">// export-default.js
export default <span class="token keyword">function <span class="token punctuation">(<span class="token punctuation">) <span class="token punctuation">{
  console<span class="token punctuation">.<span class="token function">log<span class="token punctuation">(<span class="token string">&#39;foo&#39;<span class="token punctuation">)<span class="token punctuation">;<span class="token punctuation">}<br/></span></span></span></span></span></span></span></span></span></span></span></span></code>
ログイン後にコピー

于是我们可以直接在 exports 对象上添加方法,表示对外输出的接口,如同在module.exports上添加一样。注意,不能直接将exports变量指向一个值,因为这样等于切断了exports与module.exports的联系。

三、exportexport default的区别与联系

模块功能主要由:exportimport构成export导出模块的对外接口,import命令导入其他模块暴露的接口。

export其实和export default就是写法上面有点差别,一个是导出一个个单独接口,一个是默认导出一个整体接口。使用import命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。这里就有一个简单写法不用去知道有哪些具体的暴露接口名,就用export default命令,为模块指定默认输出。

export可以这样写

// 或者写成function foo() {
  console.log(&#39;foo&#39;);}
export default foo;
ログイン後にコピー

使用export命令定义了模块的对外接口以后,其他 JS 文件就可以通过import命令加载这个模块。

<code class=" javascript"><span class="token comment">// import-default.js
import customName from <span class="token string">&#39;./export-default&#39;<span class="token punctuation">;<span class="token function">customName<span class="token punctuation">(<span class="token punctuation">)<span class="token punctuation">;<span class="token comment"> // &#39;foo&#39;<br/><br/></span></span></span></span></span></span></span></span></code>
ログイン後にコピー

export default可以这样写

rrreeerrreeerrreee

下面比较一下export default和export 输出。

可以看到第一组是使用,语句不需要使用大括号;第二组使用,对应的语句需要使用大括号,一个模块只能有一个默认输出,所以只能使用一次。

<strong>四、import和require</strong><strong>的区别与联系</strong>そのため、module.exports に追加するのと同じように、exports オブジェクトにメソッドを直接追加して、外部出力インターフェイスを表すことができます。これは、exports と module.exports の間の接続を切断することと同じであるため、exports 変数に値を直接指定することはできないことに注意してください。


3.export

と🎜exportdefaultの違いと関連性🎜🎜🎜モジュール関数は主にexportimportで構成されます。 export コマンドはモジュールの外部インターフェイスをエクスポートし、import コマンドは他のモジュールによって公開されたインターフェイスをインポートします。 🎜🎜実際、エクスポートとデフォルトのエクスポートは書き方が少し異なります。1 つは個別のインターフェイスをエクスポートすること、もう 1 つはデフォルトでインターフェイス全体をエクスポートすることです。 import コマンドを使用する場合、ユーザーはロードする変数または関数の名前を知っている必要があります。そうでないと、ロードできません。ここでは、特定の公開インターフェイス名を知らなくても、 exportdefault コマンドを使用してモジュールのデフォルト出力を指定する簡単な方法を示します。 🎜🎜エクスポートは次のように記述できます🎜rrreee🎜 export コマンドを使用してモジュールの外部インターフェイスを定義した後、他の JS ファイルは import コマンドを通じてこのモジュールをロードできます。 🎜rrreee🎜exportdefaultは次のように書くことができます🎜rrreeerrreeerrreee🎜以下はexportdefaultとexportの出力を比較しています。 🎜🎜最初のグループが使用されており、ステートメントでは中かっこを使用する必要がありません。2 番目のグループが使用されており、対応するステートメントでは中かっこを使用する必要があり、モジュールにはデフォルトの出力が 1 つしかないため、それのみを使用できることがわかります。一度。 🎜🎜🎜🎜4. import と require の違いと関係🎜🎜🎜🎜🎜 上記を読めば、ES6 に属するモジュールをインポートするための 2 種類の構文は明らかです。と CommonJS をそれぞれ指定します。 🎜🎜

以上がエクスポートのデフォルト、要求とエクスポート、およびエクスポートの違いと関連性の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

「要求されたモジュールは、という名前のエクスポートを提供しません」というエラーが Vue Cli に表示される - 解決方法は? 「要求されたモジュールは、という名前のエクスポートを提供しません」というエラーが Vue Cli に表示される - 解決方法は? Aug 20, 2023 pm 07:25 PM

「要求されたモジュールはエクスポート名を提供しません」というエラーが VueCli に表示される – 解決方法は? Vue プロジェクトの開発中に、「Therequestedmoduledoesnotprovideanexportnamed」というエラー メッセージが表示される場合があります。このエラー メッセージは通常、サードパーティ コンポーネントを導入するときに表示されます。

デフォルトゲートウェイの設定方法 デフォルトゲートウェイの設定方法 Dec 07, 2023 am 11:34 AM

デフォルト ゲートウェイを構成する手順: 1. ルーターの IP アドレスを決定します; 2. コンピューターのネットワーク構成インターフェイスを開きます; 3. ネットワーク接続を構成します; 4. IPv4 設定を構成します; 5. IP アドレスとサブネット マスクを入力します; 6 . デフォルト ゲートウェイを構成します。7. DNS サーバーを構成します。8. 設定を保存します。詳細な紹介: 1. ルーターの IP アドレスを確認します。デフォルト ゲートウェイ アドレスは、通常、ルーターの IP アドレスです。ルーターの IP アドレスは、ルーターの背面またはユーザー マニュアルで確認できます。2. コンピューターのネットワーク構成などを開きます。 。

デフォルトゲートウェイを構成する デフォルトゲートウェイを構成する Dec 07, 2023 pm 03:02 PM

デフォルト ゲートウェイを構成する手順: 1. コントロール パネルを開きます; 2. ネットワークとインターネットを選択します; 3. ネットワーク接続を構成します; 4. IP アドレスを構成します; 5. DNS サーバー アドレスを構成します; 6. 構成を確認します; 7. ネットワークを再起動しますデバイス。詳細な導入: 1. Windows システムで、コントロール パネルを開き、[スタート] メニューをクリックし、[コントロール パネル] を選択します; 2. コントロール パネルで、[ネットワークとインターネット] を選択し、[ネットワークとインターネット] を選択します; 3. ネットワーク接続を構成します。等。

エクスポートとエクスポートのデフォルトの違い エクスポートとエクスポートのデフォルトの違い Oct 12, 2023 am 10:24 AM

エクスポートとエクスポート デフォルトの違いは、エクスポート キーワードは 1 つ以上の変数、関数、またはクラスのエクスポートに使用されるのに対し、エクスポート デフォルト キーワードはデフォルトの変数、関数、またはクラスのエクスポートに使用されることです。他のモジュールでは、import キーワードを使用して、これらのエクスポートされた変数、関数、またはクラスをインポートできます。

デフォルトゲートウェイの設定方法 デフォルトゲートウェイの設定方法 Dec 07, 2023 pm 02:56 PM

デフォルト ゲートウェイを構成する手順: 1. ネットワーク環境を理解する; 2. ルーターの IP アドレスを取得する; 3. ルーター管理インターフェイスにログインする; 4. WAN ポート設定を見つけて構成する; 5. デフォルト ゲートウェイを構成する; 6.設定を保存して終了します; 7. ネットワーク接続が正常かどうかを確認します。デフォルト ゲートウェイの構成は、ネットワーク設定における重要な手順であり、ホストがインターネットへのアクセスに使用するルーターを決定します。

PHP のデフォルト使用法の詳細な分析: その秘密を明らかにします。 PHP のデフォルト使用法の詳細な分析: その秘密を明らかにします。 Mar 23, 2024 am 08:06 AM

PHP は Web 開発の分野で広く使用されているスクリプト言語であり、開発者はその柔軟性と強力な機能から多くの恩恵を受けてきました。 PHP では、デフォルト値の設定は一般的な操作であり、default キーワードは重要な役割を果たします。この記事では、PHP でのデフォルトの使用法を深く分析し、その秘密を明らかにし、読者の理解を助けるために特定のコード例と組み合わせます。 1. デフォルトのパラメータ値 PHP では、関数のパラメータにデフォルト値を設定して、

Java キーワードに「default」が含まれていますか? Java キーワードに「default」が含まれていますか? Apr 23, 2023 pm 01:13 PM

デフォルトは Java キーワードですか? 回答: デフォルトは java8 のキーワードであり、「virtualextensionmethods」とも呼ばれます。中国語訳は「仮想拡張メソッド」と呼ばれ、インターフェースにデフォルトの使用メソッドがいくつか含まれています。インターフェースを拡張した場合、インターフェースに関連する実装クラスのコードと競合することはありません。デフォルトと Java の概要: 1. 以前のインターフェースは諸刃の剣であり、抽象化を志向することはできても、特定のプログラミングを志向することはできませんでした。 2. この欠点は、インターフェイスを変更する必要がある場合、最初にインターフェイスを実装するすべてのクラスを変更する必要があることです。 3. インターフェイスに新しいメソッドを追加できない場合でも、既存の表示には影響しないため、すべての人の問題を解決するためにデフォルトのメソッドが追加されます。

MySQLのデフォルト制約defaultとゼロフィル制約zerofillを実装する方法 MySQLのデフォルト制約defaultとゼロフィル制約zerofillを実装する方法 May 31, 2023 pm 05:10 PM

デフォルト制約 MySQL のデフォルト値制約は、特定のカラムのデフォルト値を指定するために使用されます。デフォルト制約を追加する メソッド 1: デフォルト; メソッド 2: 変更可能なテーブル名 列名のタイプを変更する デフォルトのデフォルト値; createtablet_user10(idint,namevarchar(20),addressvarchar(20)default'Beijing'--デフォルトの制約を指定します);-altertable table名前変更列名タイプデフォルトデフォルト値; createtablet_user11(idint,namevarchar(20),addr)

See all articles