検索
ホームページウェブフロントエンドjsチュートリアルモジュラーJavaScript:SystemJS&JSPMの初心者ガイド

モジュラーJavaScript:SystemJS&JSPMの初心者ガイド

キーテイクアウト

    JSPMおよびSystemJSを使用してプロジェクトを設定するプロセスには、ディレクトリの作成、NPMプロジェクトの初期化、JSPMのローカルのインストールが含まれます。セットアップが設定されると、JSPMとSystemJSを使用して、さまざまなソースからのパッケージ、ES6コードを輸送し、依存関係を処理します。 JSPMはモジュールバンドラーとしても機能し、すべてのファイルとライブラリを単一のファイルに組み合わせて、ファイルによって使用されるモジュールシステムをSystemJSスタイルモジュールに変換します。このプロセスはパフォーマンスに有益であり、生産アプリケーションで使用する必要があります。
  • この記事は、エイドリアン・サンドゥとマーク・ブラウンによって査読されました。 SetePointコンテンツを最高にするためにSitePointのピアレビュアーのすべてに感謝します!
  • 過去数年間、JavaScriptプログラミング言語は人気が爆発的に爆発しました。リッチなWebアプリケーションとハイブリッドモバイルアプリケーションの両方を開発するための頼りになる言語になりました。また、JavaScriptプロジェクトがますます複雑になっているため、開発者は言語の新しい要件を経験しています。これらの1つはモジュール性です
私が見る限り、モジュール性を達成する必要がある2つの側面があります。

著者のモジュール

依存関係としてインストールされている外部モジュール

