Цитата:
Вот я сделал потоки на основе именно языка: http://javascript.ru/forum/project/4...tml#post330243 и юзать их охренеть как удобно, очень хотелось бы иметь похожее из коробки. |
Кто то может объяснить что это за штука http://www.w3.org/TR/beacon/ ?
|
И еще вопрос Map, WeakMap, Set, WeakSet какая между ними разница, кроме названия?
|
cyber, глупый вопрос, неужто непонятно из пары строчек описания?
|
Set - набор одиночных уникальных значений.
Map - набор значений типа key: value. Weak типы - это не перечисляемые аналоги Set и Map и они не могут содержать в качестве ключа не объекты, а нужны для более простой очистки памяти. var s = new WeakSet(); // Мы добавили анонимный объект в WeakSet, // но т.к. на него нет внешних ссылок, // то он будет немедленно удалён сборщиком мусора s.add({}); Пример из жизни WeakMap: у меня на сервере в нём лежат {объект соединения пользователя : ИД сессии} и когда рвётся связь и объект соединения удаляется, то он автоматически чистися из WeakMap. |
Цитата:
|
Цитата:
Цитата:
var s = new Set(); s.add({}); // Мы всегда можем получить ссылку на значения через перечисление s.forEach ... s.keys ... |
kobezzza, Спасибо, а что скажешь насчет Beacon API не совсем пойму где эта штука может пригодится
|
Цитата:
|
kobezzza,понял, спасибо
|
Итак, снова хорошие новости: https://chromium.googlesource.com/v8...767db00c5b9791
И в догонку свежая статья на английском про модули http://24ways.org/2014/javascript-modules-the-es6-way/ |
Цитата:
Правд es6-module-transpiler оказался глюченым говном, поэтому сделал на основе своего Monic. .pipe(monic({ replacers: [ // Поддержка ES6 modules function (text) { text = text .replace(/export\s+(?:var|const|let)\s+([^\s=]+)\s*=/g, 'this.$1 =') .replace(/exports\s*\./g, 'this.') .replace(/export\s+(function\s+([^(]+))/g, 'this.$2 = $1') .replace(/export {([^}]+)};?/g, function (sstr, $1) { return $1.split(',').reduce(function (res, el) { el = el.split(/\s+as\s+/); el[0] = el[0].trim(); res += 'this.' + (el[1] || el[0]) + ' = ' + el[0] + ';\n'; return res; }, ''); }); text = '(function () {\n' + text + '\n}).call(this);'; return text.replace( /^\s*import\s+(.*?)\s+from\s+('|")(.*?)\2;?/gm, function (sstr, nm, q, url) { nm = nm.replace(/{|}/g, ''); nm = nm.split(',').reduce(function (res, el, i) { el = el.trim(); if (i !== 0) { res += ',\n'; } res += el + ' = this.' + el; return res; }, 'var ') + ';'; return '' + '//#include ' + url + '\n\n' + nm; } ); } ] })) Хардкод, но работает нормально :) |
kobezzza,
попробуй 6to5. Он полон плюх из ES6, в т.ч. модули. Сам я его долго не мог использовать, потому, что авторы забыли залить его ;( Теперь с Трансплитера перешёл на 6to5 и код даже не пришлось менять, в отличие от перехода с Трэйсера на Трансплитер. |
Цитата:
|
kobezzza,
не, ну ты же просто попробуешь, а не в продакшн зальёшь) К тому же ты можешь пробежаться тестами, это должно гарантировать хоть какую-то надёжность, не? //сам пока модули в 6то5 не тестил Там, кстати, и async есть) |
Цитата:
Цитата:
Цитата:
|
kobezzza,
Цитата:
------------------------------------------------------------------- Кстати, кто как оформляет свой es6[7]-код? Ведь в язык добавились новые синтаксические конструкции. Мб где-то уже есть годные стайл-гайды? |
Цитата:
Цитата:
|
kobezzza,
Цитата:
Цитата:
Может быть много вариантов: let f = ()=>{}; let f = ()=> {}; let f = () =>{}; let f = () => {}; someF((a) => {}); someF(a => {}); |
Цитата:
|
kobezzza,
тоже самое) |
Часть проектов перевёл на 6to5, но вот большие уже не скомпилились из-за багов в трансляторе, запостил им)
|
kobezzza,
что-то ты быстро решил на него проекты перевести) Как я понимаю, Collection и Snakeskin не скомпилировались? |
Цитата:
1) Больше фич, причём есть даже из ES7; 2) Хорошая дока (в es6-transpiler её толком и нет); 3) Быстрый отклик разработчика: после моего вопроса он ответил через минуту, а в es6-transpiler баги висят месяцами незакрытые; 4) Субъективно работает быстрее. Цитата:
https://github.com/marijnh/acorn/issues/173 Надеюсь быстро пофиксят и тогда я перекомпилю все проекты. |
|
kobezzza,
Цитата:
Так EcmaScript Harmony это же 6, а не 7 версия, автор малясь напутал, не? |
Цитата:
Цитата:
|
Эх, пока перевод на 6to5 пришлось отложить из-за ряда багов и недоработок транслятора, жду когда автор всё починит.
|
Цитата:
|
Насчёт скорости 6to5 я погорячился, вот сравнение: Collection на es6-transpiler сборка 3сек, а на 6to5 30сек.
Но насчёт оперативности автора - это просто мега респект ему. Я сегодня постил баги и он просто в течении минут сразу же их фиксил и выпускал релиз, итого 4 критических бага (ломающих код), которые я сегодня нашёл он уже пофиксил. |
kobezzza,
Цитата:
Цитата:
Вот мне интересно, можно ли отрубить трансляцию конкретных фич? Что бы, например, let a = 'value';транслировалось как есть. |
Цитата:
Цитата:
|
kobezzza,
о, крутота, спасибо) |
Добавил хотелку:
https://github.com/6to5/6to5/issues/256 |
|
Всё круто, но в продакшне-то можно использовать?
|
kobezzza,
он прям мысли читает) FINoM, ну... смотря какой продакшн. Если покрываешь всё тестами и количество кода на клиенте тебе не особо важно, то, наверное, можно. |
Цитата:
|
FINoM,
значит пока нельзя) |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 14:28. |