Сегодня копался в настройках Babel и нашел парочку интересных опций:
loose mode - в качестве конфига эта опция принимает массив трансоформеров, которые нужно скомпилить в "простом" режиме, что это значит - полученный код получается более читаемый и работает как правило быстрее, а достигается это за счёт отхождение от стандарта языка, т.е. поведение такого кода может отличатся от нативной реализации и использовать его нужно осторожно. auxiliaryComment - это параметр принимает строку, которая будет вставлена в виде комментария перед каждый куском кода, который был сгенерен в Babel и которого нет в оригинальном коде, например, можно задать 'istanbul ignore next' и потом, при обработке наших тестов через istanbul у нас не будет маячить сгенериный код, на мой взгляд это куда удобнее чем юзать специальные адапторы, вроде isparta. |
|
Свершилось! В Babel добавили поддержку абстрактных ссылок!
Песочница Как можно видеть из примера, что кейза применения 2: 1) Появляется сахарный синтаксис для организации "конвеерных фильтров", как в Bash и т.д. ' -1.121213 '::trim()::parseInt()::round()::abs() 2) Появляется сахар для bind(this) .onclick = ::foo.bar // foo.bar.bind(foo) |
|
kobezzza,
как-то внешний вид не очень ::foo.bar Может, я просто ещё не привык) |
Цитата:
|
До сих пор нативные промисы работают по-разному: https://github.com/promises-aplus/pr...pec/issues/193
|
PhpStorm не понимает синтаксис геттеров/сеттеров es6 классов и подсвечивает как ошибку :)
https://yadi.sk/i/-jC6XHS3gtQWZ |
nerv_, я плагин ставил какой то это решило проблему
|
Цитата:
|
Цитата:
проверь у себя, если не трудно Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Знаешь что такое backup? Умеешь делать? ЗЫ: У меня eap ни разу не упал и глючил в основном плагин stylus, из-за медлительности разработчика. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Ребят, как отключить часть транслятора Babel? В данном случае, хочу отключить for..of, так как разрабатываю одно приложение только под последний Хром, а этот вид цикла там работает и без Babel прекрасно.
|
FINoM,
какой сборщик используешь? Если Gulp, то попробуй так: ... .pipe(babel({ blacklist: ['es6.forOf'] })) ... И ещё пара ссылок с более подробной инфой: https://babeljs.io/docs/usage/options/ https://babeljs.io/docs/advanced/transformers/ |
Safort, уже понял, спасибо. Юзаю Grunt.
Возникла другая проблема (может не очень касается этой темы). Requirejs отказывается собирать проект из-за for..of: Running "requirejs:object" (requirejs) task >> Error: Parse error using esprima for file: >> /path/to/scripts >> Error: Line 246: Unexpected identifier >> In module tree: >> object Видимо, они не обновили парсер (здесь работает). Кто-то в курсе, как исправить проблему? |
FINoM,
а у тебя последняя версия Requirejs? Если да, то не вижу другого варианта, кроме как написать ишью. |
|
Цитата:
|
kobezzza,
давно юзаешь? |
Цитата:
|
Паттерн для организации Partial классов:
base.js export class Base { get() { return 1; } } child.js import { Base } from 'base'; export class Child extends Base { } child-mixin.js import { Child } from 'child'; extend(Child, /** @lends {Child.prototype} */ { // Аннотация для автокомплита в WS11 и GCC get() { return super.get(); // super работает } }); Сама функция extend function extend(Class, mixin) { mixin.__proto__ = Class.__proto__.prototype; for (let key in mixin) { Class.prototype[key] = mixin[key]; } } |
Цитата:
Еще момент - неочевидно название переменной obj, я бы лучше methods назвал. |
Цитата:
https://developer.mozilla.org/ru/doc...s/Object/proto И в той же ноде оно есть. Где ещё нужно-то?) |
Цитата:
Главное тут было показать, как организовывать полноценные Partial классы с работой super и автокомплитом. |
Цитата:
|
мда... пока я формулировал сообщение, trikadin и kobezzza уже успели меня опередить =)
|
Цитата:
Правда я не понимаю, почему они не заюзали Символы для этой задачи, например, let foo = { [Symbol.prototype]: { bar: 1 }, get() { return this.bar; } } Ведь символы для того и были созданы и они уже юзаются для таких задач, например, Symbol.iterator |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Object.defineProperty(Object.prototype, '__proto__', { set: function(value) { Object.setPrototypeOf(this, value); }, get: function() { return Object.getPrototypeOf(this); } }); или скорее: Object.setPrototypeOf = function(obj, value) { obj.__proto__ = value; }; Object.getPrototypeOf = function(obj) { return obj.__proto__; }; Я почему-то склоняюсь больше ко второму варианту, так как первый был реализован до второго. А насчет их осторожности, тут скорее просто хотят себя огородить от лишних проблем в будущем (вдруг захотят все же убрать свойство). |
Цитата:
|
Цитата:
Цитата:
__proto__ входит туда же, под индексом "B.2.2.1" - http://www.ecma-international.org/ec...type.__proto__ То есть, юзать, конечно же, можно, но, во-первых, отличные от браузеров окружения не обязаны его поддерживать, а во-вторых, это прямо не рекомендуется в спецификации (а значит, в один прекрасный момент может быть запрещено в каком-нибудь 2016 strict mode). |
Где можно посмотреть список фич ES7, поддерживаемых в Babel, желательно, с небольшими примерами?
|
Часовой пояс GMT +3, время: 05:12. |