пусть Proxy введут и честные WeakSets (нынешние полифиллы все же не очень честные), остальное можно дотянуть чем-нибудь вроде Traceur.
А, ну еще — дебаггер для мобильного ie был бы очень крут.
Вообще мне нравится куда развитие осла идет)
за webM / webP яростно поплюсовал бы. Дело даже не в том, что он свободный, а в том, что webP совершенно люто сжимает изображения — заблюренный фон на 900кб в jpeg или 2мб в png он может не сильно потеряв в качестве ужать до 20-30кб, что по-моему очень круто
А у меня тут вопрос к хабраюзерам: у меня в черновиках лежит недописанная статья об аналогичном проекте. Проект живой, активно развивается внутри одной команды, но без меня уже. Ни разу не рекламная — продукта-то все-таки нет в открытом доступе, скорее о том какие шишки набиваются при разработке такого продукта и какие есть хитрые трюки с ним же. Дописывать?)
Если что — заключение в ней очень простое: такие фреймворки по сути не нужны, если уже есть рендер на серверсайде, нужно вытягивать страницы и заменять их диффом, а клиентская логика должна навешиваться через вебкомпоненты или аналогичный механизм. Если нет рендера на сервере — это браузерное приложение и оно должно работать само по себе жсоном.
Не вижу сильной разницы между моим и вашим кодом, вы просто заменили reject на throw, а resolve на return. Catch относительно дорогая операция, так что лучше ее избегать.
В реальном коде было четыре(!) уровня вложенности, и от них реально было никуда не деться. Я писал пример по памяти, так что…
Эх, если уж так хотите es6 — берите co+генераторы, они куда лучше. Откуда эта истерия про то что промисы — панацея?
Да, промисы помогают решать мелкие полезные задачи, но общий workflow на них проектировать — себе дороже.
Я это понял в один момент, когда реализовывал на них авторизацию на отзываемых токенах со сроком действия.
Было как-то так
Только кода еще больше было нагромождено. Промисы хороши там, где идет цепочечная обработка данных, не более. Если сложная логика — всегда будет куча замыканий даже с промисами.
на генераторах же будет как-то так
co(function*(){
var tokenInfo = yield getTokenInfoFor(token);
var userInfo = yield getUserInfo(tokenInfo.email);
if (userInfo.tokenRevokeTime > tokenInfo.issueTime)
throw e;
return userInfo;
})(function(err, res){
...
});
(я, правда, не пользовался ни разу возвращаемым значением, сделал код так более понятным, как мне кажется).
И как вы понятную и человекочитаемую рекурсию на промисах сделаете?
У меня регулярно бывают задачи по выборке из базы данных с рекурсивными условиями (сейчас, например — взять первые n элементов, отсортированных по приоритету, с условием, что берутся все элементы с заданным приоритетом, и общая выборка не меньше определенного числа), их на промисах охренеешь делать.
В общем промисы — да, это удобно. Но перегрето. Полгода-год назад вообще какая-то истерия про них была, непонятная для меня.
можно подумать, что это наследование — не просто сахар поверх.
Доказательство(пишу по памяти, могу где-то немного накосячить):
class Horse{
constructor(){this._speed = 5;}
get speed(){return this._speed}
}
class HorseWithTransmission extends Horse{
set speed(val){this._speed = val}
}
new HorseWithTransmission().speed //=> undefined
Неожиданно, правда? А все потому что это обертка поверх Object.create
Dart или TypeScript.
А вообще без строгой типизации нормально как-то живется, если честно. С числами — js автоматически подбирает тип, представляйте это себе как абстрактный тип Number.
IntelliSense есть, да еще какой. Несколько решений есть, которые по сути выполняют код и подсказывают «живые» методы, один — забыл уже как называется, коммерческий, активно пиарился на хабре. Другой сейчас встроен в webStorm.
А с образование пузырьков разве не наносит каких-то повреждений процессорам? Извиняюсь за глупый, возможно, вопрос, но я был подумал, что пар расширяется -> возникает легкая ударная волна
а вообще если есть желание поизвращаться — можно посмотреть на то, как на js4k оптимизируют загрузку скриптов, загружая их как png-картинку. Я не применял на практике, но с виду эффективно, но гемморойно (+определенная задержка на клиенте)
Я, кажется, немножко тупой. Объясните: я не смогу сделать простое приложение поверх REST, которое работает с экселевскими файлами в моем oneDrive? Тут все, как я понял, утыкается в Office 365 корпоративный.
А, ну еще — дебаггер для мобильного ie был бы очень крут.
Вообще мне нравится куда развитие осла идет)
Если что — заключение в ней очень простое: такие фреймворки по сути не нужны, если уже есть рендер на серверсайде, нужно вытягивать страницы и заменять их диффом, а клиентская логика должна навешиваться через вебкомпоненты или аналогичный механизм. Если нет рендера на сервере — это браузерное приложение и оно должно работать само по себе жсоном.
Вы серьезно считаете, что ошибка авторизации по токену никак бы не обрабатывалась?
В реальном коде было четыре(!) уровня вложенности, и от них реально было никуда не деться. Я писал пример по памяти, так что…
я к нему всегда как к референсу обращаюсь
Да, промисы помогают решать мелкие полезные задачи, но общий workflow на них проектировать — себе дороже.
Я это понял в один момент, когда реализовывал на них авторизацию на отзываемых токенах со сроком действия.
Было как-то так
Только кода еще больше было нагромождено. Промисы хороши там, где идет цепочечная обработка данных, не более. Если сложная логика — всегда будет куча замыканий даже с промисами.
на генераторах же будет как-то так
(я, правда, не пользовался ни разу возвращаемым значением, сделал код так более понятным, как мне кажется).
И как вы понятную и человекочитаемую рекурсию на промисах сделаете?
У меня регулярно бывают задачи по выборке из базы данных с рекурсивными условиями (сейчас, например — взять первые n элементов, отсортированных по приоритету, с условием, что берутся все элементы с заданным приоритетом, и общая выборка не меньше определенного числа), их на промисах охренеешь делать.
В общем промисы — да, это удобно. Но перегрето. Полгода-год назад вообще какая-то истерия про них была, непонятная для меня.
Доказательство(пишу по памяти, могу где-то немного накосячить):
Неожиданно, правда? А все потому что это обертка поверх Object.create
А вообще без строгой типизации нормально как-то живется, если честно. С числами — js автоматически подбирает тип, представляйте это себе как абстрактный тип Number.
IntelliSense есть, да еще какой. Несколько решений есть, которые по сути выполняют код и подсказывают «живые» методы, один — забыл уже как называется, коммерческий, активно пиарился на хабре. Другой сейчас встроен в webStorm.