我将Visual Studio 2013,Typescript 1.3和Module System设置为AMD(通过Nuget下拉需求2.1.15,RequireJS 2.1.8的类型定义)
我想拥有一个Web应用程序,我们称之为MyWebApplication1,它有一个简单的html页面,其中包含一个从我的打字稿生成的javascript文件,例如。 MyTypescript.ts
MyHtml.html:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="Scripts/require.js" data-main="Scripts/requireConfig.js"> </script>
</head>
<body>
<div id="result">DEFAULT</div>
</body>
</html>
requireConfig.ts:
require.config({
baseUrl: 'Scripts',
});
require([ '../Scripts/MyTypescript'],
function (MyTypescript) {
MyTypescript.MyFunction("Mr Anderson");
}
);
MyTypescript.ts:
import MyCommonResource = require("MyCommonResource");
export = MyApp;
module MyApp {
export function MyFunction(myParameter: string) {
var aString: string = (new Date()).toTimeString() ;
var myCommonThing: MyCommonResource.CommonClass = new MyCommonResource.CommonClass();
aString = myCommonThing.CommonMethod();
alert("HELLO " + myParameter + " @ " + aString);
}
}
MyCommonResource.ts:
export = MyCommon;
module MyCommon {
export class CommonClass {
constructor() { }
public CommonMethod(): string {
return "COMMON";
}
}
}
这一切都适用于一个项目中的以下文件夹结构:
MyWebApplication1 -Scripts -MyTypescript.ts -MyCommonResource.ts -requireConfig.ts -MyHtml.html
然而,我想要这样的东西(各种网络项目可能需要的单独项目)
MyWebApplication1 -Scripts -MyTypescript.ts -requireConfig.ts -MyHtml.html MyCommonWebCode1 -Scripts -MyCommonResource.ts
我没有看到一个很好的方法来实现这一目标,而在MyTypescript.ts中没有这样的东西:
import MyCommonResource = require("..\..\AnotherProject\Scripts\MyCommonResource");
在IIS下部署不起作用,因为生成的js define看起来像这样:
define(["require", "exports", "..\..\AnotherProject\Scripts\MyCommonResource"], function (require, exports, MyCommonResource) {
这种情况有一个很好的解决方案吗?
我考虑使用post build事件,使用本地nuget服务器,...在使用typescript和visual studio时,似乎不是处理不同Web应用程序中常见代码的好方法
提前致谢。
答案 0 :(得分:0)
您已经提到了我认为正确的选择。
如果您希望在多个项目中共享代码,则包管理器是分享它的最佳方式。它不仅有助于共享代码的分发,还有助于版本控制。
有一些巧妙的扩展可以让NuGet包创建变得非常简单 - 我正在使用NuGet Packager。
您可以使用免费版Pro Get开始 - 它是一个非常简洁的NuGet服务器。
您还可以使用本地NuGet服务器作为代理,以保持其他库的版本一致,并保留一份“团队批准的”#34;软件包并确保您已检查许可证并保持许可条件(而不必检查是否有人添加了新软件包)。
如果您更喜欢不同的包管理器(即npm),您几乎可以遵循相同的模式,因为这些功能非常相似。