ES6は、標準モジュールの構文をJavaScriptとローダー仕様にもたらします。これは良い前進ですが、執筆時点では、ES6モジュールをネイティブにロードできるブラウザはありません。これは、今日モジュールを使用したい場合は、モジュールバンドラーを使用する必要があることを意味します。

    現在の風景の概要については、JavaScriptモジュールの理解:バンドリングと輸送
  • など、パッケージをダウンロードしてアプリケーションに含めることができるパッケージマネージャーはありません。パッケージマネージャー(BowerやNPMなど)は、プロジェクトのWebサイトにアクセスすることなくフロントエンドの依存関係をダウンロードするのに役立ちますが、それはそれが進む限りです。 この記事では、これらの問題を克服するためにJSPMとSystemJSを使用する方法を確認します。

    jspmとsystemjsは何ですか?

    JavaScriptパッケージマネージャー(別名JSPM)は、SystemJS Universal Module Loaderの上で動作するパッケージマネージャーです。独自のルールセットを備えたまったく新しいパッケージマネージャーではなく、既存のパッケージソースの上に動作します。箱から出して、GithubとNPMで動作します。 BowerベースのパッケージのほとんどはGitHubに基づいているため、JSPMを使用してこれらのパッケージをインストールすることもできます。一般的に使用されるフロントエンドパッケージのほとんどをリストして、インストールを容易にするレジストリがあります。 NPMと同様に、インストール中にパッケージを開発および生産パッケージとして区別するために使用できます。

    SystemJSは、今日使用されている人気のある形式のいずれかで実行時にモジュールをインポートできるモジュールローダーです(CommonJS、UMD、AMD、ES6)。 ES6モジュールローダーポリフィルの上に構築されており、使用されている形式を検出して適切に処理するのに十分なほどスマートです。 SystemJSは、ES6コード(BabelまたはTraceurを使用)またはプラグインを使用してTypeScriptやCoffeeScriptなどの他の言語を透過することもできます。モジュールをインポートする前に、これらのことをSystem.config({...})内で構成します。

    jspmはSystemJSを使用してパッケージとその依存関係を管理するため、パッケージを適切な順序に配置することを心配する必要はありません。

    JSPMとSystemJSが何であるかがわかったので、それらの使用方法を見てみましょう。

    環境のセットアップ

    まだいない場合は、node.jsをインストールする必要があります。これを行うための特に簡単な方法は、バージョンマネージャー(NVMなど)を使用することであり、このクイックヒントに詳述されています。ノードで稼働したら、コマンドラインから以下を実行してJSPMをグローバルにインストールできます。

    JSPMコマンドラインインターフェイスを使用できます。プロジェクトをセットアップしましょう:

    これにより、New-Projectという名前のディレクトリが作成され、NPMプロジェクトの初期化とJSPMがローカルにインストールされます。これは、プロジェクトのJSPMバージョンをロックし、グローバルJSPMへのアップグレードがアプリケーションの動作を変更しないことを保証するため、推奨されることを行う方法です。 このアプローチのもう1つの利点は、プロジェクトが継続的な統合ビルドを通じて展開されている場合、サーバーにもグローバルにJSPMをインストールする必要があるのではなく、ローカルJSPMパッケージを使用するようにビルドプロセスを構成できることです。
    <span>npm install -g jspm
    </span>
    JSPM -Vを使用してローカルバージョンを確認できます。

    プロジェクトでJSPMを使用するには、次のコマンドを実行します。
    <span>mkdir new-project && cd new-project
    </span><span>npm init -y
    </span><span>npm install jspm --save-dev
    </span>

    いくつかの設定を求められ、Enterを押してデフォルト値を受け入れるか、異なる値を入力して変更します。次のスクリーンショットは、コマンドがデフォルト設定で実行されたときのインスタンスを示しています。

    ディレクトリの構造と構成

    これにより、プロジェクトのルートにconfig.jsという名前のファイルと、jspm_packagesという名前のフォルダーが作成されます。 jspm_packagesフォルダーの内側を覗くと、表示されます:

      a github sub-directory
    • npm sub-directory
    • SystemJSモジュールローダーのメインファイル
    JSPMがGitHubおよびNPMディレクトリを作成している理由は、これらのレジストリの上にピギーバックをかけて、単にNPMまたはGitHubパッケージをリクエストしたものをエイリアスするだけです。さらに、GitHubディレクトリにはGithubからJSONファイルをロードするSystemJSプラグインが含まれており、NPMディレクトリにはES6コードを透過するために必要なBabel関連のパッケージが含まれています

    config.jsファイルは主にSystemJS用です。開くと、さまざまなソースからのパッケージのパスに設定された構成オプション、バベルのオプション、パッケージの名前マップが簡単に参照できることがわかります。このファイルは、JSPMを使用して新しいパッケージをインストールすると自動的に更新されます。

    コマンドはPackage.jsonファイルも更新し、JSPMのセクションを追加します。 initコマンドでインストールされたバベルパッケージは、プロジェクトの開発セクションに追加されます。

    - saveオプションの有無にかかわらずJSPMコマンドを使用してインストールされた新しいパッケージは、Theedependenciesセクションに追加されるため、生産依存関係になります。 -save-devオプションを使用してインストールすると、依存関係が開発時間依存関係になり、devdependenciesセクションに保存されます。

    最後に、JSPMは、JSPMコマンドを使用してインストールされているすべてのパッケージに対して、config.jsファイルのマップセクションへのエントリを追加します。マッピングされた名前は、プロジェクト全体のJavaScriptファイルにライブラリをロードするために使用できます。パッケージの依存関係もマップセクションに追加されます。以下は、jqueryとjquery-uiのパッケージがどのようにマッピングされ、依存関係が定義されているかを示すconfig.jsファイルのマップセクションからのフラグメントです。
    <span>npm install -g jspm
    </span>

    興味のあるポイントとして、モジュールをインストールするときにこれらのマッピングを自動的に生成することもできます。

    これにより、アプリの他の場所に次のことを書くことができます。

    <span>mkdir new-project && cd new-project
    </span><span>npm init -y
    </span><span>npm install jspm --save-dev
    </span>
    jspmおよびsystemjs in action

    この記事に付随するために、私はシンプルなウィキペディア検索サンプルを作成しました。 GitHubリポジトリはこちらをご覧ください。 JSPM initコマンドのデフォルトオプションを使用してセットアップされるため、babelをES6トランスピラーとして使用します。また、JSPMを使用してインストールされているライブラリJQueryとBootstrapも使用します。ブートストラップにはjQueryが必要なため、jspmはconfig.jsファイルにマッピングを作成して、bootstrapを読み込む前にjqueryを読み込みます。

    <span>npm install -g jspm
    </span>

    リポジトリの名前が示唆するように、Wikipedia検索APIを照会し、ビューで受信したデータを表示します。 jQueryの$ .ajax()を使用してAPIに電話をかけ、ページに結果を表示し、モーダルポップアップに記事のスニペットを表示するリンクがあります。サンプルには、スクリプトフォルダーの下に3つのJavaScriptファイルがあります。

      Search.js:このファイルはAMDスタイルモジュールを使用します。 JQueryを依存関係としてロードし、Wikipedia Search APIにAJAX呼び出しを行います。モジュールは、他の消費モジュールがパラメーターで呼び出すことができる関数を返します。
    • summaryModal.js:このファイルはES6スタイルモジュールを使用します。 BootstrapのJavaScriptライブラリをロードします。次に、モーダルポップアップに表示する前に、逃げたHTMLを受け入れ、HTMLテキストをunescapeで受け入れる関数をエクスポートします。
    • display.js:このファイルは、CommonJSスタイルモジュールを使用します。上記のファイルの両方を依存関係としてロードします。 search.jsによって公開されたメソッドを呼び出して結果を取得し、このデータをUIのHTMLテーブルにレンダリングします。さらに、summaryModal.jsによって公開されたメソッドを使用して、テーブルのリンクボタンをクリックするとモーダルを表示します。
    • すでに述べたように、SystemJSはJavaScriptのすべてのモジュールシステムを理解しています。 systemjsを使用して上記の3つのファイルすべてをすべてロードできます。 これらのスクリプトを実行するには、HTMLページにSystem.jsとconfig.jsをロードする必要があります。その後、SystemJSモジュールローダーを使用してdisplay.jsファイルをロードします。このファイルはリポジトリ内の他のファイルを参照し、これらのファイルは必要なライブラリをロードするため、他のファイルをロードする必要はありません。
    • Systemjsは、Babelを使用してその場でES6ファイルを輸送し、ブラウザで実行します。これがこれがどのように見えるかの(わずかに単純化された)デモです。
    • ただし、その場での移動はパフォーマンスに悪いことであり、生産アプリケーションでは使用すべきではありません。 JSPMがモジュールバンドラーであることを忘れないでください。
    バンドリング

    次のコマンドを使用して、アプリケーション全体のバンドルを作成できます。

    このコマンドは次のとおりです
    <span>mkdir new-project && cd new-project
    </span><span>npm init -y
    </span><span>npm install jspm --save-dev
    </span>
    すべてのファイルとライブラリをbuild.js ファイルで使用されているモジュールシステムをSystemJSスタイルモジュールに変換

    デバッグ中にロードされるソースマップファイルを作成

    ここで、build.jsファイルをindex.htmlファイルにロードする必要があります。参照の更新されたセットは次のとおりです

    $ jspm <span>-v
    </span><span>0.16.34
    </span>Running against <span>local jspm install.
    </span>
    モジュールdisplay.jsをロードするためのインポートステートメントを削除しなかったことに注意してください。このステートメントはファイルをロードするのではなく、代わりにbuild.jsファイルで既に利用可能なSystemJSモジュールをロードします。

    プロジェクトのreadmeファイルの指示に従って実行できます。開発者ツールの個々のファイルのコードを閲覧して、それらをデバッグできます。

    結論

    JSPMとSystemJSの組み合わせは、依存関係のインストールとロードの統一された方法を提供します。このツールは、依存関係の管理を容易にするだけでなく、ドアを開けて、今日のブラウザで将来のモジュールシステムを使用します。私が実証したように、JSPMはセットアップと使用が簡単です。その人気の高まりに貢献している2つの理由。

    プロジェクトでJSPMを使用していますか?なぜ?なぜだめですか?以下のコメントでお知らせください。

    モジュラーJavaScript、SystemJS、およびJSPM

    に関するよくある質問(FAQ) ​​

    systemjsとwebpackはどちらもモジュールバンドラーですが、いくつかの重要な違いがあります。 SystemJSは、ES6モジュール、AMD、CommonJS、およびグローバルスクリプトをブラウザおよびNodeJSにロードするユニバーサルダイナミックモジュールローダーです。バンドラーというよりもモジュールローダーのようなものです。一方、Webpackは、最新のJavaScriptアプリケーション用の静的モジュールバンドラーです。アプリケーションのニーズが必要なすべてのモジュールを含む依存関係グラフを構築し、それらを1つ以上のバンドルにパッケージ化します。次のコマンドを使用してインストールできます。NPMインストールSystemJS。インストール後、 'Systemjs'からImport {System}を使用してプロジェクトにインポートできます。 SystemJSのパッケージマネージャー。パッケージのインストールと管理のプロセスを簡素化します。また、NPM、GitHub、およびその他のソースからパッケージをインストールする統一方法も提供します。 JSPMはトランスピレーションを処理することもできます。これにより、ES6またはTypeScriptでコードを書き込み、ES5に自動的に透過しています。 System.import()メソッドを使用できます。この方法は、モジュールに解決する約束を返します。例は次のとおりです。System.import( 'path/to/module.js')。then(function(module){/ * module */}を使用)。

    はい、systemjsはnode.jsで使用できます。ブラウザとnode.jsの両方で動作するユニバーサルモジュールローダーを提供します。これにより、クライアントとサーバー間で共有できるコードを作成できます。 SystemJS構成でモジュールのパスと依存関係を指定できます。モジュールがロードされると、SystemJSは依存関係も自動的にロードします。

    モジュラーjavaScriptを使用することの利点は何ですか?

    Modular JavaScriptはいくつかの利点を提供します。これにより、コードがより整理され、管理が容易になります。これにより、アプリケーションのさまざまな部分でコードを再利用できます。また、各モジュールを個別にテストできるため、コードを簡単にテストできます。この方法は、構成オプションを指定するオブジェクトを受け入れます。構成できるオプションには、パス、マップ、パッケージ、トランスピラーが含まれます。 Angular、React、およびVue.JS.これらのフレームワークのいずれかからモジュールをロードできるユニバーサルモジュールローダーを提供します。これは、特にユニバーサルモジュールローダーが必要なプロジェクトのために、JavaScriptエコシステムの重要な部分です。 JavaScriptとWebテクノロジーの継続的な開発により、SystemJSは開発者のニーズを満たすために進化し続ける可能性があります。

