在NativeScript UI声明中使用外部模块

时间:2015-05-18 21:12:43

标签: typescript telerik-appbuilder nativescript

[Cross发布自NativeScript Google小组以获取可见性。]

在阅读了TJ Van Toll的article后,我开始为我想要在我的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 {
        ...
    }
}

应用/模块/包装/包装-common.ts:

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

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

应用/模块/包装/包装{的iOS,机器人} .TS:

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

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

应用/模块/包装/的package.json:

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

我有点不确定模块的命名约定(即它应该只是最深的目录名,还是应该像tns_modules中包含的UI模块中的完整路径?)但我认为其余的这是正确的。在XML中我有:

应用/主页/主page.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中。一个切线问题(但有一个值得解决的问题)是,当用户将Xcode附加到设备并调试运行时时,我们可以吗?这是在运行时的require.js中,所以我不确定它是否可行。任何可以提出的帮助/建议/更好的做法将不胜感激。在这一天上,我的头发被撕掉了几天。

1 个答案:

答案 0 :(得分:0)

google groups上回答。

嘿克里斯,

命名惯例非常简单:

仅代码组件(无XML):

... 
xmlns:myns="modules/wrapper" 
... 
<myns:Wrapper 
... 

在这种情况下,我们将要求()指定的路径(&#34; modules / wrapper&#34;在这种情况下),并将寻找&#34; Wrapper&#34;在返回的导出中(如果找到将使用&#34; new&#34; - 您需要没有参数的构造函数)。

带代码的XML:

... 
xmlns:myns="modules/wrapper" 
... 
<myns:Wrapper 
... 

在这种情况下,我们将在&#34; modules / wrapper&#34;中找到名为Wrapper的XML文件。文件夹(modules / wrapper / Wrapper.xml),如果找到,我们将加载文件内容。该代码将作为加载的XML的代码。

如果您有任何疑问,请与我们联系!

由于