LINUX.ORG.RU
ФорумTalks

node.js 5.0 вышла

 ,


0

1

https://github.com/nodejs/node/blob/master/CHANGELOG.md

Похоже версии ноды скоро начнут меняться как у хрома. Единственное заметно изменение, которое нашел, связано с апгрейдом v8 - spread operator.

С другой стороны, может оно и хорошо, что новые версии не вызывают кардинальных изменений. Добавляются понемногу фичи es6 и ладно. Стал даже задумываться, не пора ли осилить транспилеры и в браузере тоже на es6 перейти. Стрелочки => прикольные :)

★★★★★

Последнее исправление: Vit (всего исправлений: 1)

Babel классный. Хоть я и очень консервативен, но вот сейчас на работе пишем на ES6, и нравится, очень нравится.

xenohunter
()

Оно уже перестало быть однопоточным и тормозным?

hateyoufeel ★★★★★
()
Ответ на: комментарий от VladimirMalyk

И сражаться с кардиналами потом.

Dron ★★★★★
()
Ответ на: комментарий от VladimirMalyk

Не принципиально. Вопрос в сборщике приложения. Я отдельную тему под это создал. Похоже то что у меня пора переделывать.

Vit ★★★★★
() автор топика

А зачем вообще node.js? Что оно может эксклюзивного?

Не троллинга ради, понять вообще хочу. Мало нам js в браузерах и страницах?

ekzotech ★★★★
()
Ответ на: комментарий от ekzotech

А чем тебе JS не нравится? хочешь ООП обмазывайся, а хочешь - функциональщиной. А можно вообще как на Cи писать - без того и без другого, только if else return false;

uin ★★★
()
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от uin

Оператор «больше или равно» пишется в сокращенном виде в том же порядке, «>=».
А () => {}; - синтаксис определения функции.

unikoid ★★★
()
Ответ на: комментарий от ekzotech

Ничего. Только заявлять что thread-based networking is relatively inefficient.

Zaskar
()
Ответ на: комментарий от unikoid

invalid arrow-function arguments (parentheses around the arrow-function may help)

Ах, и правда.

синтаксис определения функции.

Смысл написанного для меня пока загадка.

uin ★★★
()
Ответ на: комментарий от uin

Как простому пользователю этих ваших интернетов с этими вашими js - только тем, что сайты с js сильно тормозят.

ekzotech ★★★★
()
Ответ на: комментарий от uin

Смысл написанного для меня пока загадка.

Компактно + не слетает this. Для .map(), .forEach() и прочей функциональщины удобно однострочники лепить.

Vit ★★★★★
() автор топика

Релизы будут два раза в год. Эта версия вышла так быстро, потому что четвертая нода вышла не в ногу с будущим графиком.

zz ★★★★
()
Ответ на: комментарий от ekzotech

Чтобы фронтендщики могли собирать своё говно не изучая какой-либо другой язык.

Kilte ★★★★★
()
Ответ на: комментарий от zz

Хм. Я может неправильно понимаю концепцию, но если один и тот же сайт одновременно дёрнут 100 (условно) юзверей - они ж нахрен положат его с такой нагрузкой, не?

ekzotech ★★★★
()
Ответ на: комментарий от ekzotech

Это в общем шутка была, но если реально перенести все что делает фронтэнд на сервер - покупка серверов не проблема юзеров.

zz ★★★★
()

Мажорная версия обусловлена не существенными изменениями, а ломающими обратную совместимость изменениями.

Они придерживаются стандарта Semantic Versioning.

Y ★★
()
Ответ на: комментарий от ekzotech

http://dev.rcopen.com/

Иди, дергай :) . Там пока 1 процесс все обслуживает. Распараллелить на все ядра руки не дошли еще.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Y

Не, они будут выпускать мажоры каждый октябрь и апрель, то что тут поломана обратная совместимость - это совпадение.

zz ★★★★
()
Ответ на: комментарий от Deleted

Прототипное ООП то ещё говно.

Прототипное не ООП вопервых а наследование, потому что без наследования прототипное ООП ничем не отличается от не прототипного, во вторых чем оно такое уж говно? Eсли оно еще раз повторю ничем не отличается, просто все последующие типы/подтипы наследуют автоматом то что мы им назначили.

И слабая типизация.

А зачем тебе строгая? Ну пиши как нибудь так тогда:

var num = Number(64)
var str = String('Mystra_x')
var arr = new Array(str, String(num))
arr.join('')

uin ★★★
()
Ответ на: комментарий от Y

Нет, это такое новое расписание релизов.

zz ★★★★
()
Ответ на: комментарий от uin

Прототипное не ООП вопервых а наследование, потому что без наследования прототипное ООП ничем не отличается от не прототипного, во вторых чем оно такое уж говно?

Писать на нём пробовал? Заниматься работой компилятора дело неблагодарное.

А зачем тебе строгая? Ну пиши как нибудь так тогда:

Норкоман, да? Синтаксис строгой типизации не предполагает наркоманства, как у тебя указано. См.: Ruby, Python.

Ну, и, да, от того, что ты написал так, как написал выше, жуёс не стал строготипизированным.

