Я не знаком с новыми условными обозначениями JavaScript ES6 и получил некоторый код, где мне нужно, чтобы он был простым старым JavaScript ES5.Convert ES6 Javascript для ES5 без трансилера
Было бы очень полезно, если бы люди могли помочь с преобразованием этого кода js без использования Babel или любого другого транспилятора.
Нельзя использовать Вавилон, поскольку его нельзя использовать на работе.
Я понимаю, что все «const» могут быть преобразованы в «var», но не уверены в новых функциях стрелок и других элементах.
Пытались преобразования, но получение:
Uncaught ReferenceError: линия не определена
код ES6, что я хотел бы преобразовать в ES5 является:
const data = [{ "rec": "1", "region": "LEFT", "intrface": "Line-1" },{ "rec": "1", "region": "LEFT", "intrface": "Line-2" },{ "rec": "1", "region": "RIGHT", "intrface": "Line-3" },{ "rec": "1", "region": "RIGHT", "intrface": "Line-4" }];
const s = Snap("#svg");
const height = 40;
const canvasWidth = 400;
const lineWidth = 180;
const rightOffset = canvasWidth/2 - lineWidth;
const leftLines = data.filter((line) => !isRightLine(line));
const rightLines = data.filter(isRightLine);
leftLines.forEach(drawLine);
rightLines.forEach(drawLine);
const numberOfLines = Math.max(leftLines.length, rightLines.length);
const rectSize = 20;
const rectangles = [];
for (let i = 0; i < numberOfLines; i++) {
rectangles.push(drawRect(i));
}
function drawLine(data, index) {
const {intrface} = data;
const isRight = isRightLine(data);
const x = isRight ? canvasWidth/2 + rightOffset : 0;
const y = height * (index + 1);
const stroke = isRight ? 'red' : 'black';
const line = s.line(x, y, x + 180, y);
line.attr({
stroke,
strokeWidth: 1
});
const text = s.text(x + 10, y - 5, intrface);
text.attr({
fill: stroke,
cursor: 'pointer'
});
text.click(() => {
console.log('clicked', data);
//window.location.href = "http://stackoverflow.com/";
});
}
function isRightLine({region}) {
return region === 'RIGHT';
}
function drawRect(index) {
const x = canvasWidth/2 - rectSize/2;
const y = height * (index + 1) - rectSize/2;
const rectangle = s.rect(x, y, rectSize, rectSize);
rectangle.attr({
fill: 'black'
});
console.log('rr', x, y);
return rectangle;
}
Только преобразование может быть недостаточным, если let/const были использованы правильно, вы могли бы реорганизовать его с помощью подъема. Также почему нет использования babel? –
Почему бы не просто использовать Babel и посмотреть на выход? Они получают большую часть этого права. – Bergi
Эти два экземпляра функций стрелок могут тривиально заменяться функциональными выражениями, и ничто не сломается. – Bergi