05.01.2015, 19:55
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
Ruslan_xDD,
так трансляторы в помощь)
|
|
05.01.2015, 21:02
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Ruslan_xDD, в простом Object в качестве ключа может выступать только строка, а в Map или Set любое значение, включая объекты и это просто ну мега круто, юзаю уже больше года - не нарадуюсь.
Например, на сервере (в ноде), нужно добавлять авторизованных юзеров в специальную таблицу и иметь быстрый способ проверки:
// WeakMap выбран потому, чтобы при разрыве соединения клиента с сервером,
// оно автоматически удалилось бы и из map
var map = new WeakMap();
createServer(function (req, res) {
...
// req - это специальный объект-подключения юзера, экземпляр класс ReadStream
var user = map.get(req);
if (!user ) {
map.set(req, {
sessionId: ...,
...
});
}
});
Цитата:
|
Даже если понадобится, то вряд ли заюзаю, ибо поддержка браузерами пока что плохая, и это ещё на несколько лет затянется.
|
Сейчас абсолютно все актуальные браузеры поддерживают: Map, WeakMap, Set (а вот WeakSet есть не везде), на ноде также в режиме --harmony всё работает.
Для фич вроде let или arrow function давно использую транслятор и сейчас абсолютно все мои разработки на ES6, а ES5 хочу забыть как страшный сон.
https://github.com/6to5/6to5
***
Конечно, многие вещи можно было делать и в ES5/3, и кажется зачем учить новое если есть старое, но это не правильный подход, ибо ES6 позволяет делать вещи объективно лучше и проще, а чтобы понять "зачем эти фичи", то нужно просто начать их использовать и понимание придёт.
Последний раз редактировалось kobezzza, 05.01.2015 в 21:34.
|
|
06.01.2015, 06:20
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
kobezzza, это всё очень интересно, заюзаю как-нибудь, когда время придёт.
Слушай, а как трансляторы работают? Ведь если я напишу let в старом браузере, то это будет ошибка. Полагаю, трансляторы просто парсят скрипты, заменяя let на var и т.д.? А то я в этом пока не очень понимаю. Или транслятор - это вообще не то, о чём я подумал?
Последний раз редактировалось ruslan_mart, 06.01.2015 в 06:44.
|
|
06.01.2015, 08:24
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
Ruslan_xDD,
а на вопрос отвечает Safort из команды знатоков
Цитата:
|
Слушай, а как трансляторы работают? Ведь если я напишу let в старом браузере, то это будет ошибка. Полагаю, трансляторы просто парсят скрипты, заменяя let на var и т.д.?
|
Да, трансляторы парсят твой ES6 и хитрым(иногда не очень) образом заменяют на более громоздкие конструкции из ES5(если это возможно, конечно).
|
|
06.01.2015, 10:34
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Ruslan_xDD, как уже сказал выше Safort, то трансляторы парсят твой код, а затем преобразуют его в ES5/3. По такому же принципу работают TypeScript, CoffeeScript и т.д.
https://6to5.org/repl.html - тут можно поиграться, например,
function foo() {
var a = 1;
if (a) {
let a = 2;
let b = () => this;
}
}
Превратится в
function foo() {
var _this = this;
var a = 1;
if (a) {
var _a = 2;
var b = function () {
return _this;
};
}
}
|
|
06.01.2015, 11:02
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от Ruslan_xDD
|
kobezzza, это всё очень интересно, заюзаю как-нибудь, когда время придёт.
|
новая жизнь с понедельника)
... я уже перестал с нового года кофе пить так же... *глоток кофе*
|
|
06.01.2015, 11:10
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
kobezzza, очень хочу поизучать CoffeeScript, но пока не очень понимаю, он только в Node.js? На клиенте можно? Если да, то как его подключать? А то гугл не даёт точных ответов, поэтому не могу вникнуть.
|
|
06.01.2015, 11:14
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
kobezzza, очень хочу поизучать CoffeeScript, но пока не очень понимаю, он только в Node.js? На клиенте можно? Если да, то как его подключать? А то гугл не даёт точных ответов, поэтому не могу вникнуть.
|
Можно, трансляторы подключатся по принципу:
1) Ты пишешь код на языке А;
2) Затем вызываешь транслятор и сохраняешь результат, который уже и используешь.
Для автоматизациии процесса трансляции можно использовать FileWatcher-ы в IDE или системы сборки, например, Gulp или Grunt.
http://www.youtube.com/watch?v=TspTo...ature=youtu.be - это видео я сделал для своего языка Snakeskin, но принцип одинаков для всех транслируемых языков.
Последний раз редактировалось kobezzza, 06.01.2015 в 11:24.
|
|
06.01.2015, 11:18
|
|
Профессор
|
|
Регистрация: 30.04.2012
Сообщений: 3,018
|
|
kobezzza, всё-таки значит я не так понимал, спасибо.
Я думал, что работает по такому принципу:
В хейдере подключаем, допустим, coffee:
<script src="CoffeeScript.js></script>
Потом на странице где нибудь пишем скрипт:
<script type="text/coffeescript">
код
</script>
И он на ходу парсится и эвалится в JS.
Спасибо за разъяснения, теперь более-менее понятно, что такое трансляторы.
|
|
06.01.2015, 11:23
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Так как ты предлагаешь тоже можно, но сам понимаешь, что такой подход уж слишком избыточен и затратен, по этому этап трансляции обычно делают предварительно.
|
|
|
|