使用 TypeScript 构建我自己的 NativeScript 应用程序并使用外部 Telerik 模块

Building my own NativeScript app made of TypeScript and using external Telerik modules

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

我在 OSX 下使用 Sublime Text 3。

我通过查看演示应用程序发现 tns_modulesNativeScript 存储库匹配,因此我将其作为 Git 子模块添加到我的 app/ 文件夹中,并且然后编译它(npm i && grunt)。是不是整合这些模块的方式不对?

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

中得到了这个 Gruntfile.coffee
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 时,编译过程是隐藏的,所以我不确定我做对了。

现在我正在尝试使用 Telerik 的 side-bar module directly in a page's XML file, the way they do it:

<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: Cannot read property 'android' of undefined E/TNS.Native( 2456): File: "/data/data/org.nativescript.scmobile/files/app/./tns_modules/bin/dist/apps/TelerikNEXT/TelerikUI/side-bar, line: 39, column: 39

对应于:

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

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

他们在示例中使用的边栏是(付费的)controller from Telerik

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

This command will read project.properties file from the specified shared library folder and will add a reference to it in your project. If in turn the shared library has references to other projects then these projects will be included recursively. As a result, this will create a new folder lib which is sibling to already existing app and platforms.