Webpack モジュールを使用してライブラリをパッケージ化する原理と実装
この記事では主に webpack 組織モジュールのパッケージ化ライブラリの原理と実装について紹介し、参考にさせていただきます。
前回の記事では、JS モジュールをパッケージ化する Webpack の基本原理を分析しました。紹介されたケースは最も一般的な状況です。つまり、複数の JS モジュールとエントリー モジュールが 1 つのバンドル ファイルにパッケージ化されており、ブラウザーやブラウザーで直接使用できます。他の JavaScript エンジンによる実行は、完全な実行可能ファイルを生成する直接コンパイルと同等です。ただし、別の非常に一般的な状況があります。つまり、JavaScript ライブラリを構築して公開したい場合です。たとえば、npm コミュニティで独自のライブラリを公開する場合、Webpack には対応する構成が必要となり、コンパイルされたコードは若干異なります。 。
前の記事と同様に、この記事では主に Webpack の生成されたコードを分析し、それを組み合わせて、ライブラリをコンパイルする際の Webpack のライブラリ設定オプションの特定の役割を説明します。対応する公式ドキュメントはここにあります。
JS を作成するためのライブラリ
簡単なケースから始めましょう。単純なライブラリ util.js を作成します。実際には役に立たず、純粋に教育の参考のみを目的としています。 。 。
次に、Webpack の設定を書きます:
import $ from 'jquery' function sayHello() { console.log("Hello"); } function hideImages() { $('img').hide(); } export default { sayHello: sayHello, hideImages: hideImages }
ただし、これだけでは不十分です。出力ファイルはすぐに実行される関数であり、最後に util.js のエクスポートが返されます。前回の記事で分析した結果、最終的に生成されたバンドルのコード構造はおおよそ次のようになります:
// 入口文件 entry: { util: './util.js', } // 输出文件 output: { path: './dist', filename: '[name].dist.js' }
実行されれば終了です。util.js のエクスポート部分を返すだけです。必要なのは以下のことです。この戻り値をコンパイル済みファイルの module.export に渡すと、コンパイル済みファイルは他の人がインポートできるライブラリになります。したがって、取得したいコンパイル済みファイルは次のようになります:
(function(modules) { var installedModules = {}; function webpack_require(moduleId) { // ... } return webpack_require('./util.js'); }) ({ './util.js': generated_util, '/path/to/jquery.js': generated_jquery });
このような結果を得るには、Webpack 設定の出力部分にライブラリ情報を追加する必要があります:
module.exports = (function(modules) { var installedModules = {}; function webpack_require(moduleId) { // ... } return webpack_require('./util.js'); }) ({ './util.js': generated_util, '/path/to/jquery.js': generated_jquery });
ここで最も重要なことは libraryTarget です。現在 commonjs2 形式を使用すると、上記のコンパイル結果が得られます。これは、Webpack ライブラリが最終出力を CommonJS 形式でエクスポートすることを意味し、これによりライブラリのリリースが実現します。
その他の公開形式
commonjs2 に加えて、libraryTarget には他のオプションもあります:
// 入口文件 output: { path: './dist', filename: '[name].dist.js', library: 'util', libraryTarget: commonjs2 }
さまざまなオプションを使用すると、コンパイルされたファイルをさまざまな JavaScript 実行環境で使用できます。ここでは、Tiger Balm umd 形式の出力がどのようになるかを直接確認します。
var (默认值,发布为全局变量) commonjs commonjs2 amd umd
は、さまざまな異なるケースを処理する必要があるため、前の commonjs2 の状況よりもはるかに複雑ですが、実際には次の部分も同様です。最も重要なのは最初の数行で、これは umd モジュールを記述する標準的な方法です。渡されたファクトリ関数 (実際にはモジュールをロードする関数) を実行し、返された結果をさまざまな動作環境に応じて対応するオブジェクトに渡します。たとえば、var は結果をグローバル変数として設定します。これは、ブラウザが

ホット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)

ホットトピック









Vue は、インタラクティブで効率的な Web アプリケーションを迅速に構築するのに役立つ優れた JavaScript フレームワークです。 Vue3 は、多くの新機能が導入された Vue の最新バージョンです。 Webpack は現在最も人気のある JavaScript モジュール パッケージャーおよびビルド ツールの 1 つで、プロジェクト内のさまざまなリソースの管理に役立ちます。この記事では、Webpack を使用して Vue3 アプリケーションをパッケージ化してビルドする方法を紹介します。 1.Webpackをインストールする

Caddy の概要 Caddy は強力で拡張性の高い Web サーバーであり、現在 Github 上に 38,000 以上のスターが付いています。 Caddy は Go 言語で書かれており、静的リソースのホスティングとリバース プロキシに使用できます。 Caddy には以下の主な特徴があります: Nginx の複雑な構成と比較して、元の Caddyfile 構成は非常にシンプルです; 提供する AdminAPI を通じて構成を動的に変更できます; デフォルトで自動 HTTPS 構成をサポートし、自動的に適用して構成できますHTTPS 証明書; 数万のサイトのデータに拡張可能; 追加の依存関係なしでどこでも実行可能; Go 言語で記述されているため、メモリの安全性がより保証されます。まずはCentOに直接インストールします

顔面遮蔽弾幕とは、映像内の人物を遮ることなく大量の弾幕が浮遊し、人物の背後から浮遊しているように見せることです。機械学習は数年前から普及していますが、これらの機能がブラウザでも実行できることは多くの人に知られていません。この記事では、ビデオ連発における実際的な最適化プロセスを紹介します。記事の最後に、適用可能なシナリオをいくつか示します。このソリューションを開くことを望んでいます。いくつかのアイデアがあります。 mediapipeDemo (https://google.github.io/mediapipe/) は、顔ブロック弾幕のオンデマンドアップアップロードの主流の実装原理を示していますサーバーのバックグラウンド計算により、ビデオ画面内のポートレート領域を抽出し、SVG ストレージに変換しますクライアントがビデオを再生している間、サーバーから SVG をダウンロードし、弾幕、ポートレートと組み合わせる

JavaAPI 開発における Web サーバー処理に Jetty7 を使用する インターネットの発展に伴い、Web サーバーはアプリケーション開発の中核部分となり、多くの企業でも注目を集めています。増大するビジネス ニーズを満たすために、多くの開発者が Web サーバー開発に Jetty の使用を選択しており、その柔軟性と拡張性は広く認識されています。この記事では、JavaAPI 開発における Jetty7 の使用方法を紹介します。

まず、frpって何?という疑問があると思います。簡単に言うと、frp はイントラネット侵入ツールであり、クライアントを設定すると、サーバー経由でイントラネットにアクセスできるようになります。現在、私のサーバーは Web サイトとして nginx を使用しており、ポート 80 が 1 つだけあります。では、FRP サーバーもポート 80 を使用したい場合はどうすればよいでしょうか?クエリ後、nginx のリバース プロキシを使用してこれを実現できます。追加: frps はサーバー、frpc はクライアントです。ステップ 1: サーバーの nginx.conf 構成ファイルを変更し、次のパラメータを nginx.conf の http{} に追加します。server{listen80

フォーム検証は Web アプリケーション開発において非常に重要なリンクであり、フォーム データを送信する前にデータの有効性をチェックして、アプリケーションのセキュリティ脆弱性やデータ エラーを回避できます。 Web アプリケーションのフォーム検証は、Golang を使用すると簡単に実装できます。この記事では、Golang を使用して Web アプリケーションのフォーム検証を実装する方法を紹介します。 1. フォーム検証の基本要素 フォーム検証の実装方法を紹介する前に、フォーム検証の基本要素が何であるかを知る必要があります。フォーム要素: フォーム要素は

Cockpit は、Linux サーバー用の Web ベースのグラフィカル インターフェイスです。これは主に、初心者/熟練ユーザーにとって Linux サーバーの管理を容易にすることを目的としています。この記事では、Cockpit アクセス モードと、CockpitWebUI から Cockpit への管理アクセスを切り替える方法について説明します。コンテンツ トピック: コックピット エントリ モード 現在のコックピット アクセス モードの確認 CockpitWebUI からコックピットへの管理アクセスを有効にする CockpitWebUI からコックピットへの管理アクセスを無効にする まとめ コックピット エントリ モード コックピットには 2 つのアクセス モードがあります。 制限付きアクセス: これは、コックピット アクセス モードのデフォルトです。このアクセス モードでは、コックピットから Web ユーザーにアクセスできません。

Web 標準は、W3C およびその他の関連組織によって策定された一連の仕様とガイドラインです。HTML、CSS、JavaScript、DOM、Web アクセシビリティおよびパフォーマンスの最適化の標準化が含まれます。これらの標準に従うことで、ページの互換性を向上させることができます。 、メンテナンス性とパフォーマンス。 Web 標準の目標は、Web コンテンツをさまざまなプラットフォーム、ブラウザー、デバイス上で一貫して表示および操作できるようにして、より優れたユーザー エクスペリエンスと開発効率を提供することです。
