Ruslan_xDD,
так трансляторы в помощь) |
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: ...,
...
});
}
});
Цитата:
Для фич вроде let или arrow function давно использую транслятор и сейчас абсолютно все мои разработки на ES6, а ES5 хочу забыть как страшный сон. https://github.com/6to5/6to5 *** Конечно, многие вещи можно было делать и в ES5/3, и кажется зачем учить новое если есть старое, но это не правильный подход, ибо ES6 позволяет делать вещи объективно лучше и проще, а чтобы понять "зачем эти фичи", то нужно просто начать их использовать и понимание придёт. |
kobezzza, это всё очень интересно, заюзаю как-нибудь, когда время придёт. :)
Слушай, а как трансляторы работают? Ведь если я напишу let в старом браузере, то это будет ошибка. Полагаю, трансляторы просто парсят скрипты, заменяя let на var и т.д.? А то я в этом пока не очень понимаю. :-? Или транслятор - это вообще не то, о чём я подумал? |
Ruslan_xDD,
а на вопрос отвечает Safort из команды знатоков ![]() Цитата:
|
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;
};
}
}
|
Цитата:
... я уже перестал с нового года кофе пить так же... *глоток кофе* |
kobezzza, очень хочу поизучать CoffeeScript, но пока не очень понимаю, он только в Node.js? На клиенте можно? Если да, то как его подключать? А то гугл не даёт точных ответов, поэтому не могу вникнуть. :-?
|
Цитата:
1) Ты пишешь код на языке А; 2) Затем вызываешь транслятор и сохраняешь результат, который уже и используешь. Для автоматизациии процесса трансляции можно использовать FileWatcher-ы в IDE или системы сборки, например, Gulp или Grunt. http://www.youtube.com/watch?v=TspTo...ature=youtu.be - это видео я сделал для своего языка Snakeskin, но принцип одинаков для всех транслируемых языков. |
kobezzza, всё-таки значит я не так понимал, спасибо. :)
Я думал, что работает по такому принципу: В хейдере подключаем, допустим, coffee: <script src="CoffeeScript.js></script> Потом на странице где нибудь пишем скрипт: <script type="text/coffeescript"> код </script> И он на ходу парсится и эвалится в JS. Спасибо за разъяснения, теперь более-менее понятно, что такое трансляторы. :) |
Так как ты предлагаешь тоже можно, но сам понимаешь, что такой подход уж слишком избыточен и затратен, по этому этап трансляции обычно делают предварительно.
|
| Часовой пояс GMT +3, время: 13:07. |