3

我正在构建一个简单的 NativeScript 应用程序,并尝试使用 TypeScript 基本代码来完成它。

我在 OSX 下使用 Sublime Text 3。

通过查看与NativeScripttns_modules存储库匹配的演示应用程序,我意识到,因此我将它作为 Git 子模块添加到我的文件夹中,然后编译它()。这是集成这些模块的错误方式吗?app/npm i && grunt

然后我意识到我不能只运行tns emulate android由文件组成的应用程序.ts:我也必须编译它们。所以我设置了一个 Grunt 任务来这样做,但是处理依赖关系并不容易。我最终得到了Gruntfile.coffee这个app/

module.exports = (grunt) ->
    grunt.loadNpmTasks 'grunt-typescript'

    grunt.config 'typescript',
        build:
            src: [
                '**/*.ts'
                '!*_modules/**'
            ]
            options:
                references: [
                    'tns_modules/bin/dist/definitions/**/*.d.ts'
                ]
                target: 'es5'
                sourceMap: false
                declaration: false
                module: 'commonjs'
                noResolve: true

它适用于简单的代码,例如我可以Observable通过编写来扩展模块:

import observable = require("data/observable");
class Activities extends observable.Observable {
    //...
}

然后我编译grunt(文件与.js文件一起创建.ts)并运行tns emulate android(使用 Genymotion 模拟器)。

它是否适合我的开发?当我使用 Telerik Platform 时,编译过程是隐藏的,所以我不确定我做对了。

现在我正在尝试直接在页面的 XML 文件中使用 Telerik 的侧边栏模块,他们这样做的方式是:

<Page xmlns="http://www.nativescript.org/tns.xsd" loaded="pageLoaded" xmlns:tsb="./tns_modules/bin/dist/apps/TelerikNEXT/TelerikUI/side-bar">
    <tsb:SideBar title="MyApp">
        ...

但我得到这个错误:

E/TNS.Native(2456):TypeError:无法读取未定义 E/TNS.Native(2456)的属性“android”:文件:“/data/data/org.nativescript.scmobile/files/app/./tns_modules/ bin/dist/apps/TelerikNEXT/TelerikUI/side-bar,行:39,列:39

对应于:

this._android = new com.telerik.android.primitives.widget.sidedrawer.RadSideDrawer(this._context);

知道我应该如何包含这些模块吗?请注意,我是移动开发新手。

4

1 回答 1

1

他们在示例中使用的侧边栏是Telerik 的(付费)控制器

因此,它需要下载并添加tns library add {ios|android} /path/to/the/sidebar.

此命令将从指定的共享库文件夹中读取 project.properties 文件,并将在您的项目中添加对它的引用。如果反过来共享库引用了其他项目,那么这些项目将被递归包含。结果,这将创建一个新文件夹 lib,它与现有的应用程序和平台是同级的。

于 2015-05-22T13:19:17.183 回答