The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск серверной JavaScript-платформы Node.js 17.0"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск серверной 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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

2. Сообщение от Аноним (2), 19-Окт-21, 23:05   +/
А давно нода позволяет юзать await на верхнем уровне?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #4, #22

3. Сообщение от QwertyReg (ok), 19-Окт-21, 23:23   –12 +/
Один из лучших фрейморков. Без шуток: малоопытная веб-макака может накидать на нём приличное приложение, для которого понадобилась бы команда пожилых сишников. При этом количество ошибок будет одинаково, в первом случае - из-за дырок в Ноде и ошибок веб-макаки, а во втором - из-за архитектурно устаревшей платформы.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9, #11, #25, #27

4. Сообщение от Ненавижу SJW (?), 19-Окт-21, 23:25   +2 +/
Ну в JS эту фичу завезли не так уж и давно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #5

5. Сообщение от Ненавижу SJW (?), 19-Окт-21, 23:26   +/
Хотя наверное правильнее сказать в браузерные движки
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

7. Сообщение от Аноним (7), 19-Окт-21, 23:27   +/
А посоветуйте актуальной литературы? Ну там лучшие гайдлайны, популярные пакеты, всё вот это. В топе выдачи гугла ничего приличного нет. Лет 10 не трогал ноду.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #15

8. Сообщение от Правильная вебмакака (?), 19-Окт-21, 23:29   –4 +/
А для меня нода умерла когда мс купил.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #31

9. Сообщение от 1 (??), 19-Окт-21, 23:32   +2 +/
Сравнил молоток с пилой, неуч
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

10. Сообщение от YetAnotherOnanym (ok), 19-Окт-21, 23:33   +1 +/
> FTP

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

Ответить | Правка | Наверх | Cообщить модератору

11. Сообщение от Аноним (11), 19-Окт-21, 23:35   +/
Без шуток: малоопытная веб-макака может сломать столько, сколько не сможет сломать команда опытных инженеров.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

15. Сообщение от Аноним (15), 20-Окт-21, 00:08   +1 +/
https://github.com/HowProgrammingWorks/Index/blob/master/Cou...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #44

18. Сообщение от Аноним (18), 20-Окт-21, 01:09   –5 +/
Вот это днищенское дно... постоянные критические ошибки и уязвимости. В каждом выпуске. И конца и краю этому не видно.

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

Ответить | Правка | Наверх | Cообщить модератору

19. Сообщение от Аноним (19), 20-Окт-21, 01:48   –5 +/
Нельзя не восхититься всё-таки изяществом JS как языка с его прототипным ООП. Где ещё найдешь такое?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #20, #26

20. Сообщение от Аноноша (?), 20-Окт-21, 02:18   +/
> изяществом JS как языка с его прототипным ООП

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

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

22. Сообщение от Шелмимо (?), 20-Окт-21, 07:28   +/
Обзываем файл в виде name.mjs и получаем await на верхнем уровне.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #24, #36

23. Сообщение от kai3341 (ok), 20-Окт-21, 07:33   –2 +/
>  Выпуск серверной JavaScript-платформы Node.js 17.0

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #32

24. Сообщение от Шелмимо (?), 20-Окт-21, 07:41   +1 +/
Да, это все начиная с v14.
В v12 еще нет такой фичи.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

25. Сообщение от Вася Вэбмакакин (?), 20-Окт-21, 07:43   +1 +/
Это всё-таки не фреймворк, а среда выполнения. И на чистой ноде никто обычно приложения не пишет ибо есть куча более удобных менее трудозатратных инструментов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

26. Сообщение от Наноним (?), 20-Окт-21, 07:46   +/
Lua. Вообще Lua увернулся от "болезни С++", в отличие от ECMAScript. В Lua до версии 5.4 тащили только действительно нужные вещи. Единственная вещь, которой там реально не хватает - RAII, но её и в жабаскрипте нет.
С Lua ситуация "в топку программирование, стану проституткой" не так вероятна, там язык очень простой и, главное, понятный, а не это "this может указывать на класс метода, а может не указывать", "у нас один оператор для конкатенации строк и сложения чисел". И рантайм не весит минимум 20 мегабайт, как у ноды
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #28, #29, #35, #49, #53

