0

私のアプリケーションはこのメイン オブジェクトを使用します。ほとんどの作業はこのメソッドで行われることがわかります。問題は、すべてを 1 つのファイルに書き込もうとすると、このオブジェクトが大きくなりすぎることです。コードのデバッグが難しくなります。このオブジェクトを複数のファイルに分割する方法はありますか (各関数を 1 つのファイルに分割するなど)。また、これらの関数から displayArray、userOptions、およびクエリ変数にアクセスして変更できるようにしたいと考えています。
どんな種類のアドバイスも大歓迎です。ありがとう:)

application = {
    displayArray : new Array(),
    userOptions : new Array(),
    query : '', 
    status : false,

    initilize : function () {
        //its going to initialize displayArray, userOptions and status.
    },

    loadOptions : function () {
        //this function builds userOptions array
    },

    JSONConverter : function () {
      //this function uses query to builds displayArray  
    },

    display : function () {
       //this function will use displayArray to build HTML elements on page
    },

};
4

5 に答える 5

1

例えば:

 // file: application.js
(function (window, undefined) {
  var application = {
     // ...
  };
  window['application'] = application;
}(window));

// file: application-module1.js
(function (application, window, undefined) {
  var module_foo = {
     // ...
  };
  application['module_foo'] = module_foo;
}(application, window));

// file: application-module2.js
(function (application, window, undefined) {
  var module_bar = {
     // ...
  };
  application['module_bar'] = module_bar;
}(application, window));
于 2012-09-02T11:58:54.550 に答える
0

アプリケーションの「クラス」を1つのファイルで定義してから、プロトタイプを使用して各関数を別々のファイルに追加できます。

var application = function () { };

application.prototype.method1 = function (arg1) {
window.alert(arg1);
}

var a = new application();
a.method1('Hello, World!');
于 2012-09-02T12:12:12.530 に答える
0

すべての関数を個別のファイルに移動して、アプリケーションのプロトタイプに追加できます。

ファイル initialize.js:

function initialize () {
    this.displayArray =  new Array();
}

ファイルinitilize.js:

function() Application{
    this.userOptions = new Array();
    this.query = '';
    this.status = false;
    this.initialize();
}

Application.prototype.initialize = initialize;

このソリューションは、外部ファイルからのすべての機能でグローバル名前空間を汚染します。したがって、より大きなプロジェクトの場合は、使用を開始する必要があり、requirejsのような AMD ソリューションを使用する必要があります。

ファイル initialize.js:

define(function () {
    return function () {
        this.displayArray =  new Array();
    }
})

ファイルinitilize.js:

define(['initialize'], function (initialize) {
    function() Application{
        this.userOptions = new Array();
        this.query = '';
        this.status = false;
        this.initialize();
    }

    Application.prototype.initialize = initialize;
    return Application;
})
于 2012-09-02T12:03:55.130 に答える
0

あなたはできる!いくつかの .js スクリプトを作成し、次のように html ファイルに埋め込みます。

<head>
    <script type="text/javascript" src="script1.js"></script>
    <script type="text/javascript" src="script2.js"></script>
</head>

これは、その方法の良い例です。(ソース

于 2012-09-02T11:58:05.090 に答える
0

抽象.js

function abstractClass(construct_options){{

}

someObject.js

someObject.prototype = new abstractClass();
someObject.prototype.foo = function(){


}

otherObject.js

otherObject.prototype = new abstractClass();
otherObject.prototype.toe = function(){


}

さらに、次のようにすることができます:

var a = new someObject();
var b = new otherObject();
于 2012-09-02T11:59:10.867 に答える