我使用TypeScript来编写我的JavaScript文件与面向对象编程。 我想使用节点模块https://npmjs.org/package/typescript-require来从其他文件中获取我的.ts文件。TypeScript使用typescript-require共享文件
我想在服务器和客户端共享我的文件。 (浏览器)这非常重要。请注意,文件夹/shared/并不意味着在客户端和服务器之间共享,而是在游戏服务器和Web服务器之间共享。我使用pomelo.js作为框架,这就是为什么。
目前我没有使用(成功)typescript-require库。 我做这样的:
共享/ lib目录/ message.js
var Message = require('./../classes/Message');
module.exports = {
getNewInstance: function(message, data, status){
console.log(requireTs);// Global typescript-require instance
console.log(Message);
return new Message(message, data, status);
}
};
该文件需要Message.js创建新实例。
shared/classes/Message。 TS
class Message{
// Big stuff
}
try{
module.exports = Message;
}catch(e){}
在我添加此try/catch语句的类添加到module.exports如果它存在的FIL结束。 (它的工作原理,但它不是一个很好的方法,我想做得更好) 如果我从浏览器加载文件,module.export将不存在。
所以,我上面做了什么工作。现在,如果我尝试使用打字稿,需要模块,我会改变一些事情:
共享/ lib目录/ message.js
var Message = requireTs('./../classes/Message.ts');
我用requireTs,而不是需要,这是一个全局变量。我准确地使用了.ts文件。
shared/classes/Message。 TS
export class Message{
// Big stuff
}
// remove the compatibility script at the end
现在,如果我尝试这样,如果我看看到控制台服务器,我得到requireTs的对象和消息在共享/ lib目录/ message.js不确定。 如果我不在消息中使用export关键字,我会得到相同的结果。 ts。即使我最后使用我的小脚本,我总会遇到一个错误。
但还有更多,我有另一个类名称ValidatorMessage。 ts其中延伸消息。 ts,它不工作,如果我使用出口关键字...
我做错了什么?我尝试了几个其他的东西,但没有任何工作,看起来像typescript-require不能要求。ts文件。 谢谢你的帮助。
我想要做的是在服务器和客户端之间共享文件,这意味着服务器将直接使用使用TypeScript写入的文件,但客户端将获得与许多其他文件合并并压缩的文件需要该文件与客户端(浏览器)和服务器兼容。我将使用Grunt来合并和缩小文件。 – Vadorequest
客户端和服务器不会直接运行TypeScript,并且Grunt不会缩小TypeScript,因此您需要首先编译为JavaScript。 目前最简单的解决方案是编译两次相同的TypeScript源文件,一次用于--module CommonJS,一次用于--module AMD,然后恭敬地将发出的代码包含在服务器和客户端软件包中。 –
我不知道这些模块之间的区别?为什么要这样做?一个是“服务器”,另一个是“浏览器”?为什么会有差异,输出会有什么不同?谢谢! – Vadorequest