Deleted
()
Последнее исправление: Mystra_x64 (всего исправлений: 2)
Ответ на: комментарий от Deleted

Дык на прототипах вроде никто многоуровнего наследования и не монстрит. Обычно хватает миксинов и микромодулей. А там с прототипами все пучком.

Ну а для особо упоротых можно настоящие классы собрать. В шестерочке болезным даже родных классов завезли.

Vit ★★★★★
() автор топика
Последнее исправление: Vit (всего исправлений: 1)
Ответ на: комментарий от ekzotech

А зачем вообще node.js?

Затем, что мы можем использовать один только JS в вебе. Что на клиенте, что на сервере. Ещё он очень быстрый.

th3m3 ★★★★★
()
Ответ на: комментарий от Vit

В шестерочке болезным даже родных классов завезли.

Но ведь class - всего лишь синтаксический сахар, по факту у нас тут все равно функции - конструкторы и т.д.

unikoid ★★★
()
Ответ на: комментарий от uin

Г-споди, надеюсь ты понимаешь, чего ты сейчас понаписал? К сильной типизации этот код (как и весь JS) отношения не имеет никакого.

unikoid ★★★
()
Ответ на: комментарий от Deleted

Писать на нём пробовал? Заниматься работой компилятора дело неблагодарное.

Причем здесь работа компилятора?

var user_1 = new User('gpl-фанбой', 50)
var user_2 = new User('либераст-кун', 50)

function User(nik, i) {
   this.name  = nik;
   this.score = i;
   this.say_words = "";
}

User.prototype.say = function(w) {
   //все объекты типа User наследуют это свойство
   this.say_words = this.say_words +" "+ w;
}

function moderateUsers(users, callback) {
   User.prototype.lose = function(n) {
      //все объекты типа User внутри этой функции наследуют это свойство
      this.score = this.score - n;
   }
   for (var i = 0; i < users.length; i++) {
      if (!users[i])
         continue;
      callback(users[i]);
   }
}

user_1.say('свободка Столлман анальное рабство')
user_2.say('попил россиюшка честные выборы трактор')

moderateUsers([
   user_1, user_2
], function(user) {
   String.prototype.offense = function() {
      //все строки внутри этой функции наследуют это свойство
      var m7 = this.match(/анальное\sрабство/ig)
      var m20 = this.match(/попил|честные\sвыборы/ig)
      return (m7 ? m7.length * 7 : 0) + (m20 ? m20.length * 20 : 0);
   }
   user.lose(user.say_words.offense())
   console.log(user.name +": "+ user.score +" скора осталось.")
})

от того, что ты написал так, как написал выше, жуёс не стал строготипизированным.

unikoid

К сильной типизации этот код (как и весь JS) отношения не имеет никакого

Да - не имеет, да - не становится, контролируйте/проверяйте типы в ручную, пишите так что бы они не переопределялись, если прям кровь из носу строгая типизация нужна.
Все что я хотел сказать.

uin ★★★
()
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от foror

Ну, да, будет Wasm. Почему такие выводы? Все поголовно будут писать веб-приложения на C++? ;) Нет же. Это делается совсем для других вещей. Скажем, запуск в браузере игр типо GTA, музыкальных студий типо Ableton и т.д. Ну и можно хорошо будет ускорить веб-приложение, если будет какое-то узкое место. Хотя, это можно сделать уже сейчас, написать библиотеку/модуль на C++.

th3m3 ★★★★★
()
Ответ на: комментарий от Vit

Они не родные же, а сахар для того же прототипирования. Правда не щупав не скажу насколько он сладкий.

Deleted
()
Ответ на: комментарий от th3m3

мы можем использовать один только JS в вебе. Что на клиенте, что на сервере

Это можно было было делать ещё со времен netscape server. Ну и классический asp поддерживал jscript.

pawnhearts ★★★★★
()
Ответ на: комментарий от pawnhearts

Может быть и можно было. Вот только где оно всё? Ни модулей, ни крутых фич. Только Node.JS смогла всё сделать это.

th3m3 ★★★★★
()
Ответ на: комментарий от uin

Да - не имеет, да - не становится, контролируйте/проверяйте типы в ручную, пишите так что бы они не переопределялись, если прям кровь из носу строгая типизация нужна.

Строгая типизация как раз для того, чтобы _не_ контролировать/проверять.

templarrr ★★★★★
()
Ответ на: комментарий от templarrr

Нет, строгая типизация это когда типы не переопределяются.
Например если в руби строку «desu» умножить на 2 будет «desudesu», если умножить 2 на «desu», то в теории должно получится чило в desu двоек, но так как десу это неизвестно сколько и вообще так делать нельзя, такой код отвергается. Все четко, строго, иерархично, математично.
В JS же если строку умножить на число получится NaN (NaN - это число которое говорит что оно не число), а если сложить два массива получится вообще строка.

uin ★★★
()
Ответ на: комментарий от uin

//все объекты типа User внутри этой функции наследуют это свойство

Не.
Все объекты типа User после первого вызова этой функции получают метод lose. Мерзенький сайд-эффект, тащемта.

unikoid ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.