Сегодня копался в настройках 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, время: 22:29. |