如何将TypeScript源放入单独的VS项目中?

时间:2017-01-03 12:12:21

标签: asp.net-mvc visual-studio typescript

我有一个长期运行的Web项目(3-4岁),它基于ASP.NET MVC 5.我也有一个大型的客户端代码库,用TypeScript编写。由于早期的约定,TypeScript源代码是MVC 5 csproj项目的一部分,因此它与后端一起编译。

由于许多原因,这种结构非常不幸。一些主要的是:违反SRP,强烈耦合到后端,无法单独维护和构建后端,无法单独维护和构建前端等。

我想将客户端代码库分成一个新的Visual Studio项目,但是,我不知道最好的方法是什么,因为Visual Studio没有提供一种干净的方法TypeScript项目(至少据我所知)。

我使用Visual Studio 2015和TypeScript 2.0。我有什么选择?

2 个答案:

答案 0 :(得分:1)

首先,如果您的客户端代码(TypeScript应用程序)不需要自己的Web.config文件 - 也就是说,您不需要配置IIS授权,重定向等 - 您可以只需在Visual Studio 中使用带有TypeScript" 项目类型的" HTML应用程序。

但是,如果您的客户端和服务器代码都需要自己的Web.config并且它们被部署到同一个IIS网站,那么拥有两个单独的ASP.NET项目会变得更加困难,因为需要合并两个Web.config 1}}文件......这是不可能的,AFAIK。

我遇到了类似的问题,但在我的情况下,我有一个基于AngularJS的Web应用程序,用TypeScript编程,还有一个ASP.NET Web API后端。

到目前为止我能想到的最好不需要任何其他构建步骤的方法是不将TypeScript代码移动到单独的项目中,而是移动移动Web API / MVC代码。客户端TypeScript最终出现在ASP.NET Web项目中,Web API进入类库。

剩下的两个痛点是通过Web.config共享Global.asax和引导Web API,最终出现在"错误"项目。关于Web.config,可以通过.config机制将Web API配置进一步提取到单独的configSource文件中。我没有看到在Global.asax中从(仅限客户端代码)ASP.NET项目中获取Web API引导的方法。

答案 1 :(得分:0)

IMO,像你的javascript或css这样的客户端代码应该与你的"后端"代码,后端代码并不代表你的整个后端代码,它应该是一个只能处理http请求和服务器端渲染的瘦控制器层应用程序

您可以将单片应用程序分成多个service layer和一个frontend layer,它们只处理httprequest和渲染

将javascript和css分成单个项目的问题是

  1. 它使部署变得复杂,当您的客户端代码与服务器代码不兼容时,您不知道哪个应首先部署

  2. 当您将客户端代码与后端分开时,您无法执行js哈希(您不需要处理客户端缓存)