Advanced JavaScript for Front-end Developers

Duration
2 Days
Online Duration
2 Days
Prerequisites

It is expected that delegates will be familiar with the fundamentals of JavaScript. The Introduction to Modern JavaScript is the perfect preparation for this course.

Course Contents

The main focus of this course is to work with experienced developers to significantly raise their level of knowledge and understanding of JavaScript/ECMAScript, JavaScript frameworks and libraries

Introduction and Recap

Recap key aspects of JavaScript/ECMAScript

  • Recap of JavaScript/ECMAScript/ES
  • List the various versions and their support
  • Discuss equality (difference between == and ===)
  • Discuss advantages of immutable values
  • Review different string literals (template strings)
  • Understand variable hoisting
  • Discuss the disadvantages of using statements over expressions

Recap and More on Object Literals

  • Recap Object literals and defining properties and methods
  • Define accessors (aka getters/setters)
  • Using shorthand property names
  • Appreciate the Destructuring assignment for objects
  • Use destructuring to when using immutable objects
  • Using constructors

Dealing with null and undefined

  • understand the difference between null and undefined
  • Problems of nullish (null/undefined)
  • Protecting against nullish values
  • Using logical operators (&& and ||)
  • Appreciate Conditional Chaining (es2020)
  • Appreciate Nullish coalescing operator (es2020)

Front-end Development (tools)

  • Introduce Node.js (for front-end development)
  • Setting up a new project
  • Managing dependencies using npm and/or yarn

Modules

  • Introducing modules (ES Modules (ESM), CommonJS, …)
  • Defining and using modules (exporting/importing)
  • Using ESM in the browser

Babel

  • Introduce Babel
  • Setting up a babel project
  • Appreciate babel plugins and presets
  • Use and configure the preset-env
  • Introduce Browserlist
  • Defining browserlist queries to define your target browsers

Webpack

  • Introduce webpack
  • Using webpack
  • Understand webpack's architecture
  • Understand and define entry points and outputs
  • Using and configuring the development-server
  • Discuss tree shaking
  • Using loaders
  • Using plugins
  • Introduce asset modules (and how they replace certain loaders)
  • Configuring Webpack for CSS and SASS
  • Using various optimisations

Functional JavaScript

  • Principles of Functional Programming
  • Functional Programming in JavaScript
  • Dealing with state and mutability
  • Recap Functions as values
  • Recap Higher-order functions
  • Recap Lambda/arrow functions
  • Using clojures
  • Use Function members (this,apply/call, arguments)
  • partially applied functions
  • Currying in JavaScript
  • Combining functions using the Pipeline operator (|>)
  • Using recursion
  • Functional Libraries

Classes

  • Explain the concept of Prototypical inheritance
  • Defining ES classes
  • Defining methods
  • Defining constructor functions
  • Overriding methods and constructors
  • Defining fields (using ES2020) = Defining private fields
  • Adding static members
  • Class inheritance

Key APIs

  • Using Promise for asynchronous code
  • Defining promises
  • Handling Promise errors
  • Combining promises
  • Using async/await
  • Using XHR to interact with servers
  • Using the fetch API
  • Using the history API

Testing / BDD

  • Introduce the importance of testing
  • Discuss different testing techniques (unit, bdd, e2e)
  • Introduce Jasmine
  • Setup up Jasmine
  • Writing Suites and Specs
  • Writing Asynchronous code
  • Mocking and Stubbing using Spies
  • Mocking time
For an onsite course please contact us