万金流
以码会友。 吾Q:578751655。 水平有限,轻喷,谢!
随笔 - 189,  文章 - 0,  评论 - 7,  阅读 - 14万

如题

核心思想:无需安装node.js及任何插件。

项目中需要一个叫“Microsoft.TypeScript.MSBuild”的NUGET包。VS自带,亲测断网可用。甚至控制台项目都能正常写TS。

.net8可用,TS配置文件中可以设置为ES6。

以下步骤为一般步骤。

1、新建一个空的web项目

 

 2、设计、建好目录结构

 

 其中ts存放typescript源文件,web为网站根目录,scripts/js存放ts生成的js脚本。

index.html为静态网页。

ps:不这么建也可以。有个结构更方便组织站点而已。

3、新建ts配置文件tsconfig.json,修改内容为:

复制代码
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "outDir": "web/scripts/js"//ts编译出js的输出目录
  },
  "include": ["ts/**/*"],//ts所在位置。“**/”为任意层级目录,“?”和“*”为一般通配符。
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}
复制代码

ps:跟上面的说明一样,用配置文件是为了更好掌控ts编译为js的细节。不用的话,项目里的ts也都会被编译,原地生成js。如果是在web文件夹下面,还会遇到报错。

可以在最外层(跟include平级的地方)添加“"compileOnSave": true,”以在保存时自动编译。

4、修改program.cs,指定web文件夹,并支持静态内容。

复制代码
//var builder = WebApplication.CreateBuilder(args);
var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
    WebRootPath = "web"//网站根目录
});
var app = builder.Build();
app.UseDefaultFiles();//支持默认文件(index.html)
app.UseStaticFiles();//启用静态文件支持
//app.MapGet("/", () => "Hello World!");

app.Run();
复制代码

ps:网站根目录,默认是wwwrooot。现在想想,微软的“约定优于配置”还真是厉害!

5、写一个简单的ts文件f1.ts

document.getElementById('s1').innerHTML="I'm comming...."

其实这里是简单的js内容而已

6、编译之后,会生成js

  7、index.html内容如下

复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    aaa<span id="s1"></span>
    <script src="/scripts/js/f1.js"></script>
</body>
</html>
复制代码

运行结果:

 

posted on   万金流  阅读(552)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

点击右上角即可分享
微信分享提示