[来自 NativeScript Google 小组的交叉发布以提高知名度。]
在阅读了TJ Van Toll 的一篇文章后,我开始着手为我想要在我的 XML UI 定义中使用的 UI 组件制作我自己的模块。由于该组件是原生组件的 JavaScript 包装器,因此这有点复杂。我在项目中使用的是 TypeScript,所以我有一个 .d.ts 用于包装器。这是我所拥有的:
应用程序/模块/包装器/包装器.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 {
.....
}
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 中。一个切题的问题(但值得解决)是作为用户,我们能否将 Xcode 附加到设备并调试运行时?这在运行时的 require.js 中,所以我不确定它是否可能。任何可以建议的帮助/建议/更好的做法将不胜感激。这几天一直在扯头发。