検索
ホームページウェブフロントエンドjsチュートリアルNodejs またはブラウザで ESM コードを直接実行する方法

#Nodejs またはブラウザで ESM コードを直接実行するにはどうすればよいですか?次の記事では、ESM コードを Nodejs またはブラウザーで実行する方法を紹介します。

Nodejs またはブラウザで ESM コードを直接実行する方法

Commonjs

    CommonJs はステートメントを動的にロードでき、コードは実行時に発生します
  • CommonJs がエクスポートした値はコピーであり、変数汚染の原因となるトラブルシューティングが困難です。
ES モジュール (以下、esm と呼びます)

    ESM は静的であり、コードはコンパイル時に発生します
  • ESM エクスポート 参照値の前にマッピング関係があり、値は読み取り可能であり、変更できません。 参考
  • CommonJs および Es モジュールとは何ですか?違いは何ですか?
#esm は JavaScript モジュール性の未来です。それは、変数の汚染、コードのメンテナンス、コードの依存関係の問題を解決できるからです。コードがより科学的になります。これが、deno がデフォルトで esm を使用する理由です。

本題に戻りますが、esm コードを Nodejs またはブラウザで直接実行する方法はありますか? これは興味深い実用的な質問です。 [推奨学習: 「

nodejs チュートリアル 」]

許可する方法

1. コンパイル ツールを使用して esm## を実行します#最も一般的な方法は、

webpack

などのパッケージ化ツールを babel で使用することです。 webpack や vue の人気により、これらのツールは標準的なものになっているように見えますが、webpack の欠点も明らかであり、commonjs と esm が混在するため、コードの記述に多少の不規則性が生じることがあります。通常、ビジネス コードに出現し、antd3 などのよく知られたサードパーティ コンポーネント ライブラリにも存在します。 および

rollup

は ES6 構文仕様に基づいてコンパイルされており、軽量かつコンパクトで、npm ライブラリのパッケージ化に非常に適しています。 esbuildswc などの新しいパッケージング ツールでもコンパイルとパッケージ化を実装できますが、速度はますます高速になっていますが、コンパイル プロセスは依然として必要です。これらのリポジトリの非常に重要な機能は、esm 構文の使用です。 上記のツールは esm 構文のコンパイルに適用できますが、一部の cli ツールや単純なマイクロサービスなど、パッケージ化とコンパイルという時間のかかるプロセスを必ずしも必要としないプロジェクトも数多くあります。 ESM の効率的かつ正確な実行を保証する コードはどうでしょうか?

2. サードパーティのライブラリを使用して esm を実行する

Nodejs のバージョンが低い場合は、いくつかのツールを使用できます。ツールを使用する方法はいくつかあります。 1 つはモジュール ローダー、もう 1 つはコマンド ライン (略して cli) です。

Module Loader では、サードパーティが提供する esm パッケージをプリロードできる

standard-things/esm

を紹介します。今後はバベルレス、バンドルレスにすることができます。大規模なコンパイルツールを使用せずに、esm コードを直接実行できます。

node -r esm index.js
同様に、

egoist/esbuild-register

esbuild のサポートにより、このライブラリでもモジュール ローダーの効果を実現できます。esbuild の高性能機能を利用して、コードより効率的に実行されます。

node -r esbuild-register index.js
コマンド ラインは、カプセル化された cli に基づいており、モジュールの前処理の別の形式にすぎません。

babel-node

babel 構文を直接利用して、esm コードを実行します。 babel 自体は依然として js の実装であるため、その公式ドキュメントには、メモリ使用量が高くなるため、運用環境での使用は推奨されないと記載されています。これは、このタイプのツールでよくある問題でもあります。

babel-node index.js
同様に、

esno

esm コードをコマンド ラインで直接実行できます。原理はesbuildに基づいています。 esbuild は go 言語で実装されているため、メモリ使用量の多さの問題を大幅に解決し、一定の実行パフォーマンスを確保できます。

esno index.ts
esmo index.ts
このタイプのサードパーティ ウェアハウスは、実用性や安定性ではなく、利便性のために存在しており、低バージョンの Nodejs および非運用環境での使用に適しています。 ESM コードを効率的に実行するにはどうすればよいですか?

3.Native Nodejs は esm を実行します

ノード バージョン 13.2.0 は ES モジュール機能の正式なサポートを開始します

所以利用 Native Nodejs 环境运行 esm 代码是非常必要的,高版本的 Nodejs 提供了直接运行 esm 的功能,这里建议使用 lts14 版本。有两种方式运行 esm 代码:

第一种,package.json 中填写 type: "modules",表明模块的类型。此后,直接运行node index.js即可。

// pakage.json
{
  ...
  "type": "modules"
}

第二种,则是将文件名改成.mjs,标明该文件是 esm 代码。这两种方式最大的区别则是模块作用域。前者是包的作用域,它的声明是以 package 为维度。后者则是以文件为维度,不受限于包的作用域。

如何在浏览器运行 esm

Nodejs またはブラウザで ESM コードを直接実行する方法

浏览器的情况有别于 Nodejs 环境,在大部分的新版本浏览器都支持 esm 的运行。esm 级别的代码编译和打包,可以有效地减少包的体积和资源传输速度。这也是为什么像 vite 这样的框架会采用现代浏览器的打包模式(外加 legacy 兼容模式)的原因。具体的原理是在 html 当中的 script 标签加入type="module" 则表明它引入的是 esm 代码,当旧浏览器没法支持 esm 的情况下,它会读取nomodule script中的地址,读取兼容版本的 js 代码。这样一来,可以有效地减少大部分浏览器加载的 js 体积,又保证了老浏览器的兼容性问题。

<script type="module" src="dist/index.js"></script>
<script nomodule src="dist/index.legacy.js"></script>

总结

如今 Nodejs 和浏览器环境都能对 esm 语法有了很好的 Native 支持。作为前端工程师的我们,应该要保持着技术的前瞻性,在写一个仓库的时候,我们要想到要用 typescript,esm 还是 common.js 呢?为什么我们不选择比较新的 js 运行环境,迎接 Javascript 的第三个时代,参考《ESM Import 与 Bundleless》

更多编程相关知识,请访问:编程视频!!

以上がNodejs またはブラウザで ESM コードを直接実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は掘金社区で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptをインストールするにはどうすればよいですか?JavaScriptをインストールするにはどうすればよいですか?Apr 05, 2025 am 12:16 AM

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

クォーツでタスクが開始される前に通知を送信する方法は?クォーツでタスクが開始される前に通知を送信する方法は?Apr 04, 2025 pm 09:24 PM

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?Apr 04, 2025 pm 09:21 PM

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?Apr 04, 2025 pm 09:18 PM

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...

TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?Apr 04, 2025 pm 09:15 PM

複数のリンクの同時ゲットリクエストを作成し、結果を返すために順番に判断する方法は? TamperMonkeyスクリプトでは、複数のチェーンを使用する必要があることがよくあります...

See all articles

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

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1

メモ帳++7.3.1

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 中国語版

SublimeText3 中国語版

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