【问题标题】:Using TypeScript in cshtml files在 cshtml 文件中使用 TypeScript
【发布时间】:2012-09-23 14:40:08
【问题描述】:

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

比如这样的

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

【问题讨论】:

  • 这需要浏览器支持,所以我对此表示怀疑。
  • @asawyer 仅当它是客户端时。我认为应该可以编译像&lt;script language="text/typescript" runat="server"&gt; 这样的块。
  • @Keith 自从我写了那条评论以来,我已经看到了如何做这样的事情的例子。
  • 对现有打字稿文件的智能感知会很好

标签: razor typescript


【解决方案1】:

您可以使用 tsc.exe 手动编译 TypeScript 文件,然后将生成的 Javascript 添加到您的项目中或使用在保存时编译的工具,例如 Web Essentials

由于编译器可以编译成Javascript,你也可以让用户的浏览器即时编译(以性能和文件大小为代价,编译器相当大)。这种方法的一个例子是 niutech 的解决方案。

如果您正在使用捆绑和缩小,我刚刚发布了 IBundleTransform 的实现,它可以将 TypeScript 编译为 Javascript。它位于GitHub 和 NuGet(安装包 TypeScriptBundleTransform)上。如果您还没有使用 Bundling and Minification,那么值得一看!

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 在 VS2015 版本中不再可用 - MS 正在放弃在 Web Essentials 中包含这些类型的功能,而更喜欢 grunt 和 gulp 等任务运行器
    【解决方案3】:

    这是可能的。我开发了TypeScript Compile - 一个将 TypeScript 自动编译为 JavaScript 的即时编译器。试一试!

    【讨论】:

    • 我看了看,虽然我很喜欢它的开发,但我想有一些方法将块编译为 javascript 以用于发布应用程序。
    • @manuFS:谢谢,但 TypeScript Compile 确实将块编译为 javascript,它甚至可以即时完成。您的意思是隐藏源TS文件并离线编译吗?
    • 我的意思是 typescript 块到 js 块的编译时编译。
    • @manuFS 和@niutech - 这是一个很好的解决方案,但它不应该是客户端。理想情况下,我们可以支持 &lt;script language="text/typescript" runat="server"&gt; 这样的东西,然后在服务器上编译成 JS。
    【解决方案4】:

    让我添加到 Robs 的回答中,在技术上可以将 typescript 编译器嵌入到页面下载中,并让浏览器编译用&lt;script language="text/typescript"&gt; 标签编写的代码。

    但是,性能可能不是最理想的,最好在服务器上进行预编译。从技术上讲,也没有什么可以阻止预处理器执行此操作(T4 可以执行此操作)。

    【讨论】:

    • 虽然它不是最理想的,但它对许多应用程序来说仍然是相当可行的吗? typescript 网站上的操场似乎执行得相当快。
    • 确实如此。我可能只是一起破解一些东西:)
    • @Ben 那你为什么不试试TypeScript Compile
    【解决方案5】:

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

    【讨论】:

    • 它鼓励使用外部脚本文件,我称之为功能。
    • 您为什么将使用外部文件称为一项功能?对我来说,将脚本直接存储在它们将运行的页面上会更舒服。
    • @ArtyomKrivokrisenko 虽然这很好,但对于较大的应用程序,最好将 javascript 存储在单独的文件中。这不仅提供了 javascript 和 html 标记的完全分离,而且还允许您创建更好的文件版本控制以及缩小 javascript 文件的能力。
    • @MatthewNichols 我不同意 - 对于较旧的浏览器(我们中的一些人仍然必须支持 IE6)一次只能检索两个 HTTP 资源,并且许多公司网络的 ping 时间超过 200 毫秒。将所有脚本都放在外部文件中并非总是最佳实践 - 有时页面特定的内容会更快内联(至少对于蹩脚的公司 Win 2000 机器上的可怜人来说)。
    • 你不说,爱因斯坦。为什么这个不回答的有 14 票?为什么它会被接受?问题不在于是否有办法让工具编译 剃刀文件中的打字稿!?
    猜你喜欢
    • 2017-03-18
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    相关资源
    最近更新 更多