JS モジュール性を実装するにはどのような方法がありますか? jsのモジュール化の説明
この記事でわかることは、JS のモジュール化の実装方法とは何か? js のモジュール化についての説明は、参考になると思います。
1. CommonJS
背景: 当初、誰もが JS は簡単なもので、ブラウザベースのアプリケーションしか構築できないと考えていました。
API は、一般的なアプリケーション (主にブラウザ以外のアプリケーション) で使用される多くの API を定義し、このギャップを埋めます。その最終的な目標は、Python、Ruby、Java に似た標準ライブラリを提供することです。この場合、開発者は CommonJS を使用できます。
さまざまな JavaScript インタープリターやさまざまなホスト環境で実行できるアプリケーションを作成するための API。 2009年、アメリカのプログラマー、ライアンが
Dahl は、サーバーサイド プログラミングに JavaScript 言語を使用する、node.js プロジェクトを作成しました。これにより、「JavaScript モジュール型プログラミング」が正式に誕生しました。正直に言うと、ブラウザ環境ではモジュールがなくても大きな問題はありませんが、Web プログラムの複雑さは制限されていますが、サーバー側ではオペレーティング システムや他のアプリケーションと対話するためのモジュールが必要です。そうでなければプログラミングはできません。
具体的な代表例: nodeJs、webpack
原則: ブラウザーが CommonJS と互換性がない根本的な理由は、4 つの Node.js 環境変数 (module、exports、require、global、as long) が欠如していることです。これらは 4 つの変数を使用して、ブラウザーで CommonJS モジュールをロードできます
簡単な実装 :
var module = { exports: {} }; (function(module, exports) { exports.multiply = function (n) { return n * 1000 }; }(module, module.exports)) var f = module.exports.multiply; f(5) // 5000
上記のコードは、即時実行関数に 2 つの外部変数 module とexports を提供します。出力値は module.exports 内に配置され、これによりモジュールのロードが実現されます。サーバーサイドモジュールの概念は確立されましたが、CommonJS には大きな制限があります。
この仕様はブラウザ環境には適用されません。 var math = require('math');
3);require は同期です。すべてのモジュールはローカル ハードディスクに保存され、同期してロードできるため、これはサーバー側では問題ありません。しかし、ブラウザにとってこれは大きな問題です。モジュールはサーバー側に配置され、待ち時間はネットワークの速度に依存するため、長時間かかる場合があり、ブラウザは「停止状態」になります。州。ブラウザ側のモジュールは「同期読み込み」(同期)は利用できず、「非同期読み込み」(非同期)のみ利用可能です。これがAMD仕様誕生の背景です。
具体的な表現: RequireJS使用例
: require([dependency], function(){}); require() 関数は 2 つのパラメータを受け取ります
2 番目のパラメータはコールバック関数で、以前に指定したすべてのモジュールが正常にロードされたときに呼び出されます。ロードされたモジュールはパラメータとして関数に渡されるため、これらのモジュールはコールバック関数内で使用できます
// 定义模块 myModule.js define(['dependency'], function(){ var name = 'Byron'; function printName(){ console.log(name); } return { printName: printName }; }); // 加载模块 require(['myModule'], function (my){ my.printName(); });
3、CMD
背景の生成
: CMD仕様は国内で開発された共通モジュール定義です。 AMD に requireJS があるように、CMD にも SeaJS というブラウザ実装があります。SeaJS が解決する必要がある問題は requireJS と同じですが、モジュールの定義方法とモジュールの読み込み (実行、解析) のタイミングに違いがあります。
具体的な表現
: Sea .js使用例
:factoryは3つのパラメータを持つ関数、function(require,exports,module)requireは他のモジュールを取得するための唯一のパラメータとしてモジュールIDを受け入れるメソッドです提供インターフェース:require(id)エクスポートは、モジュールインターフェイスを外部に提供するために使用されるオブジェクトです
モジュールは、現在のモジュールに関連付けられたいくつかの属性とメソッドを保存するオブジェクトです
// 定义模块 myModule.js define(function(require, exports, module) { var $ = require('jquery.js') $('p').addClass('active');}); // 加载模块 seajs.use(['myModule.js'], function(my){ });
AMDとCMDの違い:
実行メカニズム: モジュールに対するSeaJSの態度は次のとおりですモジュールに対する RequireJS の態度は実行前です
仕様準拠: RequireJS は AMD (非同期モジュール定義) 仕様に従い、Sea.js は CMD (共通モジュール定義) 仕様に従います。仕様の違いにより、2 つの API が異なります
4、ES6 モジュール
背景: Es6* より前には、JavaScript にはモジュール システムがありませんでした。大規模なプログラムを小さな相互依存ファイルに分割し、それらを簡単な方法でアセンブルすることは、大規模で複雑なプロジェクトの開発には非常に役立ちました。 。モジュールの依存関係読み込みの問題を解決するために、AMD、CMD、COMMONJS がクライアントに使用され、COMMONJS がサーバーに使用されます。 es6 の登場後、モジュールは関数として定義され、実装は非常にシンプルになり、既存の CommonJS および AMD 仕様を完全に置き換えて、ブラウザーとサーバーのユニバーサル モジュール ソリューションになることができます。 関連する推奨事項:
使用例: エクスポート (スロー) インポート (導入) デフォルトのエクスポート (他のモジュールがこのモジュールをロードするときに、インポート コマンドで匿名関数の任意の名前を指定できます)
以上がJS モジュール性を実装するにはどのような方法がありますか? jsのモジュール化の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

