Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   JS.next(стандарты, фичи, движки) (https://javascript.ru/forum/offtopic/50248-js-next-standarty-fichi-dvizhki.html)

Safort 18.09.2014 14:55

JS.next(стандарты, фичи, движки)
 
Предлагаю в этом треде обсуждать/вопрошать всё, что связано с будущим JS: стандартами(ES6/7/8), фичами, движками, и прочими новостями из мира нового JS.

Сейчас на подходе ES6, многие фичи уже реализованы в последних версиях браузеров. Пока лидером по реализованным фичам является [не]всеми любимая Панда.

Кто из форумчан уже опробовал новый мясной JS со вкусом ES6?
Как вам?
Используете его в продакшене или только на своих личных проектах?
C помощью транслятора или любите рисковать?)
Если не используете, то почему? Ждёте полной поддержки в браузерах или не понравилось?

kobezzza 18.09.2014 15:28

Использую давно, ну это и так все знают :)

Safort 18.09.2014 15:36

Пожалуй, начну. кобеззза опередил)
Недавно начал активно юзать шестёрку в маленьком пробном проекте, и знаете, она довольно хороша. Чаще всего использую стрелочные функции, параметры по умолчанию и классы(не на полную). Раньше ещё let использовал, но Traceur не может в него. Немного `новое форматирование ${строк}` и объявление методов без function. Пока это всё, что успел.

Safort 18.09.2014 15:46

kobezzza,
ну и как? Насколько [не]доволен новыми возможностями?

kobezzza 18.09.2014 17:58

Цитата:

Сообщение от Safort (Сообщение 331167)
kobezzza,
ну и как? Насколько [не]доволен новыми возможностями?

В целом доволен. Раздражает медлительность внедрения фич. Также некоторые фичи сделаны неверно на мой взгляд, например строки шаблоны выглядят недоработанными, т.к. не декларативного способа вырезать переходы строк и начальные пробелы.

***

Потом сомнительна фича shorthand properties:

var a = 1,
     b = 2;

var c = {a, b};


Гораздо лучше, чтобы данный синтаксис отдали под литерал для Set:

var c = {a, b} // new Set(['a', 'b'])


Т.к. очень часто приходится писать такое:

var c = {
    foo1: true,
    foo2: true,
    foo3: true
};


И это правда раздражает.

Вообще нужно больше литералов:

{a: 1} // Object
[1] // Array
int32[1] // Int32Array
{a, b} // Set
{{a: 1, b: 2}} // Map


Литералы регулярных выражений нужно дорабатывать! Обязательно нужна поддержка разбиения на строки и комментариев

var pattern = ///
  ^\(?(\d{3})\)? # Capture area code, ignore optional parens
  [-\s]?(\d{3})   # Capture prefix, ignore optional dash or space
  -?(\d{4})        # Capture line-number, ignore optional dash
///



***

Мне не нравится подход к рефлексии через объект Proxy, почему нельзя было сделать это на основе Symbol?

var a = {
    @@noSuchMethod() {
        ...
    }

    @@delete() {
        ...
    }
};


Тем более такой подход используется в ES6, так почему бы его не сделать для рефлексии также.

***

Нужно больше встроенных коллекций, кто сказал, что в JS они не нужны? Вообще стандартная библиотека в JS на редкость убогая.

Также необходима хорошая доработка для API коллекций: во первых его нужно сделать универсальным на столько, на сколько это возможно и добавить больше методов.

***

Нужна нормальная опциональная декларация типов, хватит костылись с jsDoc.

***

Нужны нормальные потоки на уровне языка и не нужно рассказывать, что JS однопоточный. Потоки нужны, без них современный язык выглядит кастратом.


***

Нужна поддержка асинхронного программирования на уровне синтаксиса (промисы - это хорошо, но этого мало):

async () {
    var result = await $.getJSON(url);
}


Ну т.е. как сейчас делают на генераторах, но более продвинуто.

***

Нужна возможность нормальной трансляции JS в байткод и загрузки уже его, а не исходного текста.

***

Т.к. JS можно считать веб-ориентированном языком, то нужна поддержка шаблонов на уровне синтаксиса


var a = { ... };

function foo() {
    ...
}

template bar() {
    < h1
        Hello World!
}



***

Нужна универсальная обёртка для запросов к БД, аля Linq

....

Много чего нужно :)

Safort 18.09.2014 22:13

kobezzza,
Цитата:

Раздражает медлительность внедрения фич.
И не говори..

Цитата:

например строки шаблоны выглядят недоработанными, т.к. не декларативного способа вырезать переходы строк и начальные пробелы.
Хоть мне это пока не мешает, но тоже кажется некрасивым решением.

Цитата:

Вообще нужно больше литералов
Согласен) Вообще, люблю литералы, все эти new Map()/Set()/WeakMap() кажутся громоздкими в сравнении с литералами.


Цитата:

Нужна нормальная опциональная декларация типов, хватит костылись с jsDoc.
Цитата:

Нужна поддержка асинхронного программирования на уровне синтаксиса (промисы - это хорошо, но этого мало)
Если не путаю, это всё хотят добавить в семёрке, так?


Цитата:

Нужна универсальная обёртка для запросов к БД, аля Linq
Базаришь. С БД на клиенте столько мороки.



Но ведь ты можешь предложить эти фичи поцонам из рабочей группы, чтобы они впихнули их ES7. Вероятность не так уж высока, но почему бы и нет?)

Safort 18.09.2014 22:27

И ещё вот какой вопросец. В классах ES6 есть возможность использовать ключевое слово super(). Что оно делает? Как я понял из статей на английском, super позволяет вызвать конструктор родительского класса как свой. Я прав или как обычно?)

Safort 20.09.2014 14:54

http://blogs.msdn.com/b/ie/archive/2...m-roadmap.aspx
Ну вот, теперь и в IE уже работают над классами. Хотя модули под вопросом, странные люди)

Safort 08.10.2014 10:46

Релиз Хрома с поддержкой Map, Set, for...of, Symbol и математическими функциями из ES6: http://www.opennet.ru/opennews/art.shtml?num=40773

kobezzza 08.10.2014 10:48

Алилуйя. Поддержка была давно, но она включалась флагами, что не айс было.


Часовой пояс GMT +3, время: 09:56.