如题
核心思想:无需安装node.js,在项目中装一个叫“Microsoft.TypeScript.MSBuild”的NUGET包就可以了。不想主动安装,也可以等VS的提示。
以下步骤为一般步骤。
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>
运行结果: