RequireJs将.ts和.js文件提供给浏览器

时间:2017-03-17 09:32:00

标签: typescript requirejs

以下是我的ASP.NET核心项目中存在的文件。

greet.ts

export class WelcomMesssage {
name: string;
constructor(name: string) {
    this.name = name;
}
say(): void {
    console.log("Welcome " + this.name);
}
}

GreetExample.ts

import * as greet from "./greet";
export function Test(): void {
    let g = new greet.WelcomMesssage("Bhavesh");
    g.say();
}

main.ts

require.config({
     baseUrl:'Scripts'
});
require(['GreetExample'], (GreetExample) => { GreetExample.Test() }); 

index.html档案

<!DOCTYPE html>
<html>
<head>
    <title>index</title>
    <script data-main="Scripts/main" src="lib/requirejs/require.js" 
    type="text/javascript"></script>
</head>
<body>

</body>
</html>

当我查看Chrome调试工具中的来源时,我的网络应用程序同时提供.ts和.js文件。

enter image description here

为什么同时提供.ts和.js文件?我正在缩小.ts文件生成的所有javascript并将它们全部放在wwwroot/build文件夹中。如何将这些缩小的文件与requirejs一起使用?

1 个答案:

答案 0 :(得分:1)

RequireJS不对向浏览器提供任何内容负责。服务器的工作是提供文件。此外,RequireJS不会提取您未明确要求提取的任何内容。如果您要求它获取从TypeScript编译生成的.js文件,它将不会搜索.ts

您的浏览器可能会获取比您要求加载的文件更多的文件,或者它可能显示服务器甚至不提供的文件。例如,如果您在Chrome中打开调试器以查看源文件,并且您的JS文件是使用打开了inlineSourceMapinlineSources的TypeScript编译器编译的,则调试器将显示{{1}与.ts文件对应的文件。即使您只将.js文件部署到服务器,调试器也会显示.js文件,这些文件是从您要求编译器包含在生成的代码中的内联源重建的。

另一种情况是,如果您有对外部源图的引用。当您查看.ts文件时,浏览器将获取该地图。如果您跟踪网络请求,则会为地图设置.js请求。