Prior to the training, participants should install specific software and possess a solid understanding of JavaScript. This includes its philosophy, syntax (including recent additions), key built-in objects, and common quirks. Below is a list of said prerequisites.
Comment
Software
Mandatory
- Node.js LTS (20.x)
- Git 2.40+
- Visual Studio Code
Mandatory extensions:
Vue - Official
eslint
Live Share
Strongly recommended extensions:
Vue Ecosystem Snippets
Other recommended extensions:
change-case
gitignore
indent-rainbow
indenticator
Git Graph
GitLens
Recommended
- Volta
___ is ___.
This instructor-led, live training (online or onsite) is aimed at beginner-level / intermediate-level / advanced-level ___ who wish to use ___ to ___.
By the end of this training, participants will be able to:
- Install and configure ___.
- ___.
- ___.
- ___.
Format of the Course
- Interactive lecture and discussion.
- Lots of exercises and practice.
- Hands-on implementation in a live-lab environment.
Course Customization Options
- To request a customized training for this course, please contact us to arrange.
Brief history
Basics
JavaScript "monothread"
Blocking / Non-Blocking
Event loop
EventEmitter interface
NPM
What is NPM
npm CLI commands
Hands-on: create a simple project
Other NPM registry clients
yarn
bun
pnpm (my personal favorite)
A word on lock files
Hands-on: replace npm with pnpm
Hands-on: use @antfu/ni
The package.json file
package scripts
Hands-on: create some scripts and use them
The callback pattern
What are callbacks
Callback-last
Error-first
"Callback hell"
Hands-on
Node REPL
First Hello World
Hello World with http
Hello World with express
Nodemon
what is nodemon
how to use it
how to configure it for TypeScript
Hands-on: add nodemon to project
ESLint
Reminder: what is ESLint
Recent important changes in ESLint
Introducing @eslint/style
Introducing @antfu/eslint-config
Hands-on: Add eslint and @antfu/eslint-config to the project
Hands-on: Create a lint and a format script
Hands-on: Configure VSCode for ESLint with flat-config
Fastify
Why Fastify
Hello world with Fastify
TypeScript with Fastify
Handle errors in Fastify
Add routes in Fastify
Hands-on: add routes for signup and signin
Introduce prisma (ORM)
Hands-on: add prisma and postgres to project and basic schemas for users
Use prisma with Fastify
Hands-on: use prisma client in the signup and signin routes
Introducing Zod
Hands-on: use zod to validate inputs for the signup and signin routes
Introducing security issues
CORS
Encrypting Password with bcrypt
About passwords (even encrypted) in the API output
Introducing vite
Introducing vite-plugin-node
Hands-on: use vite-plugin-node in the project
Swagger
Introducing swagger
Introducing @fastify/swagger
Introducing @fastify/swagger-ui
Hands-on: use @fastify/swagger and @fastify/swagger-ui in the project
Handle dates in JavaScript (TypeScript)
Why moment is deprecated
Introduction to luxon, successor of moment (from the creator of moment)
Introduction to Day.js
Introduction to date-fns (my personal favorite)