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

RequireJs serving both .ts and .js file to browser

以下是我的 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 调试工具中查看源代码时,我的 Web 应用程序同时提供 .ts 和 .js 文件。

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

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

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

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