ASP.NET Core项目中集成TypeScript

 更新时间:2022年07月25日 10:20:35   作者:天方  
这篇文章介绍了ASP.NET Core项目中集成TypeScript的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

今天试了下在Asp.net core中集成typescript,发现vs2019对typescript集成的支持还是非常友好的。本文在这里简单的介绍一下。

由于typescript文件是编译为js后作为静态文件发布的,因此首先需要启用静态文件浏览:

app.UseStaticFiles();

在WWWRoot文件夹下添加ts文件:

此时VS会提示安装Microsoft.TypeScript.MSBuild Nuget包,根据向导安装即可。

编辑TypeScript文件,可以看到生成了相应的js文件。

新建html文件,引入生成的js文件即可。

<script src="scripts/app.js"></script>

以上就是一个基本的流程,本身是比较简单的,VS自动集成了build工具,编辑或生成项目的时候,会将ts文件生成js文件,html中直接引用生成的js即可。

另外,系统还会自动发布ts和map文件,可以以ts文件的 直接调试,非常方便。

在IE中启用Async/Await支持

async/await是我非常喜欢的语法,但它是ES2107中引入的,无缘于IE。而现在的项目是要保持IE的支持,使用typescript一个好处是可以在IE11中使用async/await语法。

为了演示这一过程,首先写一个测试函数:

function delay(ms: number) {
    return new Promise<void>(resolve => setTimeout(resolve, ms));
}
 
async function foo() {
    console.log("Knock, knock!");

    await delay(1000);
    console.log("Who's there?");

    await delay(1000);
    console.log("async/await!");
}

编译的时候发现无法通过,提示没有Promise,要求将lib改成es2015的版本。

注意:这里不是讲js的输出版本改成es2015,如果这样改了的话,能编译通过,但会输出es2015的脚本,是无法在ie11上运行的

解决方法是增加一个tsconfig.json文件,指定typescript的编译选项,这里是我的一个参考配置:

{
    "compilerOptions": {
        "noImplicitAny": false,
        "noEmitOnError": true,
        "removeComments": false,
        "sourceMap": true,
        "lib": ["es6", "dom"],
        "target": "es5"
    },
    "exclude": ["node_modules"]
}

注:tsconfig.cofig指定的选项的优先级是比csproj中的typescript选项高的,加了这个文件后,我们是可以将csproj文件中的相应配置删掉的。另外,这个配置文件里面也可以进行更多的配置设置。

因为我们要输出为IE中支持的脚本,这儿的targert选择的是es5。增加了这个选项后,就可以编译通过了,但是,在IE中运行的时候还是出错:

原因很简单,es5的runtime中没有promise结构的定义。要解决这个问题,我们需要安装promise-polyfill的npm包。这里我是在html中直接引用CDN脚本

<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script>

加入了该脚本后,就可以愉快的在ie中进行await了。

总结一下也就是额外的两步:

  • 添加tsconfig,指定es6的lib

  • 添加promise-polyfill的引用

当然,如果只考虑高版本的chrome的话支持,就没有这么麻烦,直接指定target为es2017即可,生成的JS脚本更加简洁。具体原理可以参看参考文档2,这里就不介绍了,

到此这篇关于ASP.NET Core集成TypeScript的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • asp.net实现识别客户端浏览器或操作系统

    asp.net实现识别客户端浏览器或操作系统

    这里给大家汇总了使用asp.net实现识别客户端浏览器或操作系统的方法和示例代码,有需要的小伙伴可以参考下。
    2015-10-10
  • ASP.NET 导出到Excel时保留换行的代码

    ASP.NET 导出到Excel时保留换行的代码

    由于Excel毕竟不是 HTML,它有自己的样式标准,在Excel 中,实现换行的方法是
    2008-12-12
  • linq中的分组操作符

    linq中的分组操作符

    这篇文章介绍了linq中的分组操作符,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • ASP.NET MVC图片上传前预览简单实现

    ASP.NET MVC图片上传前预览简单实现

    这篇文章主要介绍了ASP.NET MVC图片上传前预览简单实现代码,可以获取图片文件名和图片字节大小,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • ASP.NET Core中如何实现重定向详解

    ASP.NET Core中如何实现重定向详解

    这篇文章主要给大家介绍了关于ASP.NET Core中如何实现重定向的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Forms身份认证在IE11下无法保存Cookie的问题

    Forms身份认证在IE11下无法保存Cookie的问题

    这篇文章主要介绍了Forms身份认证在IE11下无法保存Cookie问题的解决方法,需要的朋友可以参考下
    2014-05-05
  • VS2017添加EF的MVC控制器报错的解决方法

    VS2017添加EF的MVC控制器报错的解决方法

    这篇文章主要为大家详细介绍了VS2017添加EF的MVC控制器报错的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • ASP.NET Core 7 Razor Pages项目发布到IIS的详细过程

    ASP.NET Core 7 Razor Pages项目发布到IIS的详细过程

    这篇文章主要介绍了ASP.NET Core 7 Razor Pages项目发布到IIS的详细过程,详细介绍了发布过程遇到的问题及解决方法,对ASP.NET Core 发布到IIS相关知识感兴趣的朋友一起看看吧
    2023-01-01
  • 浅谈对Lambda表达式的理解

    浅谈对Lambda表达式的理解

    “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
    2015-07-07
  • Visual Studio for Mac版 初体验

    Visual Studio for Mac版 初体验

    这篇文章主要介绍了Visual Studio for Mac版 初体验,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下
    2017-05-05

最新评论