我正在构建一个简单的NativeScript应用程序,并尝试使用TypeScript基本代码。
我在OSX下使用Sublime Text 3.
通过查看演示应用程序,我意识到tns_modules
与NativeScript存储库匹配,因此我将其作为Git子模块添加到我的app/
文件夹中,然后对其进行编译({{ 1}})。这是集成这些模块的错误方法吗?
然后我意识到我不能只运行由npm i && grunt
文件构成的tns emulate android
我的应用程序:我也必须编译它们。所以我设置了一个Grunt任务,但是处理依赖关系并不容易。我最后在.ts
中使用了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
(使用Genymotion模拟器)运行。
这是我开发的正确架构吗?当我使用Telerik平台时,编译过程是隐藏的,所以我不确定我做得对。
现在我正试图直接在页面的XML文件中使用Telerik的side-bar模块,方式they do it:
tns emulate android
但是我收到了这个错误:
E / TNS.Native(2456):TypeError:无法读取未定义的属性'android' E / TNS.Native(2456):文件:“/ data / data / target.nativescript.scmobile / files / app /。/ tns_modules / bin / dist /apps / TelerikNEXT / TelerikUI / side-bar,line:39,column :39
对应于:
<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">
...
知道我应该如何包含这些模块吗?请注意,我是移动设备的新手。
答案 0 :(得分:1)
他们在示例中使用的侧边栏是(付费)controller from Telerik。
因此,需要下载并添加tns library add {ios|android} /path/to/the/sidebar
。
此命令将从指定的共享库文件夹中读取project.properties文件,并在项目中添加对它的引用。如果共享库依次引用其他项目,那么这些项目将以递归方式包含在内。因此,这将创建一个新的文件夹lib,它与已有的应用程序和平台同步。