序文: 1. コンセプト
2. モジュール化の利点
3. 複数のスクリプトタグを導入した後の問題
//インデックス.html <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <title>タイトル</title> <script src="jQuery.js"></script> <script src="module.js"></script> </head> <本文> <div>123</div> </本文> <スクリプト> myModule.foo(); myModule.bar(); コンソールにログ出力します。 myModule.data = 'xxxx'; myModule.foo(); </スクリプト> </html> //module.js IIFE (匿名関数の自己呼び出し) ;(関数(ウィンドウ、$){ データ = "www.baidu.com"; 関数foo(){ console.log(`foo() ${data}`); //ここではjQueryライブラリを使用する必要があります $('body').css('background', 'red') } 関数バー() { console.log(`bar() ${data}`); その他のFun(); } 関数otherFun() { コンソールにログ出力します。 } window.myModule = { foo, bar }; })(ウィンドウ、jQuery) 1. コモンJS
特徴:
文法:
アム
require.js の使用 <!-- index.html --> <script src="https://cdn.bootcdn.net/ajax/libs/require.js/2.3.6/require.js"></script> //依存関係のない module1 を定義する define('module1', () => { count = 0 とします。 const add = () => ++ count; const リセット = () => カウント = 0; const upperCase = 文字列 => string.toUpperCase() 戻る { 追加、 リセット、 大文字 } }) // module1 に依存する依存関係を持つ module2 を定義します 定義('モジュール2',['モジュール1'], (モジュール1) => { const showMsg = () => module1.upperCase('hello-amd'); 戻る { メッセージを表示 } }) <!-- HTML ファイルでモジュールを使用する --> <本文> <スクリプト> .config が必要です({ パス: { モジュール1: './modules/module1', モジュール2: './modules/module2' } }) 必要(['モジュール1', 'モジュール2'], (モジュール1, モジュール2) => { コンソール.log(モジュール1.add()) // 1 コンソール.log(モジュール1.リセット()) //0 console.log(module2.showMsg()) //HELLO-AMD }) </スクリプト> </本文> 3. CM
sea.js の使用 <script src="https://cdn.bootcdn.net/ajax/libs/seajs/3.0.3/sea.js"></script> //モジュール module1 を定義する 定義((require, exports, module) => { let string = '私は文字列です'; const readString = () => 'module1 show() ' + 文字列; // 外部に公開 exports.readString = readString; }) //モジュール module2 を定義する 定義((require, exports, module) => { exports.msg = "それは私です" }) //モジュールを定義する 定義((require, exports, module) => { //依存モジュールを導入する(同期) var module1 = require('./module1'); console.log(module1.readString()) // module1 show() 私は文字列です //依存モジュールを導入する(非同期) require.async('./module2', md2 => { console.log(`これは非同期的にインポートされます: ${md2.msg}`) //これは非同期的にインポートされます: It's me}) }) <!-- HTML ファイルはモジュールを使用します --> <本文> <スクリプト> seajs.use('./modules/module') </スクリプト> ES6 のモジュール性ES6 モジュールの設計思想は、モジュールの依存関係や入力変数、出力変数をコンパイル時に決定できるように、可能な限り静的にすることです。 CommonJS モジュールと AMD モジュールはどちらも、実行時にのみこれらのことを判断できます。
//mian.js エクスポートデフォルト{ 表示メッセージ() { console.log('ハハハハハ') } } export const msg = "満月と花が咲く美しい季節です!" //index.js import module1 from "./module1"; // export default に相当 モジュール1.showMsg() import { msg } from './module1'; //エクスポートに対応 コンソール.log(メッセージ) /*ヒント: HTML では <script type="module"> を使用しないでください import .....、クロスドメインの問題がありますが、vscode でプラグインをダウンロードするか、ローカル サービスを開始して解決できますが、詳細については説明しません。 </script>*/ JavaScript モジュール化の詳細な説明については、これで終わりです。JavaScript モジュール化に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
序文: Mybatis の特殊文字処理、Mybatis の xml ファイル内の特殊文字の処理、ここ...
目次1. セットアップ1. セットアップ関数の最初のパラメータ - props 2. 文脈2. セッ...
コードをコピーコードは次のとおりです。 <input type="text"...
目次序文🌟 1. APIの紹介2. 複数のデータソースの監視3. リスニングアレイ4. 監視対象5....
序文この記事は、私が最近仕事で遭遇した問題を記録したものです。アプリネイティブとフロントエンドのh5...
目次ミューテーションオブザーバーAPI特徴インターセクションオブザーバーAPI例えば画像の遅延読み込...
1. MySQLイメージを取得するターミナルから最新のMySQLイメージを取得するdocker pu...
とあるサイトからレンタルした仮想マシンの有効期限が近づいており、更新料が200元以上かかります。Al...
1 問題の説明Vue3 の統合 API は、defineComponent やその他の関数が認識でき...
現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now() mysql> now(...
場合によっては、SQL ステートメントが通常どおり、非常に速く実行される状況に遭遇することがあります...
最近、画像、ビデオ、CSS/JS などの静的リソースを配置するために nginx を使用する方法を学...
フロントエンドの初心者として、私は数日間フロントエンドをいじってみました。 。今日、私は自分が固く信...
この記事は主にInnoDBのロックに関する知識を素早く理解してもらうことを目的としています。 Roc...
目次配列分割代入オブジェクトの分解代入分割割り当ての適用変数の値の交換関数から複数の値を返すマップ構...