如何避免在网站范围的javascript文件的顶部有很多条件实例?

时间:2013-04-09 11:23:34

标签: javascript

我在整个应用程序中使用了一个JS文件。它的顶部看起来像这样:

$(document).ready( function() {
    if( $('#element-a').length ) {
        var featureA = new ElementAFeature( $('#element-a') );
    }

    if( $('#element-b').length ) {
        var featureB = new ElementBFeature( $('#element-b') );
    }

    // repeat ad nauseam for elements C thru Z etc etc
});

// actual objects and logic go here

它有效,但它有点难看。没有在不同页面上运行不同的脚本,有什么方法可以整理它吗?

1 个答案:

答案 0 :(得分:1)

在每个页面中执行类似的操作

window.MYAPP = window.MYAPP || {};
window.MYAPP.element = $("page-element");
window.MYAPP.feature = new ElementXFeature(window.MYAPP.element);

然后将您的init脚本修改为

$(document).ready( function() {
   var feature = window.MYAPP.feature;
   //Use feature here.
});

如果您为每个页面编写了大量特定的init代码,您可能需要考虑同时使用全局init方法并为每个页面定义本地方法,并传递全局init所需的任何上下文。

window.MYAPP.initMethod = function(context) {}

//in global init
if (typeof window.MYAPP.initMethod === "function") {
    window.MYAPP.initMethod({ pageSpecificSetting : 0});
}