我最近开始研究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
AppConfig.ts
/// <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();
}
}
Greeter.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 ->'"%(fullpath)"', ' ')" />
<Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>
我在本地计算机上运行了一些示例,但是当我尝试在实时服务器上运行它时,它会从require.js中提供以下脚本错误。
错误:脚本错误http://requirejs.org/docs/errors.html#scripterror [打破此错误]
var e = new Error(msg +'\ nhttp://requirejs.org/docs/errors.html#'+ id); require.js(第194行)
我不知道为什么这会在我的开发机器上运行,但不能在实时服务器上运行。
本地运行此示例适用于chrome和Internet Explorer,但不适用于Firefox。但这可能是另一个问题。
如果您需要其他详细信息,请告知我们。
答案 0 :(得分:0)
在部署到服务器时,是否在发布模式下编译网站?
在这种情况下,您需要在项目文件中添加发布版本:
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<TypeScriptSourceMap> --module AMD</TypeScriptSourceMap>
</PropertyGroup>
<Target Name="BeforeBuild">
<Message Text="Compiling TypeScript files" />
<Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
<Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</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" />