Applications based on the ideas originating from the web are becoming ubiquitous – the technologies we once exclusively used to develop client-side web applications, executed in the browser, have spread to other domains, as shown in the figure below.
Now, we can use similar or even the same ideas and techniques to develop standard desktop applications (for example, code editors like Atom.io), hybrid mobile applications (for example Netflix), server-side applications (by using Node.js), and even applications for embedded devices (with Espruino or Tessel). It is very rare that a particular skill set is so easily transferable and useful across this many different domains.
- Functions as first-class objects
- Function closures, and
- Prototype-based object orientation
Understanding the browser
The browser provides a number of concepts and APIs that we’ll thoroughly explore; see the following figure.
Figure 3 Client-side web applications rely on the infrastructure provided by the browser, out of which we will particularly focus on events, timers, web workers and the DOM.
Client-side web applications are UI applications, and their UI is represented by the Document Object Model (DOM), which is, at least initially, built from the HTML code of a web application.
In a perfect world, all browsers would be bug-free and would support web standards in a consistent fashion, but unfortunately we don’t live in that world.
Figure 4 Understanding the core principles behind client-side web applications will make you a better developer in different domains.