我遇到的问题是,Durandal很大程度上依赖于RequireJS和AMD风格的定义模块,我不想在服务器端引入,由于它使用了RequireJS,我没有机会运行Commonjs-ish模块在客户端(node.js的默认值).
棺材中的最后一个钉子是,我没有找到任何方式来定义哪些文件应该被编译成AMD模块,哪个文件是通过tsc的Commonjs,它似乎是一个最简单的解决方案.
我不认为分离客户端部分和服务器部分是一个选项,因为很多代码对于这两个部分是共同的.
所以,我的问题是三重的:
有没有办法将AMD和Commonjs模块混合在同一个Typescript项目中(最好使用NodejsTools)
>如果没有,有没有办法强制Durandal使用Commonjs文件来加载视图/视图模型等等
>如果没有可能的话,可以(并且明智地)在node.js服务器上使用AMD模块
任何想法都非常感激
解决方法
is there a way to mix AMD and Commonjs modules in the same Typescript project (preferably using NodejsTools)
是.使用grunt-ts.请参阅https://github.com/basarat/demo-fullstack/tree/master/src专门的gruntfile常见文件:https://github.com/basarat/demo-fullstack/blob/master/src/Gruntfile.js#L4-L6 commonjs:https://github.com/basarat/demo-fullstack/blob/master/src/Gruntfile.js#L26 amd:https://github.com/basarat/demo-fullstack/blob/master/src/Gruntfile.js#L37