2

私のアプリケーションには、ほぼ 100 以上の Web ページ (html ページ) があり、すべてのコンテナは、内部の JavaScript ライブラリを参照するスクリプトです。

たとえば、それらはすべて次のファイルをロードします。

http://server/application/map.js

ただし、map.js はjqueryandopenlayersおよびその他のものと連携する必要があります。

また、これらの依存関係を 100 以上のページに直接追加することはお勧めできません。実装はmap.jsいつか変更される可能性があるからです。

たとえば、今は使っていますが、いつかopenlayers使うかもしれません。その場合、100 以上のページを からにgoogle map変更する必要があります。openlaeyrsgoogle map

だから私は依存関係を追加できるのだろうmap.jsか?

もちろん、次のmap.jsようにスクリプトを直接追加できます。

map.js

((function(){
   addScript("jquery");
   addScript("openlayers");

   function addScript(){
     // add a script element to the head of the page 
   }
})();

ただし、js のダウンロード時間のために問題が発生する可能性があります。

代わりのアイデアは?

4

2 に答える 2

1

jQuery の$.getScript()の仕組みは、単純に ajax get リクエストを送信し、基本的evalにスクリプトをロードするために使用します。したがって、これを行うためにプレーンな古い JavaScript を使用する場合は、次のようなものを使用できます。

スクリプトをロードするためのプレーンな古い JavaScript アプローチ

function addScript(script)
{
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            eval(xmlhttp.responseText);
        }
    }
    xmlhttp.open("GET",script,true);
    xmlhttp.send();
}
addScript("path/to/jquery.js");
addScript("yourscript.js");

jQuery は、スクリプトに組み込みたい場合に備えて、eval に対するより優れたアプローチ (上記の例には含めていません) を使用します。

jQuery のより洗練されたバージョンの Eval:

globalEval: function( data ) {
        if ( data && jQuery.trim( data ) ) {
            // We use execScript on Internet Explorer
            // We use an anonymous function so that context is window
            // rather than jQuery in Firefox
            ( window.execScript || function( data ) {
                window[ "eval" ].call( window, data );
            } )( data );
        }
    },

他の方法

この記事では、javascript でスクリプトを動的にロードするための他のいくつかの方法について説明します。私の例や何かについて質問がある場合はお知らせください:)

于 2013-06-05T06:46:49.160 に答える