Я использую TypeScript для кода моего файла javascript с объектно-ориентированным программированием. Я хочу использовать модуль узла https://npmjs.org/package/typescript-require, чтобы потребовать, чтобы мои файлы .ts из других файлов.TypeScript use typescript-требуют общих файлов
Я хочу поделиться своими файлами на сервере и на стороне клиента. (Браузер) И это очень важно. Обратите внимание, что папка /shared/ не означает общий доступ между клиентом и сервером, но между игровым сервером и веб-сервером. Поэтому я использую pomelo.js в качестве рамки.
На данный момент я не использую (успешно) библиотеку, требующую ввода текста. мне нравится, что:
разделяемые/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 для создания новых экземпляров.
поделился/classes/Message. ц
class Message{
// Big stuff
}
try{
module.exports = Message;
}catch(e){}
В конце фил я добавить эту TRY/поймать, чтобы добавить класс к module.exports, если он существует. (Это работает, но это не очень хороший способ сделать это, я хотел бы сделать лучше) Если я загружу файл из браузера, module.export не будет существовать.
Итак, что я делал выше, работает. Теперь, если я пытаюсь использовать машинопись-модуль требует, я изменю некоторые вещи:
разделяемые/Lib/message.js
var Message = requireTs('./../classes/Message.ts');
я использую requireTs вместо требуется, это глобальная переменная , Я точно использую .ts файл.
поделился/classes/Message. ц
export class Message{
// Big stuff
}
// remove the compatibility script at the end
Теперь, если я пытаюсь как это, и если я взгляну на сервер консоли, я получаю requireTs это объект и сообщение не определено в разделяемых/Lib/message.js. Я получаю то же самое, если я не использую ключевое слово в сообщении. ts. Даже если я использую свой маленький скрипт в конце, у меня всегда появляется ошибка.
Но есть еще, у меня есть другое имя класса ValidatorMessage. ts который распространяется Сообщение. ц, он не работает, если я использую экспорта ключевое слово ...
ли я сделал что-то не так? Я пробовал несколько других вещей, но ничего не работает, похоже, что requirecript-require не может требовать .ts файлов. Благодарим вас за помощь.
Что я хочу сделать, это иметь файлы, совместно используемые между сервером и клиентом, а это означает, что сервер будет использовать непосредственно файл, написанный с использованием TypeScript, но клиент получит файл, объединенный с большим количеством других файлов, и zipped, и я необходимо, чтобы файлы были совместимы как с клиентом (браузером), так и с сервером. Я буду использовать Grunt для объединения и минимизации файлов. – Vadorequest
Клиент и сервер не будут запускать TypeScript напрямую, а Grunt не будет минимизировать TypeScript, поэтому вам придется сначала скомпилировать JavaScript. В настоящее время самым простым решением будет скомпилировать один и тот же источник TypeScript дважды, один раз для -module CommonJS и один раз для -module AMD, а затем включить испускаемый код в серверных и клиентских пакетах с уважением. –
Я не знаю разницу между этими модулями? Зачем так? Один для «сервера», а другой для «браузера»? Почему есть разница и какая разница в выходе? Благодаря! – Vadorequest