URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 125575
[ Назад ]

Исходное сообщение
"Выпуск серверной JavaScript-платформы Node.js 17.0"

Отправлено opennews , 19-Окт-21 23:04 
Состоялся релиз Node.js 17.0, платформы для выполнения  сетевых приложений на языке JavaScript. Node.js 17.0 относится к ветке с обычным сроком поддержки, обновления для которой будут выпускаться до июня 2022 года. В ближайшие дни будет завершена стабилизация ветки Node.js 16, которая получит статус LTS и будет поддерживаться до апреля 2024 года. Сопровождение прошлой LTS-ветки Node.js 14.0 продлится до апреля 2023 года, а позапрошлой LTS-ветки 12.0 до апреля 2022 года...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=55997


Содержание

Сообщения в этом обсуждении
"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 19-Окт-21 23:05 
А давно нода позволяет юзать await на верхнем уровне?

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Ненавижу SJW , 19-Окт-21 23:25 
Ну в JS эту фичу завезли не так уж и давно

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Ненавижу SJW , 19-Окт-21 23:26 
Хотя наверное правильнее сказать в браузерные движки

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Шелмимо , 20-Окт-21 07:28 
Обзываем файл в виде name.mjs и получаем await на верхнем уровне.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Шелмимо , 20-Окт-21 07:41 
Да, это все начиная с v14.
В v12 еще нет такой фичи.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Агент , 20-Окт-21 09:50 
Ничего мы не получаем, получаем разве что файл статического импорта, .mjs-расширение которого вообще то формальность, и который ещё нужно импортировать. И какое отношение статические импорты/экспорты имеют к промисам/async/await?

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Шелмимо , 20-Окт-21 10:09 
form@work:/tmp$ cat test.mjs
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

console.log(new Date());
await sleep(2000);
console.log(new Date());
form@work:/tmp$ node test.mjs
2021-10-20T07:09:19.174Z
2021-10-20T07:09:21.179Z
form@work:/tmp$


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Агент , 20-Окт-21 10:14 
Вопрос был в чём? Предоставить .mjs-модуль и что? Должна была произойти магия, где сразу можно await использовать? С промисом и я могу.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Шелмимо , 20-Окт-21 10:16 
Причем тут с промисом?
await в принципе применим либо к промису либо к async функции.
Речь о том, что await можно использовать в верхнем уровне без всяких async если файл - модуль.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Шелмимо , 20-Окт-21 10:18 
Вот так, чтобы понятнее было что имеется в виду:

form@work:/tmp$ node test.mjs
2021-10-20T07:17:53.543Z
2021-10-20T07:17:55.548Z
form@work:/tmp$ mv test.mjs test.js
form@work:/tmp$ node test.js
/tmp/test.js:4
await sleep(2000);
^^^^^

SyntaxError: await is only valid in async functions and the top level bodies of modules
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1025:15)
    at Module._compile (node:internal/modules/cjs/loader:1059:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1147:10)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47

Node.js v17.0.0
form@work:/tmp$


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Шпаньков , 21-Окт-21 14:05 
>await в принципе применим либо к промису либо к async функции.

Нет. await применим к абсолютно любому значению. Это просто сахар над Thenable.

await 123 // 123
await null // null
await {} // {}
await { then(r) { r('hello') } } // 'hello'


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Шелмимо , 20-Окт-21 10:15 
Кстати нода сама подсказывает эту фичу: если попытаться использовать await за пределами async, он подскажет что await можно использовать так же в теле модуля.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено QwertyReg , 19-Окт-21 23:23 
Один из лучших фрейморков. Без шуток: малоопытная веб-макака может накидать на нём приличное приложение, для которого понадобилась бы команда пожилых сишников. При этом количество ошибок будет одинаково, в первом случае - из-за дырок в Ноде и ошибок веб-макаки, а во втором - из-за архитектурно устаревшей платформы.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено 1 , 19-Окт-21 23:32 
Сравнил молоток с пилой, неуч

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 19-Окт-21 23:35 
Без шуток: малоопытная веб-макака может сломать столько, сколько не сможет сломать команда опытных инженеров.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Вася Вэбмакакин , 20-Окт-21 07:43 
Это всё-таки не фреймворк, а среда выполнения. И на чистой ноде никто обычно приложения не пишет ибо есть куча более удобных менее трудозатратных инструментов.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 20-Окт-21 08:29 
На чем программируете вы?
Вы так огульно называете javascript программистов вебмакаками, что прямо интересно.
В школе на паскале/бейсике?

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 19-Окт-21 23:27 
А посоветуйте актуальной литературы? Ну там лучшие гайдлайны, популярные пакеты, всё вот это. В топе выдачи гугла ничего приличного нет. Лет 10 не трогал ноду.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 20-Окт-21 00:08 
https://github.com/HowProgrammingWorks/Index/blob/master/Cou...

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 20-Окт-21 12:14 
Во-первых, это не литература. Текст гораздо проще воспринимать. Во-вторых, это ужасно. Ужасное качество записи, нет нормального микрофона, диктор мычит и толчёт воду в ступе, шокает и гыкает. Очень много времени тратит на совсем уж примитивные и очевидные вещи, повторяя их по несколько раз. Удручающе,

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Правильная вебмакака , 19-Окт-21 23:29 
А для меня нода умерла когда мс купил.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 20-Окт-21 08:41 
... мс купил npm. Но с другой стороны npm максимально ненужный трешняк, который сделал из здравой идеи полное УГ.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено пох. , 20-Окт-21 09:06 
ну и пиши каждый раз новый лефтпад!

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено YetAnotherOnanym , 19-Окт-21 23:33 
> FTP

