Позвольте вопрос со стороны: судя по статьям в мире php есть тенденция заимствовать подходы принятые в asp.net/java: DI, ООП, строго типизированный код (zephir) и т.д.
А почему не использовать ASP.NET/java, чего не хватает из того что есть в php?
Ну значит приспосабливаться, как это часто приходится делать с государством/монополистами/крупными игроками. То есть использовать другой/старый браузер специально для них, который необходимостью своего использования каждый раз будет напоминать об ущербности организации с которой работаешь.
Я считаю что есть два типа языков компилируемых в javascript: языки которые пытаются сделать js лучше и соответственно стараются результат компиляции делать максимально близким к оригиналу и языки чьи компиляторы рассматривают js как виртуальную машину. К первому типу я бы отнёс typescript в первую очередь и coffescript, ко второму dart и например компиляторы C# -> js.
Соответственно от второго типа языков не стоит ожидать читабельности полученнного js.
Зачем делать результат работы typescript читаемым? Чтобы скомпилированный код можно было нормально отладить когда map файл не доступен или не позволяет понять суть происходящего.
Господи, ну зачем? Откуда такой js-фанатизм? Какие у него преимущества?
На этом языке приятно и удобно писать? Нет, у него просто низки порог вхождения?
Он быстрый? Нет, слабая типизация убивает производительность
Конечно есть решения когда js имеет смысл(скажем на cordov`е можно сделатьт приложение быстро, причём силами веб разработчиков). Но что за радость от ОС где весь софт на js?
Вы пишите что у вас на этапе внутреннего тестирования было так много багов что чуть не опустились руки. А с чем связано что багов было столь не ожиданно много? Чтобы вы сейчас изменили в начале процесса?
Специально поставил vs2015, typescript работает как раньше. Почему-то пришлось переустановить typescript для vs2013, но никаких grunt`ов и прочего не понадобилось. Так что смысл статьи мне теперь не понятен.
Да ладно, прекрасно? Разве в таком коде:
/** param {Array.} strings
function(strings) {
var s = _.find(function(str){ return str.indexOf('s') != -1;})
}
редактор сможет дать адекватную подсказку для методов имеющихся у str?
Я не знаю как в сравнении с Java, но в сравнении с C# анотации closure это очень утомительно и не читабельно.
По поводу нагеморировал, вот такой код
/** param {Object} a */
function(a){
var x = a.someField;
}
closure в advanced режиме преобразует в такой
function(a){
var x = a.mangledField;
}
Спрашивает, какого он переименовал поле, если не имеет о нём никакой информации?
Я имею большой опыт разработки на closure compiler и могу сказать что писать для closure компилятора довольно утомительно, код получается зашумлённый и нужнопостоянно проверять что написанный код в Release режиме работает так же как в debug`е. Есть загнувшийся проект который модифицировал typescript компилятор таким образом что он при компиляции выдавал js код с аннотациями для closure компилятора, я считаю была очень здравая мысль, жалко не развилась.
Интересная фича, но сколько вообще на этом можно сэкономить? Насколько я вижу минимизация html чаще всего заключается в удалении пробелов и перносов строки, это же не много. + html шаблоны весят не так много как js и css(по моему личному опыту).
В bundletransfromer не планируется добавить аналогичную фичу(html bundle, с возможностью сжатия)?
А почему не использовать ASP.NET/java, чего не хватает из того что есть в php?
Соответственно от второго типа языков не стоит ожидать читабельности полученнного js.
На этом языке приятно и удобно писать? Нет, у него просто низки порог вхождения?
Он быстрый? Нет, слабая типизация убивает производительность
Конечно есть решения когда js имеет смысл(скажем на cordov`е можно сделатьт приложение быстро, причём силами веб разработчиков). Но что за радость от ОС где весь софт на js?
/** param {Array.} strings
function(strings) {
var s = _.find(function(str){ return str.indexOf('s') != -1;})
}
редактор сможет дать адекватную подсказку для методов имеющихся у str?
По поводу нагеморировал, вот такой код
/** param {Object} a */
function(a){
var x = a.someField;
}
closure в advanced режиме преобразует в такой
function(a){
var x = a.mangledField;
}
Спрашивает, какого он переименовал поле, если не имеет о нём никакой информации?
а это точно происходит? Разве движки это не оптимизируют?
В bundletransfromer не планируется добавить аналогичную фичу(html bundle, с возможностью сжатия)?
2) less/sass возможно, но что такого происходит с typescript, что сломает source map?