1

Android 用の Titanium でアプリケーションを作成しています。1 つの JS ファイルに多くのコードが含まれています。コードを複数のファイルに分割してそれらを含めるためのphpのincludeのような機能があるかどうかを知りたいです。

ありがとう

4

2 に答える 2

2

CommonJS / RequireJSアプローチ、特にrequireコマンドを使用します。これは、Titaniumで大規模なシステムを処理するための(強く)推奨される方法であり、Titaniumに固有のJavaScriptモジュール化を処理するための多くのベストプラクティスとともに、Webサイトで十分に文書化されています。これに関するTitaniumのドキュメントは次のとおりです。

たとえば、ある種の「ビュー」をカプセル化するモジュールを作成するには、次のMyCustomView.jsコンテンツで名前が付けられたファイルにモジュールを配置します。

// MyCustomView.js
function MyCustomView(message) {
    var self = Ti.UI.createView({
        backgroundColor : 'red'
    });
    var label = Ti.UI.createLabel({
        text : message,
        top : 15,
        .... // Other initialization
    });

    // ... Other initialization for your custom view, event listeners etc.
    return self;
}

module.exports = MyCustomView;

これで、このモジュールを別のクラスで簡単に使用できるようになりました。これを/Resourcesフォルダーに入れ、モジュールを内部にロードapp.jsしてメインウィンドウに追加するとします。

// app.js
var MyCustomView = require('MyCustomView');
var myView = new MyCustomView('A message!');
Titanium.UI.currentWindow.add(myView);

このアプローチを使用して、カスタムビュー、再利用可能なコードのライブラリ、およびその他の必要なものを作成できます。もう1つの一般的なことは、多くの異なるヘルパー関数を持つUtilityクラスを持つことです。

// Utility.js
exports.cleanString = function(string) {
    // Replace evil characters
    var ret = string.replace(/[|&;$%@"<>()+,]/g, "");
    // replace double single quotes
    return ret.replace(/"/g, "''");
}

このメソッドは、次のように簡単に使用できます。

// app.js
var Utility = require('Utility.js');
Ti.API.info(Utility.cleanString('He##o W&orld$'));

私が使用するもう1つの一般的な方法は、ロードされる各モジュールが独自の機能コンテキストであるため、シングルトンパターンを実装することです。したがって、必要に応じて、値を永続化できます。

// ManagerSingleton.js
var SpriteManager = {
   count : 0
};

exports.addSprite = function() {
    SpriteManager.count++;
}

exports.removeSprite = function() {
    SpriteManager.count--;
}

ユーティリティとほぼ同じ方法でロードして使用します。

// app.js
var ManagerSingleton = require('ManagerSingleton');
ManagerSingleton.addSprite();

これは、グローバル変数を使用する代わりに、より洗練されたソリューションのようなものです。これらの方法は決して完璧ではありませんが、多くの時間とフラストレーションを節約し、すべてのサイズとタイプのアプリのTitaniumコードに深み、優雅さ、読みやすさを追加しました。

于 2012-10-08T00:28:46.773 に答える
1

Javascript の世界には 2 つの支配的なモジュール システムがあります。1 つは CommonJS で、2 番目は AMD です。どちらが最適で、どのような目的で使用されるかについては、多くの議論があります。CommonJS はサーバー側の JS に広く使用されていますが、AMD は主にブラウザー JS に使用されています。

RequireJS ( requirejs.org ) は、最も人気のある AMD システムのようです。

JS モジュール システムの詳細については、http: //addyosmani.com/writing-modular-js/を参照してください。

于 2012-10-07T19:20:47.047 に答える