Ретрограды! Луддиты!


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 20-Окт-21 01:09 
Вот это днищенское дно... постоянные критические ошибки и уязвимости. В каждом выпуске. И конца и краю этому не видно.

При том как я понимаю дело не в самом Node JS, а в убогом HTTP протоколе.


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 20-Окт-21 01:48 
Нельзя не восхититься всё-таки изяществом JS как языка с его прототипным ООП. Где ещё найдешь такое?

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноноша , 20-Окт-21 02:18 
> изяществом JS как языка с его прототипным ООП

Настолько изящным, что раньше почти все писали свои обертки для создания классов и в ES2015 наконец-то завезли нормальный синтаксис для этого на уровне языка.

> Где ещё найдешь такое?

См. список тут https://en.wikipedia.org/wiki/Prototype-based_programming


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Наноним , 20-Окт-21 07:46 
Lua. Вообще Lua увернулся от "болезни С++", в отличие от ECMAScript. В Lua до версии 5.4 тащили только действительно нужные вещи. Единственная вещь, которой там реально не хватает - RAII, но её и в жабаскрипте нет.
С Lua ситуация "в топку программирование, стану проституткой" не так вероятна, там язык очень простой и, главное, понятный, а не это "this может указывать на класс метода, а может не указывать", "у нас один оператор для конкатенации строк и сложения чисел". И рантайм не весит минимум 20 мегабайт, как у ноды

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 20-Окт-21 08:37 
Из-за конструкций типа ~= Lua полностью и бесповоротно не нужен.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено n00by , 20-Окт-21 08:39 
RAII помимо захвата ресурса при инициализации подразумевает детерминированное освобождение, что затруднено при использовании сборки мусора.

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено анон , 20-Окт-21 09:13 
Жаль только вакансий маловато, а которые есть Lua указан как второй язык

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено DeadMustdie , 20-Окт-21 22:27 
Ага.

> там язык очень простой и, главное, понятный

Особенно хорошо в Lua с числовыми типами (все целые пусть будут вещественными, так ведь гораздо удобнее!).
А уж как там чудесно работа с Юникодом устроена - не пересказать!


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноноша , 21-Окт-21 00:09 
> Ага.
>> там язык очень простой и, главное, понятный
> Особенно хорошо в Lua с числовыми типами (все целые пусть будут вещественными,
> так ведь гораздо удобнее!).
> А уж как там чудесно работа с Юникодом устроена - не пересказать!

https://www.lua.org/manual/5.3/readme.html#changes

> Main changes
>
>    integers (64-bit by default)
>    official support for 32-bit numbers
>    bitwise operators
>    basic utf-8 support


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноноша , 21-Окт-21 00:13 
> Единственная вещь, которой там реально не хватает - RAII, но её и в жабаскрипте нет.

Его и не будет, т.к. сборка мусора недетерминированна. Для задач очистки ресурсов см.

1. https://github.com/tc39/proposal-explicit-resource-management
2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено kai3341 , 20-Окт-21 07:33 
>  Выпуск серверной JavaScript-платформы Node.js 17.0

ага, вот почему у меня билд фронта упал


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 20-Окт-21 08:45 
Потому что кто-то скачивает каждый раз свежую node при каждом билде?

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено kai3341 , 20-Окт-21 21:40 
> Потому что кто-то скачивает каждый раз свежую node при каждом билде?

Потому, что CI проверяет актуальность docker image при каждом билде
И нет, я был неправ. Свежая nodejs была не при делах


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено ryoken , 20-Окт-21 08:41 
Опять эта хрень час пересобираться будет... Какой осёл вообще додумался браузер на ней делать..?

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 20-Окт-21 23:00 
А что плохого? Ну кроме С++ под капотом?

"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено ryoken , 21-Окт-21 13:29 
> А что плохого? Ну кроме С++ под капотом?

Ну я ж говорю - пересобирается долго :D.


"Выпуск серверной JavaScript-платформы Node.js 17.0"
Отправлено Аноним , 21-Окт-21 09:42 
самый безопасный инструмент, миллионы самых быстрых программистов проверяют в продакшине