私はメインのJavaScriptファイルを持っています。他のファイルが依存しているcore.js
を呼び出します。依存するJavaScriptファイルが含まれているかどうかを確認
core.jsでは、依存ファイルに存在する必要があるオブジェクトを定義しています。
のCore.js:
(function(){
/* base package */
var core = window.core = function() {
// Throw an error, the core package cannot be instantiated.
throw new Error("A package cannot be instantiated");
};
})();
utils.js現在
/* utils package */
core.utils = function() {
// Throw an error, the core package cannot be instantiated.
throw("A package cannot be instantiated");
};
/**
* Utility: StringUtils
*/
core.utils.StringUtils = new Object();
core.utils.StringUtils.prototype = {
/**
* ltrim - Removes preceding whitespaces
*/
ltrim: function(value) {
var re = /\s*((\S+\s*)*)/;
return value.replace(re, "$1");
},
/**
* rtrim - Removes succeeding whitespaces
*/
rtrim: function(value) {
var re = /((\s*\S+)*)\s*/;
return value.replace(re, "$1");
},
/**
* trim - Removes preceding and succeeding whitespaces
*/
trim: function(value) {
return core.StringUtils.ltrim(core.StringUtils.rtrim(value));
}
};
、私は<script />
タグにIDタグを追加する
<script id="core.js" src="core.js" type="text/javascript"></script>
とチェックしていますそれは存在している新しいオブジェクトを定義する前にオブジェクトを削除してください。core
オブジェクト。
(function() {
if (typeof (core) == 'undefined') {
var script = document.getElementById("core.js");
if (script == null)
throw ("core.js is missing.");
else
throw ("Unknown Exception. core is undefined.");
}
})();
クロスブラウザとの互換性には注意が必要ですか?現在IE9とFF5で動作していますが、すべてのブラウザで動作することを確認したいと思います。
ファイルが含まれているかどうかを判断する方法がありますか?
「安い」代替案は、「必須」ファイル内にセンチネル変数: 'var core_is_loaded = true'を設定し、そのvarの存在をチェックし、適切な値を持つことです。 –
答えは実際にはありませんが、コア、core.utilsなどの関数をインスタンス化したくないのはなぜですか?単純なオブジェクトはできませんか? –
@Chetanデザインパターンは、Frank Zammettiの「実用的なJavaScript、DOM Scripting and Ajax Projects」の第3章に大まかに基づいています。適切なエラー処理のために、スクリプトを使用しているすべての人が、「オブジェクトがこのアクションをサポートしていません」の代わりに、間違っていたことを知るためのエラーを投げたかったのです。 – Utilitron