Typescript 热毛巾(durandal)和#x2B;打字稿

Typescript 热毛巾(durandal)和#x2B;打字稿,typescript,durandal,hottowel,Typescript,Durandal,Hottowel,这是我的第一篇帖子,祝我好运:) 我想使用热毛巾(durandal)+打字脚本,我遵循以下线程: - - - 而且还试了样品 此示例运行时未出现以下错误: - JavaScript runtime error: 'exports' is undefined “/”应用程序中的服务器错误。 找不到资源。“ 起初,我决定用typescript更改我的viewmodels,在那之后,shell也会更改,但在这两种情况下,我都出现了以下错误: - JavaScript runtime error:

这是我的第一篇帖子,祝我好运:)

我想使用热毛巾(durandal)+打字脚本,我遵循以下线程: - - -

而且还试了样品

此示例运行时未出现以下错误:

- JavaScript runtime error: 'exports' is undefined
“/”应用程序中的服务器错误。 找不到资源。“

起初,我决定用typescript更改我的viewmodels,在那之后,shell也会更改,但在这两种情况下,我都出现了以下错误:

- JavaScript runtime error: 'exports' is undefined
这是我的shell.ts代码(我从示例中使用):

有什么想法吗

如果可能的话,我们欢迎可行的解决方案


thanx伙计们,让我们看看会发生什么。

如果您在全球范围内导出某些东西,您就在外部模块区,您需要第三方库来管理您的模块

我建议您使用RequireJS。基本上是以下类型脚本:

export function f(){
}
生成以下js:

function f() {
}
exports.f = f;

导出
是由第三方模块加载程序定义的变量。如果您没有这样的模块加载器,那么导出是未定义的。进一步解释

我对DurandalTypescriptExample也有同样的问题。 但是,本项目中的代码演示了如何在viewmodel文件中实现typescript代码,前提是您只需确保公开处置durandal所需的变量。至少有激活功能和标题变量

请参见下面的代码示例:

/// <reference path="../../dts/knockout/knockout.d.ts" //>
export class ViewModel {
    title: string =  'Home View';
    MyTitle: KnockoutObservableString; //MyTitle can be referenced in home.html as vm.MyTitle
    public activate() {
         this.MyTitle = ko.observable(this.title + " with my ko title");
         return true;
    }
}

export var vm = new ViewModel();
//The Durandal plugin-interface variables
export var title = vm.title;
export var activate = function () { return vm.activate(); };
//
导出类视图模型{
标题:字符串='主视图';
MyTitle:knockoutobservestring;//MyTitle可以在home.html中作为vm.MyTitle引用
公共激活(){
this.MyTitle=ko.observable(this.title+“带有我的ko title”);
返回true;
}
}
export var vm=new ViewModel();
//Durandal插件接口变量
导出var title=vm.title;
export var activate=function(){return vm.activate();};
因为我没有找到现成的项目来证明这一点,所以我不得不自己做。 请参阅github上热毛巾项目的我的版本:


我为Durandal v2创建了一个插件,支持按约定加载视图(ModuleId或ModuleId+“视图”)。这里有一个要点:

我发现将类导出为requirejs/durandal模块更容易。 通过使用以下导出语句:

    export = ClassName;
这允许我们实现接口,甚至可以扩展视图模型基类(不确定扩展部分),而无需重复导出xxx。。。我们希望包含在模块中的每个函数的代码

试试看

一个有效的例子:
谢谢,但我使用的是这个论坛提供的样本。您不能简单地使用示例中的一个文件。运行完整的样本,它将工作。因为它使用RequireJS如果你只想使用一个文件确保你自己加载RequireJS我试过了,我在我的帖子中提到过,它不会在服务器错误和断点命中的情况下运行,但是我正在下载,看看这次会发生什么,你自己试过了吗?这个示例很好用。您需要导航到
/Durandal
,而不是
/
    // Durandal "test" view model definition using typescript
    import dialog = require("plugins/dialog")

    class Test {
        title: string = 'test';

        public activate() {
            dialog.showMessage("the test is working!");
            return true;
        }
    }

    // Instead of using code like:
    // export var instance = new Test();
    // export var activate = function() { return instance.activate(); }
    // .. more Durandal specific overrides...

    // Simply use...
    export = Test;