Razor 在cshtml文件中使用TypeScript

Razor 在cshtml文件中使用TypeScript,razor,typescript,Razor,Typescript,我想知道有没有办法在Razor cshtml文件上使用TypeScript 比如像这样的 <script language="text/typescript"> /// typescript goes here </script> ///这里是打字脚本 TypeScript不是运行时;它被交叉编译成JavaScript。因此,您需要编写并编译您的TypeScript,然后将其包含在JavaScript脚本标记中或作为外部文件。让我补充Robs的回答,从技术上讲,可以将

我想知道有没有办法在Razor cshtml文件上使用TypeScript

比如像这样的

<script language="text/typescript">
/// typescript goes here
</script>

///这里是打字脚本

TypeScript不是运行时;它被交叉编译成JavaScript。因此,您需要编写并编译您的TypeScript,然后将其包含在JavaScript脚本标记中或作为外部文件。

让我补充Robs的回答,从技术上讲,可以将TypeScript编译器嵌入页面下载,并让浏览器编译代码用
标记编写


但是,性能可能不太理想,最好在服务器上进行预编译。从技术上讲,也没有什么可以阻止预处理器这样做(T4可以做到)。

这是可能的。我开发了一个自动编译程序,可以动态地将TypeScript编译成JavaScript。试试看

我刚刚检查了我最喜欢的VS扩展:

他们已经在保存时包含了.ts文件编译(建议也使用Intellisense的原始插件)


不过,这显然只适用于.ts文件。在我看来,一旦你达到了选择typescript而不是javascript的复杂程度,无论如何,你应该在一个单独的文件中使用它。

你可以使用tsc.exe手动编译typescript文件,然后将生成的javascript添加到你的项目中,或者使用一个工具,比如保存时编译

由于编译器可以编译成Javascript,您还可以让用户的浏览器动态地进行编译(以性能和文件大小为代价,编译器相当大)。纽泰克的解决方案就是这种方法的一个例子


如果您正在使用捆绑和缩小,我刚刚发布了一个IBundleTransform实现,它将TypeScript编译为Javascript。它位于on和NuGet(安装程序包TypeScriptBundleTransform)。如果您还没有使用捆绑和缩小,那么值得一看

这需要浏览器支持,所以我对此表示怀疑。@asawyer仅当它是客户端时。我认为应该可以编译一个类似于
@Keith的块自从我写了那篇评论后,我已经看到了这样做的例子。这对于现有类型脚本文件的智能感知来说是很好的,因为它鼓励使用外部脚本文件,我称之为一个功能。你为什么称使用外部文件为特征?对我来说,将脚本直接存储在它们将运行的页面上会更舒服。@ArtyomKrivokrisenko尽管这很好,但对于较大的应用程序,最好将javascript存储在单独的文件中。这不仅使javascript和html标记完全分离,而且还允许您创建更好的文件版本控制,同时能够缩小javascript文件。@MatthewNichols我不同意-与旧浏览器相比(我们中的一些人仍然必须支持IE6)一次只检索两个HTTP资源,许多公司网络的ping超过200毫秒。将所有脚本放在外部文件中并不总是最佳做法——有时特定于页面的内容内联速度更快(至少对于跛脚公司Win2000机器上的穷人来说是如此)。为什么这个非答案是14票?它究竟为什么被接受?问题不在于是否有办法让工具在razor文件中编译typescript!?虽然这是次优的,但对于许多应用程序来说,它不是仍然相当可行吗?typescript网站上的操场似乎运行得相当快。我可能只是拼凑了一些东西:)@Ben那么你为什么不试试呢?我看了一下,虽然我很喜欢它的开发,但我想有一些方法将块编译成javascript,用于发布应用程序。@manuFS:谢谢,但是TypeScript Compile确实会将块编译成javascript,而且它甚至会在运行中编译。你的意思是隐藏源TS文件并离线编译吗?我的意思是编译时将typescript块编译成js块。@manuFS和@niutech-这是一个很好的解决方案,但不应该是客户端。理想情况下,我们可以支持类似于
的东西,然后在服务器上编译为JS。VS2015版本中不再提供这些功能-MS不再将这些类型的功能包含在Web Essentials中,而更喜欢像grunt和gulp这样的任务运行程序