Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

SwitchModulePattern

uupaa edited this pageOct 23, 2015 ·3 revisions

JavaScript の global 空間に同じ名前のモジュールを複数回ロードしてしまうと、名前の取り合い(上書き)が発生し、大変困った事になります。WebModule には、そのような名前空間の取り合いを回避し、モジュールを多重ロードする仕組み(SwitchModulePattern)があります。

以下のコードは、"MyExample" in GLOBAL が true ならalias = "MyExample_"; を行い、false ならalias = "MyExample"; を行っています。

(functionmoduleExporter(moduleName,moduleClosure){// http://git.io/WebModulevaralias=moduleNameinGLOBAL ?(moduleName+"_") :moduleName;// switchvarentity=moduleClosure(GLOBAL);GLOBAL[alias]=entity;})("MyExample", ...){});

SwitchModulePattern には、以下の使いどころがあります。

  1. 後からロードしたモジュールが、既に動作しているモジュールを上書きせずにすみます

    • [A] 先に読み込んだモジュールは GLOBAL["MyExample"] = MyExample; としてロードします
    • [B] 後から同じモジュールは、GLOBAL["MyExample_"] = MyExample; としてロードします。先にロードしたモジュールの動作を阻害しません
    <scriptsrc="lib/MyExample.js"></script><!-- [A] --><scriptsrc="lib/MyExample.js"></script><!-- [B] -->
  2. Minifyしていないコードと、Minify後のコードをGLOBAL以下に共存させ同時にテストできます

    • [C] GLOBAL["MyExample"] に Minify前のモジュールをロードしテストします
    • [D] GLOBAL["MyExample_"] に Minify後のモジュールをロードしテストします
    <scriptsrc="lib/MyExample.js"></script><!-- [C] --><scriptsrc="release/MyExample.min.js"></script><!-- [D] -->
Clone this wiki locally

[8]ページ先頭

©2009-2025 Movatter.jp