Ile razy człowiek się męczył aby zwykły formularz ze zmiennymi zapisać w js 😉
Z pokonaniem tego problemu sięgamy po template string. Używamy tego znaku (`) znajduje się on nad tabulatorem z angielskiego backtick, po naszemu odwrócony apostrof a zmienne umieszczamy w takiej formie ${zmienna}
Wszystko razem można zapisać `${zmienna}`
A teraz małe przykłady.
Powiedzmy że mamy sobie obiekt.
var person = {
name: 'Greg',
job: 'front-end',
city: 'Warszawa'
}
A html to:
var html =
'<div class="person">'+
'<h1>' + person.name + '</h1>' +
'<h2>' + person.job + ' ' + person.city + '</h2>' +
'</div>';
A nie prościej tak?:
const html = `
<div class="person">
<h1>${person.name}</h1>
<h2>${person.job} ${person.city}</h2>
</div>
`;
Oczywiście można te zmienne mnożyć, dodawać odejmować itd. 🙂
const x = 1;
const y = 2;
const result = `${ x + y }`;
console.log(result); // 1 + 2 = 3
Taki zapis jak pokazałem niesamowicie skraca nam pracę i mniej błędów popełniamy, ale jest jeden problem i to poważny a zwie się on IE (Internet Explorer) 🙂
Niestety nasz kod musi być jeszcze przez jakiś czas wstecz kompatybilny ze starymi przeglądarkami, dlatego w swojej pracy używam gulp, webpacka a czasami je również łączę.
Małe wytłumaczenie:
1. Gulp to, oparty o platformę Node.js, system do automatyzacji pracy. Głównym jego zadaniem jest więc zautomatyzowanie wielu czynności, jakie musi wykonać programista podczas swojej pracy. Przykład użycia - zerknij tutaj
2. Webpack to narzędzie, które rozwiązuje problem dzielenia kodu na moduły i pozwala łatwo zarządzać zależnościami występującymi między nimi.
Więcej poszukajcie sobie w google bo naprawdę warto znać te technologie.
Wracając do naszego problemu z IE i nie tylko, ja użyłem biblioteki gulp-bable
Najpierw instalacja z linii komend biblioteki gulp-babel
npm install --save-dev gulp-babel babel-core babel-preset-es2015
Teraz dodajemy do gulpfile.js naszą bibliotekę oraz task
const gulp = require('gulp');
const babel = require('gulp-babel');
gulp.task('js', function () {
return gulp.src('src/**/*.js')
.pipe(babel({
"presets": ["es2015"]
}))
.pipe(gulp.dest('dist'));
});
Taki kod w pliku template.js który chcemy zmienić na es2015 umieszczamy w folderze src
const person = {
name: 'Greg',
job: 'front-end',
city: 'Warszawa'
}
const html = `
<div class="person">
<h1>${person.name}</h1>
<h2>${person.job} ${person.city}</h2>
</div>
`;
console.log(html);
const x = 1;
const y = 2;
const result = `${ x + y }`;
console.log(result);
Po uruchomieniu taska js w folderze dist otrzymujemy js zmieniony na es205, wynik poniżej
'use strict';
var person = {
name: 'Greg',
job: 'front-end',
city: 'Warszawa'
};
var html = ' <div class="person"> <h1>' + person.name + '</h1> <h2>' + person.job + ' ' + person.city + '</h2> </div>';
console.log(html);
var x = 1;
var y = 2;
var result = '' + (x + y);
console.log(result);
I ten kod załączamy do naszej strony będzie działać również ze starszymi przeglądarkami.
Oczywiście to tylko pobieżne poruszenie tego tematu, więcej w google 😉