[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中,所以我不确定它是否可行。任何可以提出的帮助/建议/更好的做法将不胜感激。在这一天上,我的头发被撕掉了几天。
答案 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的代码。
如果您有任何疑问,请与我们联系!
由于