どうしてfunction(global,factory)はこんなに多くの先端ライブラリに応用されていますか?

1543 ワード

こんなに多いJavascriptライブラリの中で、global、factoryを関数として見ましたが、これはなぜですか?これはUMDモードです.このコードがあなたのライブラリの中で何をしているかは、下図を見て分かります.
 ┌──────────────────┐       ┌──────────────────┐
    │                  ▼       ▼                  │
    │    (function (global, factory) {            │
    │                                             │
    │                                             │
    │        /* deleted for clarity */            │
    │                 ┌───────────────────────────┘
    │                 │
    │    }(this, function () { 'use strict';
    │       │
    └───────┘
             /* */

         })
したがって、基本的には即座に関数を実行します.匿名関数を名前の関数に書き換えると、このコードの構造がより明確に見えます.
// rename function () { 'use strict' ...
function Vue () { 'use strict';
    /* */
}

// rename function (global, factory) ...
function UMD (global, factory) {
    /* deleted for clarity */ 
}

UMD(this, Vue);
globalは基本的に関数の外部から引用するとfactoryのグローバルオブジェクト(windowはブラウザとnode.jsに名前がない)を暴露します.factoryはライブラリオブジェクトを作成する関数で、根本的にfactoryはvue、jqなどの3つのライブラリの完成です.この構成をこのように書くと、必要でないグローバル変数と関数は作成されないので、グローバル領域を汚染し、他のライブラリ変数または関数名との衝突を回避することができます.なぜこのthisをglobalに割り当てるかというと、これはwindowがまったく保護されていないグローバル変数であり(これはなぜnode.jsが名前を付けていないのですか?)、そしてどの第三のライブラリも書き換えられます.知られていないサードパーティライブラリを使う場合は、ブラウザの元のグローバルオブジェクトを使用するには、thisという小さなテクニックが必要です.
借かんがみ:https://stackoverflow.com/que...