この記事でわかることは、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 サイトの他の関連記事を参照してください。

vscode自身是支持vue文件组件跳转到定义的,但是支持的力度是非常弱的。我们在vue-cli的配置的下,可以写很多灵活的用法,这样可以提升我们的生产效率。但是正是这些灵活的写法,导致了vscode自身提供的功能无法支持跳转到文件定义。为了兼容这些灵活的写法,提高工作效率,所以写了一个vscode支持vue文件跳转到定义的插件。

JavaScript 不提供任何内存管理操作。相反,内存由 JavaScript VM 通过内存回收过程管理,该过程称为垃圾收集。

Node 19已正式发布,下面本篇文章就来带大家详解了解一下Node.js 19的 6 大特性,希望对大家有所帮助!

选择一个Node的Docker镜像看起来像是一件小事,但是镜像的大小和潜在漏洞可能会对你的CI/CD流程和安全造成重大的影响。那我们如何选择一个最好Node.js Docker镜像呢?

本篇文章给大家整理和分享几个前端文件处理相关的实用工具库,共分成6大类一一介绍给大家,希望对大家有所帮助。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

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

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

ホットトピック