27. Сообщение от Аноним (27), 20-Окт-21, 08:29   +/
На чем программируете вы?
Вы так огульно называете javascript программистов вебмакаками, что прямо интересно.
В школе на паскале/бейсике?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

28. Сообщение от Аноним (31), 20-Окт-21, 08:37   –1 +/
Из-за конструкций типа ~= Lua полностью и бесповоротно не нужен.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

29. Сообщение от n00by (ok), 20-Окт-21, 08:39   +1 +/
RAII помимо захвата ресурса при инициализации подразумевает детерминированное освобождение, что затруднено при использовании сборки мусора.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

30. Сообщение от ryoken (ok), 20-Окт-21, 08:41   –4 +/
Опять эта хрень час пересобираться будет... Какой осёл вообще додумался браузер на ней делать..?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #50

31. Сообщение от Аноним (31), 20-Окт-21, 08:41   +/
... мс купил npm. Но с другой стороны npm максимально ненужный трешняк, который сделал из здравой идеи полное УГ.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #34

32. Сообщение от Аноним (32), 20-Окт-21, 08:45   +4 +/
Потому что кто-то скачивает каждый раз свежую node при каждом билде?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #48

34. Сообщение от пох. (?), 20-Окт-21, 09:06   +/
ну и пиши каждый раз новый лефтпад!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

35. Сообщение от анон (?), 20-Окт-21, 09:13   +/
Жаль только вакансий маловато, а которые есть Lua указан как второй язык
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

36. Сообщение от Агент (?), 20-Окт-21, 09:50   +/
Ничего мы не получаем, получаем разве что файл статического импорта, .mjs-расширение которого вообще то формальность, и который ещё нужно импортировать. И какое отношение статические импорты/экспорты имеют к промисам/async/await?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #38

38. Сообщение от Шелмимо (?), 20-Окт-21, 10:09   +1 +/
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$

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #39, #40

39. Сообщение от Агент (?), 20-Окт-21, 10:14   –1 +/
Вопрос был в чём? Предоставить .mjs-модуль и что? Должна была произойти магия, где сразу можно await использовать? С промисом и я могу.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #41

40. Сообщение от Шелмимо (?), 20-Окт-21, 10:15   +/
Кстати нода сама подсказывает эту фичу: если попытаться использовать await за пределами async, он подскажет что await можно использовать так же в теле модуля.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

41. Сообщение от Шелмимо (?), 20-Окт-21, 10:16   +1 +/
Причем тут с промисом?
await в принципе применим либо к промису либо к async функции.
Речь о том, что await можно использовать в верхнем уровне без всяких async если файл - модуль.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #42, #56

42. Сообщение от Шелмимо (?), 20-Окт-21, 10:18   +3 +/
Вот так, чтобы понятнее было что имеется в виду:

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$

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41

44. Сообщение от Аноним (7), 20-Окт-21, 12:14   +1 +/
Во-первых, это не литература. Текст гораздо проще воспринимать. Во-вторых, это ужасно. Ужасное качество записи, нет нормального микрофона, диктор мычит и толчёт воду в ступе, шокает и гыкает. Очень много времени тратит на совсем уж примитивные и очевидные вещи, повторяя их по несколько раз. Удручающе,
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

48. Сообщение от kai3341 (ok), 20-Окт-21, 21:40   +/
> Потому что кто-то скачивает каждый раз свежую node при каждом билде?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

49. Сообщение от DeadMustdieemail (??), 20-Окт-21, 22:27   +/
Ага.

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #52

50. Сообщение от Аноним (50), 20-Окт-21, 23:00   +/
А что плохого? Ну кроме С++ под капотом?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #55

52. Сообщение от Аноноша (?), 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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49

53. Сообщение от Аноноша (?), 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...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

54. Сообщение от Аноним (-), 21-Окт-21, 09:42   +/
самый безопасный инструмент, миллионы самых быстрых программистов проверяют в продакшине
Ответить | Правка | Наверх | Cообщить модератору

55. Сообщение от ryoken (ok), 21-Окт-21, 13:29   +/
> А что плохого? Ну кроме С++ под капотом?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

56. Сообщение от Шпаньков (?), 21-Окт-21, 14:05   +/
>await в принципе применим либо к промису либо к async функции.

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру