[可視性のために 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にあるため、可能かどうかはわかりません。提案できるヘルプ/提案/より良いプラクティスは大歓迎です。これで数日間髪を引き裂いています。