• Unlike a browser environment, every node module gets its own private scope
  • Using the import VARIABLE from 'A_NODE_MODULE'; syntax, the default object of the A_NODE_MODULE is exported


  • Express is a wrapper around NodeJS HTTP and HTTPS core modules
  • Although the core modules are very powerful, more complex requests would involve writing lots of boilerplate code. Express is used to circumvent this and replace a lot of boilerplate with magic

Directory Structure

  • src directory contains all JavaScript frontend modular code
  • public directory contains all static frontend assets like CSS, HTML and JavaScript
  • api directory contains all files related to the backend API server


  • import "./something" will automatically look for something.js, so there is no need to include the file extension in the import parament
  • Multiple import statements will import from the cache after the first successful import so it's OK to import the same value multiple times
  • Variables defined in an imported module are not automatically available in the importing module (i.e. these variables are not on a global scope)
    • NodeJS therefore automatically scopes variables in modules without the need for an IIFE


  • The destructure syntax is used to import non-default exports. Constants and functions can then be invoked as if they were available locally