0

[可視性のために NativeScript Google グループからクロス投稿されました。]

TJ Van Toll の記事を読んだ後、XML UI 定義で使用したい UI コンポーネント用の独自のモジュールを作成することに着手しました。コンポーネントがネイティブ コンポーネントの JavaScript ラッパーであるため、少し複雑です。それ以外の場合はプロジェクトで TypeScript を使用しているため、ラッパー用の .d.ts があります。ここに私が持っているものがあります:

アプリ/モジュール/ラッパー/wrapper.d.ts:

declare module "wrapper" {
    import view = require("ui/core/view");

    export class Wrapper extends view.View {
        ...
    }
}

app/modules/wrapper/wrapper-common.ts:

import definition = require("./wrapper");

export class Wrapper extends view.View implements definition.Wrapper {
   .....
}

app/modules/wrapper/wrapper.{iOS,android}.ts:

import common = require("./wrapper-common");

export class Wrapper extends common.Wrapper {
    .....
}

アプリ/モジュール/ラッパー/package.json:

{ "name" : "wrapper",
  "main" : "wrapper.js" }

モジュールの命名規則については少し確信が持てません (つまり、最も深いディレクトリ名にする必要があるのか​​、それとも tns_modules に含まれる UI モジュールのようにフル パスにする必要があるのか​​?)、残りは正しいと思います。私が持っているXMLでは:

アプリ/メインページ/メインページ.xml:

<Page xmlns="http://www.nativescript.org/tns.xsd"
      xmlns:myns="modules/wrapper"
      loaded="pageLoaded" >
    <myns:Wrapper>

    </myns:Wrapper>
</Page>

現在、このコードを実行すると、モジュールを作成できないため、component-builder.js で例外が発生します。ただし、コール スタックでは、iOS ランタイム内のネイティブ メソッド __executeModule にいます。接線的な質問 (ただし、対処する価値のある質問の 1 つ) は、ユーザーが Xcode をデバイスに接続してランタイムをデバッグできるかどうかです。これはランタイムのrequire.jsにあるため、可能かどうかはわかりません。提案できるヘルプ/提案/より良いプラクティスは大歓迎です。これで数日間髪を引き裂いています。

4

1 に答える 1