以上がモジュラーJavaScript:SystemJS&JSPMの初心者ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptアプリケーション:フロントエンドからバックエンドまでJavaScriptアプリケーション:フロントエンドからバックエンドまでMay 04, 2025 am 12:12 AM

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

Python vs. Javascript:どの言語を学ぶべきですか?Python vs. Javascript:どの言語を学ぶべきですか?May 03, 2025 am 12:10 AM

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワーク:最新のWeb開発のパワーJavaScriptフレームワーク:最新のWeb開発のパワーMay 02, 2025 am 12:04 AM

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

JavaScript、C、およびブラウザの関係JavaScript、C、およびブラウザの関係May 01, 2025 am 12:06 AM

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、型を使用してストリーミングしますnode.jsは、型を使用してストリーミングしますApr 30, 2025 am 08:22 AM

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

Python vs. JavaScript:パフォーマンスと効率の考慮事項Python vs. JavaScript:パフォーマンスと効率の考慮事項Apr 30, 2025 am 12:08 AM

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptの起源:その実装言語の調査JavaScriptの起源:その実装言語の調査Apr 29, 2025 am 12:51 AM

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

舞台裏:JavaScriptをパワーする言語は何ですか?舞台裏:JavaScriptをパワーする言語は何ですか?Apr 28, 2025 am 12:01 AM

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SecLists

SecLists

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン