[解決済み] Webpackを理解しようとする
質問
私はHTML/CSS/PHP/MYSQLのプログラマーで、現在javascriptを学ぼうとしています。現在使用しているウェブメール(オープンソース)のコードを徹底的に調べ、それがどのように動作するかを理解しようとすることでそれを行っています。私は、ページのさまざまな部分がどのように読み込まれるのかを理解しようとしています(PHPで得られるページの再読み込みなしで)。私が間違っていなければ、それを行うためにwebpackを使用しています。間違っていなければ、ページのすべての部分はモジュールとして読み込まれます。
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "webmail/v/0.0.0/static/js/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
これは、その魔法を可能にするコードの(一部)であるようです。さて、この後のコードでwebpackはこのように使われています。
AbstractSystemDropDownUserView.prototype.settingsClick = function ()
{
__webpack_require__(/*! Knoin/Knoin */ 5).setHash(Links.settings());
};
もし私が正しければ、この関数はsettingsClickに気に入られたボタンをクリックすると、モジュールをロードします。しかし、モジュール番号はどこで定義/割り当てられるのでしょうか?
私の道を切り開くためのどんな助けでも、大いに感謝します
解決するには?
Webpack は、プライマリ JS ファイルと、設定されたアドオン (追加のリソースを要求することができる) から始まり、これらのリソースをマージされたスクリプトにコンパイルし、さらに JS や CSS の変更時にホットスワップ更新するためのウォッチャーも備えています。 プロジェクトのソースコードを見ると、多くのCommonJS/Node-Styleモジュールとしてセットアップされていることがわかるだろう。
require
またはES6スタイルモジュールのインポート/エクスポートディレクティブを使用します。
いくつかの場所をご紹介します。
も見ておくといいでしょう。
- NPMの紹介 - NPMは、あなたが使いたいと思うほとんどのモジュールが存在する場所です。
- NodeJS - サーバーサイドのJS環境で、これらのツールの多くはnodeを介して動作します。
- ブラウザ化 - Webpackはbrowserifyとほぼ同じですが、より直接的なアプローチを好むかもしれません。
- ガルプ - Gulpはストリームベースのビルドツールです。webpackには独自のものがありますが、追加のアイデアを得るために見ておく価値があります。
- バベルJS - 旧6to5 - 現在のブラウザで最新のJS機能を使用できるようにします。
- ES5シム - IE8をサポートする必要がある場合は、これらが必要です。
Webpackはモジュールとnode/iojsのツールに依存し、extrasを使ったbrowserifyにも似ています。
関連
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み] テスト
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み] webpackでjQueryプラグインの依存関係を管理する
-
[解決済み] Jestを使用してES6モジュールのインポートをモックするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】WebSocket接続に失敗しました。WebSocket のハンドシェイク中にエラーが発生しました。予期しない応答コードです。400