Производительность TypeScript (asm.JS, компилятор закрытия) и накладные расходы [закрыто]
я изучаю использование TypeScript в сочетании с MVC на стороне клиента (скорее всего,Backbone.js + Marionette.js или Ember.js) для будущих проектов и для этого есть несколько вопросов, связанных с производительностью и оптимизацией:
как
TypeScriptвыход сравнить с родной производительности JavaScript мудрый ?С
asm.jsявляется подмножеством JavaScript, можно ли конвертироватьTypeScriptкодasm.jsкод ? Если да, то это уже возможно ?возможно ли и по-прежнему полезно создавать сборки проектов AMD, которые используют
TypeScriptсGoogle Closure compiler?сколько накладных расходов
TypeScriptдобавить в среднем, размер файла мудрым ?при использовании легких библиотек, таких как
Backbone.jsв небольшом проекте, например. Имеет ли смысл использоватьTypeScriptв отношении размера файла ?
мне нравятся дополнительные преимущества TypeScript но я не хочу жертвовать производительностью ради стиля кодирования и печати.
какие-нибудь статьи / книги об использовании TypeScript в больших проектах, особенно связанных с производительностью, оптимизация и сборки очень приветствуются !
спасибо заранее !
1 ответов
мы тщательно оценили и протестировали TypeScript в нашей команде, и другие команды уже используют его, поэтому вот мой опыт:
- TypeScript-это суперсет JavaScript, и он в основном переводит 1: 1 на JavaScript без каких-либо значительных компромиссов производительности, поэтому, если вы знаете, как писать эффективный JavaScript, вы знаете, как писать эффективный TypeScript. Одной из не очень эффективных функций является наследование, которое "эмулируется" с использованием прототипов JavaScript и производит больше код, чем обычно пишется в JavaScript. Поэтому используйте наследование с осторожностью. Вы можете посмотреть сгенерированный JavaScript, чтобы увидеть, достаточно ли эффективно скомпилированы ваши конструкции для вашего случая.
- компиляция typescript в asm.js-та же проблема, что и компиляция JavaScript в asm.js-вам нужно будет эмулировать функции asm.JS не хватает по сравнению с полным javascript... Если вам нужны некоторые части в asm.js вам, вероятно, нужно будет написать их самостоятельно или скомпилировать из некоторых других соответствующий (менее динамичный) язык emscripten и тому подобное.
- TypeScript имеет некоторую поддержку AMD, но я не могу говорить о поддержке закрытия google... Поскольку он пытается выполнить аналогичную вещь очень по-разному (типы и metainfo в комментариях вместо нового синтаксиса), я не думаю, что они очень совместимы, чтобы использовать максимум обоих...
- размер файла на самом деле не проблема, он очень похож на размер файла читаемого JavaScript, если вы не используете наследование a лот!--4-->
- использование TypeScript с магистралью и другими библиотеками имеет одно преимущество по сравнению с JavaScript; большинство популярных библиотек уже имеют файлы определения типа для TypeScript, поэтому вы получаете автозаполнение и проверку типа почти бесплатно. Разница в размере файла на самом деле не является проблемой по сравнению с хорошо написанным JavaScript.
TypeScript еще довольно молод, и многие вещи, которые мы хотели иметь (JSLint, покрытие кода, TDD, BDD tools,...) в то время отсутствовали. В кроме того, в компиляторе было несколько ошибок (которые были исправлены впоследствии), поэтому мы не решили использовать его, но ни один пункт из вашего списка не показал нам реального отказа...
обновление: Чтобы увидеть потенциал TypeScript, вы можете посмотреть на Visual Studio Online "Monaco". То,что они там сделали, довольно впечатляет.--19-->начало работы с TypeScript для быстрого интро