0

Node.JS 用のテスト アドオン (インスタンス化されていない小さな Hello World アプリ) を作成しました。現在、プラグイン可能なアドオンをいじっています。現在、Hello World アドオンの機能にアクセスできるアドオンと、Hello World がプレゼンスの登録でプラグイン ホスト アドオンを呼び出すアドオンを作成しようとしています。

今のところ、私が判断できる唯一の方法は、.js ファイルが両方のアドオンを必要とし、次に登録のために Hello World アドオンを呼び出し、次に plugin-host 呼び出しを要求することです。要するに、コーディングは次のようになります。

var host = require('./pluginHost');
host.registerPlugin(require('./helloWorldPlugin').plugin());
host.registerPlugin(require('./fooBarBazPlugin').plugin());
host.registrationComplete();

実際には、もう少し構成コードが存在する可能性がありますが、これは現時点では概念にすぎません。したがって、上記のコードとpluginHostアドオン コードを使用して、そのオブジェクトから情報にアクセスしてダウンロードするにはどうすればよいでしょうか。に解析されるコードのプラグイン部分は、pluginHost利用可能な他のオブジェクトとクラスに関する情報、pluginHostおよび と other の間のメインライン IPC を含む関数の静的なコレクションになることに注意してくださいplugins

4

1 に答える 1

0

Righto、それを行う方法を発見しました

C++:

Handle<Value> registerPlugin(const Arguments &args) {
    HandleScope scope;
    Handle<Object> This = args.This();
    Handle<Context> context = Context::New();
    Handle<Object> object = This->Get(String::New("ObjectValueIWantKey"))->ToObject();

    if (object == Undefined()) {
        return Undefined();
    }

    Handle<Value> functionName = object->Get(String::New("SomeFunctionName"));
    if (functionName->IsFunction()) {
        Handle<Function> function = Handle<Function>::Cast(functionName);
        Handle<Value> fargs[1] = { String::New("ARG") };
        Handle<Value> methodResult = function->Call(object, 1, fargs);
    }

    Handle<Value> variableResult = object->Get(String::New("SomePropertyName"));

    ...
}

この例では、呼び出すhost.registerPlugin(require('./pluginObject'))ことにより、pluginHostライブラリがそれとインターフェイスし、他のシステムに含めることができます。

于 2013-07-03T15:18:52.057 に答える