2

我最近开始研究 TypeScript。我正在使用 require.js 来加载模块。目前我只加载jquery,但这显然会被扩展。

我的项目设置如下:

app
  > classes
     > Greeter.ts
  > AppConfig.ts
  > AppMain.ts
lib
  > jquery-1.7.2.js
  > require.js
modules
  > jquery.d.ts
  > require.d.ts
app.ts
default.htm

应用配置文件

/// <reference path="../modules/require.d.ts" />
/// <reference path="AppMain.ts" />

require.config({
    baseUrl: '../',
    paths: {
        'jquery': 'lib/jquery-1.7.2'
    }, 
    shim: {
        jquery: {
            exports: '$'
        }
    }
});

require(['jquery','app/AppMain'], 
    ($, main) => {
        // code from window.onload
        var appMain = new main.AppMain();
        appMain.run();
});

AppMain.ts

import gt = module("app/classes/Greeter");

export class AppMain {
    public run() {
        var el = document.getElementById('CONTENT_PH');
        var greeter = new gt.Greeter(el);
        greeter.start();
    }
}

问候语.ts

export class Greeter {
    element: HTMLElement;
    span: HTMLElement;
    timerToken: number;

    constructor (element: HTMLElement) { 
        this.element = element;
        this.element.innerText += "The time is: ";
        this.span = document.createElement('span');
        this.element.appendChild(this.span);
        this.span.innerText = new Date().toUTCString();
    }

    start() {
        this.timerToken = setInterval(() => this.span.innerText = new Date().toUTCString(), 500);
    }

    stop() {
        clearTimeout(this.timerToken);
    }
 }

.csproj

<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <TypeScriptSourceMap> --module AMD</TypeScriptSourceMap>
  </PropertyGroup>
  <Target Name="BeforeBuild">
    <Message Text="Compiling TypeScript files" />
    <Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
    <Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
  </Target>

我在本地机器上运行了一些示例,但是当我尝试在实时服务器上运行它时,它会从 require.js 中给出以下脚本错误。

错误:脚本错误http://requirejs.org/docs/errors.html#scripterror [打破此错误]
var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + 身份证);需要.js(第 194 行)

我不知道为什么这适用于我的开发机器,但不适用于实时服务器。

在本地运行此示例适用于 chrome 和 Internet Explorer,但不适用于 Firefox。但这可能是另一个问题。

如果您需要更多详细信息,请告诉我。

4

1 回答 1

0

当您部署到您的服务器时,您是否在发布模式下编译您的网站?

在这种情况下,您需要在项目文件中添加发布版本:

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <TypeScriptSourceMap> --module AMD</TypeScriptSourceMap>
  </PropertyGroup>
  <Target Name="BeforeBuild">
    <Message Text="Compiling TypeScript files" />
    <Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
    <Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
  </Target>

在 TypeScript 0.8.2+ 中,格式为:

  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptIncludeComments>true</TypeScriptIncludeComments>
    <TypeScriptSourceMap>true</TypeScriptSourceMap>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptIncludeComments>false</TypeScriptIncludeComments>
    <TypeScriptSourceMap>false</TypeScriptSourceMap>
  </PropertyGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" />
于 2013-08-28T12:08:16.443 回答