知識エンジニアフルスタックポイントの概要 - モジュラー詳細

## JSモジュラー


モジュラー*感謝
*?モジュールとは何ですか
  *いくつかのブロック(ファイル)にパッケージ化一定のルール(仕様)に基づいて、複雑なプロセスになるだろう、と合わせ
  * /プライベート実装は唯一にある内部データブロック外部露光外部の他のモジュールと通信するいくつかのインタフェース(メソッド)は
*構成されるモジュール
  *データ--->内部属性は、
  操作データの振る舞いを* --->内部関数
*モジュラー
  *コーディングがブロックに係る符号化ですプロジェクト全体は、モジュラープロジェクトです


モジュラー進化*
  *グローバル機能モード: 
    *エンコーディング:グローバル変数/関数
    問題:汚染グローバル名前空間の名前の競合/がちなデータが安全ではないです
  *名前空間モード: 
    *エンコーディング:データ/オブジェクトの動作がカプセル化
    *ソリューション:(グローバル変数を減らす)名前の重複
    *質問:安全でないデータ(外部データはモジュール内で直接変更することができます)
  *生命維持モード/拡張
    *生命維持:すぐに関数式を呼び出す--->無名関数からの呼び出し
    *コード:挙動データとインタフェースウィンドウに属性を追加することによって、内部機能にカプセル化が外部に露出されているが、
    *頼る導入:モジュールに依存するパラメータは関数形式を導入し
      、 `` `
      (関数(ウィンドウ、モジュール2){
        VARデータ=「atguigu.com '
        関数foo(){
           module2.xxx()
           はconsole.log('のfoo() '+データ)
        }
        関数bar(){
           にconsole.log('バー()「+データ)
        }
        
        window.module = {FOO}
      })(ウィンドウ、モジュール2)
      `` `


*モジュラー仕様


  CommonJS *
    *のNode.js:サーバー
    * Browserify:また、ブラウザのJSパッケージツールと呼ばれる
    基本的な構文を*:
      *定義された露光モジュール:輸出
        `` `
        exports.xxx値=
        module.exportsは値=
        ` ``
      インテークモジュール必要:
        `` `
        VARモジュールは=(「モジュール/モジュール相対パス」)が必要です
        ` ``
    *導入モジュールは、どのような時に起こったのか?
      *ノード:実行時に、動的な同期プル
      * Browserifyを:モジュールは/実行前にコンパイルされています(モジュールの依存関係に含まれて来ている)翻訳後プロセシング/充填し、 
                  生成されたパックJSを実行するには、リモート・ランタイム・モジュールの導入に依存する必要から存在していません


  * AMD:ブラウザ
    * require.js
    *基本的な構文
      *定義露出モジュール:定義([依存モジュール名]、関数(){リターンオブジェクトモジュール})
      *導入モジュール:必要([ 'モジュール1'、「2モジュール''モジュール3 ']、関数(M1、 M2){// オブジェクト利用モジュール})
      *設定: 
        `` `
        require.config({
          //ベースパス
          baseUrlに:' JS / '
          //パス名を識別マッピング
          パス:{
            'モジュール1': 'モジュール/モジュール1'、
            'モジュール2': 'モジュール/モジュール2'、
            '角度': 'LIBS /アンギュラ'、
            'アンギュラメッセージ':」LIBS / angular-メッセージ
          }、
          //非AMDモジュール
          シム:{
            '角度':{
                輸出: '角度'
            }
            'アンギュラメッセージ':{
                輸出: 'アンギュラメッセージ'、
                DEPS:[ '角度']
            }
          }
        })
        `` `


  * CMD:ブラウザ
    * sea.js
    *基本的な構文
      *定義露出モジュール: 
        `` `
        (関数(必要、Module1のは、)輸出DEFINE {
          依存モジュールでは、導入が必要な
          モジュールModule1のを露出させるために/輸出
          exports.xxx =値
        } )
        `
      *使用モジュールseajs.use([ 'モジュール1'、 'モジュール2'])


  ES6のため*
    * ES6ための組み込みモジュール式の実装
    *基本的な構文
      *定義された露光モジュール:エクスポート
        *オブジェクトさらす: 
          `` `
          エクスポート・デフォルト・オブジェクトを
          `
        *複数の露光: 
          `
          輸出VAR = XXX VALUE1
          輸出のlet YYY = VALUE2の
          
          VaRのXXX = VALUE1
          LETのYYY = value2の
          エクスポート{XXX、YYY}
          ``
              
      *モジュールを使用して導入:インポート
        *デフォルトモジュール:
          `
          'モジュールパス/モジュール名'からインポートXXXを
          `
        *他のモジュールを
          `
          インポート{XXX、YYY}「パスモジュール/モジュール名」から
          インポート*「モジュールパス/モジュール名」からのModule1として
          `` `
    *質問:すべてのブラウザが直接ES6モジュラー文法を識別することはできません  
    *解決策:
        *使用バベルがES6ます---> ES5(CommonJS使用) - -ブラウザが直接分岐ではありません
        * Browserifyを使用--->パッキングプロセス----ブラウザが実行することができます

おすすめ

転載: www.cnblogs.com/kathyhong/p/11241898.html