This book is for all front-end developers who wish to improve their JavaScript skills. Youll need to be familiar with HTML and CSS and have a reasonable level of understanding of JavaScript in order to follow the discussion.
Conventions Used
Code Samples
Code in this book is displayed using a fixed-width font, like so:
A Perfect Summer's Day
It was a lovely day for a walk in the park.The birds were singing and the kids were all back at school.
Where existing code is required for context, rather than repeat all of it, will be displayed:
function animate() { new_variable = "Hello";}
Some lines of code should be entered on one line, but weve had to wrap them because of page constraints. An indicates a line break that exists for formatting purposes only, and should be ignored:
URL.open("http://www.sitepoint.com/responsive-web-design-real-user-testing/?responsive1");
Youll notice that weve used certain layout styles throughout this book to signify different types of information. Look out for the following items.
Tips, Notes, and Warnings
Hey, You!
Tips provide helpful little pointers.
Ahem, Excuse Me ...
Notes are useful asides that are relatedbut not criticalto the topic at hand. Think of them as extra tidbits of information.
Make Sure You Always ...
... pay attention to these important points.
Watch Out!
Warnings highlight any gotchas that are likely to trip you up along the way.
Chapter 1: A Beginners Guide to Babel
by James Kolce
This article introduces Babel, a JavaScript compiler that allows developers to use next-generation JavaScript today.
It can be frustrating to write JavaScript when building web applications. We have to think about the features available in the browsers were targeting and what happens when a feature isnt implemented. Some people would recommend simply not using it, which is a painful experience most of the time if were building something complicated.
Thankfully, some tools allow us to stop worrying about whats supported and just write the best code we can. Theyre called transpilers. A transpiler is a tool that takes source code as input and produces new source code as output, with a different syntax but semantically as close as possible or ideally equivalent to the original.
Babel is pretty much the standard transpiler to translate modern JavaScript (ES2015+) into compatible implementations that run in old browsers. Its the perfect solution if you just want to concentrate on writing JavaScript.
And although the main goal of Babel is to translate the latest standards of ECMAScript (ES) for old or sometimes current browsers, it can do more. Theres an ecosystem of presets and plugins that make possible the addition of non-standard features as well. Each plugin makes a new feature/transformation available for your code, and presets are just a collection of plugins.
Getting Started
There are different ways to set up Babel depending on your project and the tools you use. In this article, were going to explain how to set up Babel using the CLI, although if youre using a build system or framework, you can check out specific instructions on the official site. Most of the time the CLI is the fastest and easiest way to get started, so if youre a first-time user, feel free to continue.
The first step to set up Babel in a project is to install the package using npm and add it as a dev dependency. Assuming you have a working Node.js environment already in place, its just a matter of running the following in your terminal:
mkdir babel-testcd babel-testnpm init -ynpm install --save-dev babel-cli
This will create a directory (babel-test
) change into the directory, initialize an npm project (thus creating a package.json
file) and then install the babel-cli as a dev dependency.
If you need any help with the above, please consult our tutorials on installing Node and working with npm.
Next, we can open package.json
and add a build
command to our npm scripts:
"scripts": { "build": "babel src -d dist"}
This will take the source files from the src
directory and output the result in a dist
directory. Then we can execute it as:
npm run build
But wait! Before running Babel we must install and set up the plugins that will transform our code. The easiest and quickest way to do this is to add the Env preset, which selects the appropriate plugins depending on the target browsers that you indicate. It can be installed using:
npm install babel-preset-env --save-dev
Then create a .babelrc
file in the root of your project and add the preset:
{ "presets": ["env"]}
The .babelrc
file is the place where you put all your settings for Babel. Youll be using this primarily for setting up presets and plugins, but a lot more options are available. You can check the complete list in the Babel API page.