Hello, Microsoft Ajax Library!
- クライアントスクリプトローダで必要なファイルだけをロード

Microsoft Ajaxクライアントのライブラリは、複数のJavaScriptファイルに分割された。これにより、実装する処理に必要なJavaScriptファイルだけを個別にダウンロードして使用できるようになった。今回の更新であたらしく用意されたクライアントスクリプトローダを利用すれば、分割されたJavaScriptファイルを手動で順番通りにロードするように記述することなく、簡単な記述で処理に必要なファイルだけをただしい順番でロードできるようになる。

Webブラウザで成果物にふくまれているサンプル、/Preview6Samples/WebSite/0_LoadingFrameworkScripts/3_UsingScriptLoader.htmにアクセスする。

Safariで3_UsingScriptLoader.htmにアクセス

3_UsingScriptLoader.htm内の「スクリプト部分」を抜き出す。

3_UsingScriptLoader.htm スクリプト部分

    <script src="../Scripts/MicrosoftAjax/start.debug.js" type="text/javascript"></script>
    <script src="../Scripts/ACT/ACTRegisterExtended.js" type="text/javascript"></script>

    <script type="text/javascript">
        // Set Sys.loader.debug to true if you want the loader to load debug versions
        // Sys.loader.debug = true;

        // Data
        var gallery = [
            { Name: "Morro Rock"          },
            { Name: "Seagull reflections" },
            { Name: "Pier"                },
            { Name: "Giraffe Zoom"        },
            { Name: "Oryx"                }
        ]

        // Specify what scripts or components are required (using Sys.components or Sys.scripts).
        Sys.require([Sys.components.dataView, Sys.components.watermark]);

        // The onReady callback will be called when the DOMReady event has fired,
        // and when any dynamically loaded scripts have loaded - as a result of
        // Sys.require(...).
        Sys.onReady(function() {

            // Create the DataView control and attach to imagesListView ul element
            Sys.create.dataView("#imagesListView",
                {data:gallery}
            );

            // Create the Watermark and attach to the images galleryTitle input element
            Sys.create.watermark(".galleryTitle",
                {
                    WatermarkText: "Add title here...",
                    WatermarkCssClass: "watermarked"
                }
            );
        });

   </script>

実際に<script>タグでJavaScriptファイルをロードするように明示しているのは「start.debug.js」「ACTRegisterExtended.js」の2ファイルのみだ。この<script>タグでロードするファイルを指定している以外に、Sys.require()で「Sys.components.dataView()」「Sys.components.watermark()」の動作に必要なコンポーネントファイルをロードするように記述している。実際にWebインスペクタを使って、どのファイルをインクルードしているかを確認してみよう。

Webインスペクタのリソースタブで、ロードされているファイルを確認。<script>タグで指定した以外に、処理に必要なJavaScriptファイルがロードされていることがわかる

参考: 「Sys.require(...)」をコメントアウトして表示した場合

分割されたJavaScriptファイルを手動でロードする場合、記述が面倒なだけでなくロードする順番も考慮しなければならず、ミスが起きやすい。クライアントスクリプトローダを使えば、安全で手軽に必要なJavaScriptファイルだけをロードできるようになる。独自ライブラリも登録でき、活用方法はさまざまだ。

このほかMicrosoft Ajax Libraryの使い方についてはScott Guthrie氏のブログ記事や成果物にふくまれているサンプルファイル・マニュアル(CHM形式)を参照されたい。