Vue.js は、今日のフロントエンド開発において非常に人気のあるフレームワークとなっています。 Vue.js が進化し続けるにつれて、単体テストの重要性がますます高まっています。今日は、Vue.js 3 で単体テストを作成する方法を検討し、いくつかのベスト プラクティスと一般的な問題と解決策を提供します。

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ 今日のインターネットの急速な発展の時代において、フロントエンド開発はますます重要になっています。 Web サイトやアプリケーションのエクスペリエンスに対するユーザーの要求がますます高まっているため、フロントエンド開発者は、より効率的で柔軟なツールを使用して、応答性の高いインタラクティブなインターフェイスを作成する必要があります。フロントエンド開発の分野における 2 つの重要なテクノロジーである PHP と Vue.js は、組み合わせることで完璧なツールと見なされます。この記事では、PHP と Vue の組み合わせと、読者がこれら 2 つをよりよく理解し、適用できるようにするための詳細なコード例について説明します。

クロスドメインは開発においてよく遭遇するシナリオであり、インタビューでもよく議論される問題でもあります。一般的なクロスドメイン ソリューションとその背後にある原則を習得すると、開発効率が向上するだけでなく、面接でのパフォーマンスも向上します。

インターネット技術の発展に伴い、フロントエンド開発の重要性がますます高まっています。特にモバイル デバイスの人気により、効率的で安定しており、安全で保守が容易なフロントエンド開発テクノロジーが必要です。 Go 言語は、急速に発展しているプログラミング言語として、ますます多くの開発者によって使用されています。では、フロントエンド開発に Go 言語を使用することは可能でしょうか?次に、この記事ではフロントエンド開発にGo言語を使用する方法を詳しく説明します。まずはフロントエンド開発にGo言語が使われる理由を見てみましょう。多くの人は Go 言語は

フロントエンド開発のインタビューでは、HTML/CSS の基本、JavaScript の基本、フレームワークとライブラリ、プロジェクトの経験、アルゴリズムとデータ構造、パフォーマンスの最適化、クロスドメイン リクエスト、フロントエンド エンジニアリング、デザインパターン、新しいテクノロジーとトレンド。面接官の質問は、候補者の技術スキル、プロジェクトの経験、業界のトレンドの理解を評価するように設計されています。したがって、候補者はこれらの分野で自分の能力と専門知識を証明するために十分な準備をしておく必要があります。

当初、JS はブラウザ側でのみ動作していたため、Unicode でエンコードされた文字列の処理は簡単でしたが、バイナリ文字列や非 Unicode エンコード文字列の処理は困難でした。バイナリは、コンピュータのビデオ/オーディオ/プログラム/ネットワーク パッケージの最低レベルのデータ形式です。
