Kurs om
Grundkurs i Node.js
Kurs om hur du utvecklar applikationer i Node.js
Node.js har på mindre än ett decennium fullständigt ändrat perceptionen av JavaScript och vad det kan användas för. Plattformen har klart kommit att starkt utmana Java som applikations utvecklings platform.
Ett vanligt begrepp är full-stack development, som innebär användning av JS på browser-client sidan i form av SPA ramverk som Angular eller Vue, användning av JS på server sidan i form av Express REST web services servrar och användning av JS/JSON i databasen i form av Firestore med flera.
I den här kursen får du lära dig grunderna i Node.js, såsom streams och event-emitter, samt praktisk tillämpning av detta och bekantskap med några av de vanligaste ramverken. Vidare, får du också lära dig om de vanligaste ramverken i Node, såsom Express, Jest, fetch, med flera.
Node.js utvecklas i snabb takt, med två releaser per år, vilket ställer krav på att vara uppdaterad med det senaste som Node stödjer.
Denna kurs har precis blivit uppdaterad och omarbetad till att innefatta Node version 18. Detta innebär bland annat att vi i de större programexemplen använder ES modules (ESM), async functions och rent allmänt använder språket till fullo.
Snabbfakta
Namn
Grundkurs i Node.jsLängd
3 dagarNivå
IntermediateMålgrupp
JavaScript programmerareFörkunskaper
God erfarenhet av att programmera i JavaScriptProgramvara & Verktyg
- Node.js & NPM & NPX
- MS Visual Code || JetBrains WebStorm
- Chrome || Firefox || Edge
Relaterade Kurser
Detta får du lära dig på kursen
Här är ett sammandrag i punktform av vad du får lära dig på kursen. Eftersom kursmaterialet är författat på engelska, så återger vi sammandraget också på engelska.
- Understand how Node.js executes
- Write programs with event emitters
- Write programs that handle files
- Implement HTTP clients and servers
- Implement web applications with Express.js
- Implement REST web services with Express.js
- Using a MySQL database
- Perform unit testing with Jest
Kursdatum
Här ser du vilka kursdatum som är tillgängliga. Klicka på en av datumknapparna för att anmäla dig till ett kurstillfälle. På kursen pratar läraren svenska, medan vårt kursmaterial alltid är författat på engelska.
Missa inte vår samfaktureringsrabatt! Är ni fler personer från samma företag/organisation som går på samma kurs, rabatteras tillkommande personer med 25%. Ni anmäler er till kursen en och en, men uppger samma företag, så ordnar vi resten. Samtliga deltagare från samma företag ingår på samma faktura, den första till fullt pris och resterande till rabatterat pris.
Klassrum
Du sitter bekvämt i ett av våra klassrum, vilka finns centralt placerade i Stockholms innerstad.
I priset ingår tryckt kursmaterial (och som PDF), samt kaffe/te med smörgås på förmiddagen och kaffe/te med bulle på eftermiddagen.
Pris: 18 000 kr + moms
Fjärrkurs
Du sitter bekvämt framför datorn och deltar i kursen via internet. Vi använder programvaran Zoom för alla våra fjärrkurser.
I priset ingår kursmaterial som PDF.
Pris: 14 000 kr + moms
Företagsinternt
Om ni är tre eller fler personer från samma företag eller organisation, kan ni beställa en företagsanpassad kurs. Då håller vi kursen på ett datum som passar er. Antingen på plats i era lokaler eller som en fjärrkurs. Vi kan också hålla den muntliga framställningen på engelska.
Klicka på knappen nedan för att be om en offert.
Kursinnehåll
Eftersom kursmaterialet är författat på engelska, så återger vi innehållet också på engelska.
Background and Overview
- History
- Ryan Dahl
- Properties
- Architecture
- Wrapping the LINUX system API
- Installation of NodeJS and NPM
- Running the REPL
- Running script files
- NodeJS API documentation
1 - MODULES
Common.js Modules
- Modules in Node.js
- Understanding require()
- Usage of built-in (core) modules
- User-defined file modules
- User-defined folder modules
- Modules folder
- Understanding the module concept
- Scope
- IIFE
- The module design pattern
- How to implement a simple require()
- A glims beind Node's own implementation of require()
ES Modules (ESM)
- ES versions and Node.js
- What is ES modules?
- ESM support in Node and from which version
- How to apply ESM in modern Node
- Export forms
- Import forms
- Path forms
- Importing core API modules
Using TypeScript with Node.js
- Anders Hejlsberg
- Brief about strong typing
- Installation of TS
2 - REMOTE MODULES
Using NPM
- Isaac Z Schluter
- What is NPM?
- Installation of a NPM local package
- Installation of a remote NPM package
- Dependencies, app vs. dev
- Useful commands
- Beware of the node-bloat problem
- Publishing a NPM package
- Using a private NPM registry
- Verdaccio
- Alternatives to NPM, such as PNPM and Yarn
Node Scripts
- Node shell scripts
- Deployment
- Installation
Using NPX
- The problem of globally installed Node scripts
- Install locally and use NPX
- How to install ephemerally and use NPX
- Usage of the package option
- NPX is really NPM exec
- Kick-starting a fresh project
- Script entries in package.json
3 - ASYNCHRONOUS EXECUTION
Call-Backs
- How do JS execute?
- The JS event loop
- The JS call-back queue
- The event loop of Node
- Postponed and periodic computation
- The Node API is a wrapper around the Linux API
- Why you cannot translate a C program straight into Node
- Understanding the continuation style
Promises
- Limitations of the call-back model of design
- Understanding a JS promise
- Using promises
- Promise chain
- Usage of .then() and .catch()
- How to convert a function taking a call-back into a function returning a promise
Async Functions
- Similarity between a promise-chain and a try-catch block
- Async functions in ES2017
- Using async and await
- Async lambda
- Using await in a loop
- Top-level await in ES2020
4 - Emitters and Streams
Event Emitters
- What is an event emitter in Node?
- Event types and listeners
- Emitter definition
- Simple emitter
- Receive events
- Receive an event just once
- Dealing with event errors
Buffers
- What is a Node buffer?
- Allocating a buffer
- Usage of a buffer
- Slicing a buffer
- Encodings
Streams
- What is a Node stream?
- Using .pipe()
- Stream types
- Implementing a Readable
- Implementing a Writable
- Implementing a stream transformer
- Assembly of stream pipeline
- The LineTransformer
- The SplitTransformer
- The Array2ObjectTransformer
- The JsonArrayTransformer
- Useful helper libraries
5 - CORE API
Working with Processes
- Child processes in Node
- Using execFile()
- Using exec()
- Using spawn()
- Using fork() and send messages
- Handling POSIX signals
- Sending signals
Working with Files
- The fs module
- List of functions with Linux similarities
- Promised based functions
- The path module
- POSIX error codes
- Different ways writing to stdout
HTTP Server
- List of built-in network services
- A simple HTTP server
- Serving files
- A simple REST WS server
HTTP Client
- Simple GET request
- Handling errors
- Simple POST request, sending data
6 - SELECTED FRAMEWORKS
Unit Testing with Jest
- Installation and configuration
- Jest and ESM and how to make it work
- Writing a test function
- Test suite execution
- Understanding matchers
- User-defined matcher
- Testing exceptions
- Testing async code
- Test code coverage
- Life-cycle functions
HTTP Client with Fetch
- Why use a 3rd party lib for HTTP client access?
- Installation and configuration of node-fetch
- Simple GET request
- Performing non-GET requests
- Sending data
- Simple CRUD REST sequence
- Using json-server
HTTP Server with Express
- Why use a 3rd party lib for HTTP server provisioning
- Installation and configuration
- Simple Express app
- Understanding app components
- Defining routes
- Defining filters
- Defining middlewares
- Simple HTML/CSS/JS based web app using Express
- Template engines
- Implementation of a simple template engine
- Using the Express generator
- Simple REST WS server with CRUD operations
Using a MySQL Database
- Installation och configuration of mysql2
- Connecting to a MySQL server
- How to create and drop tables
- How to perform basic CRUD operations
- An Express app using Handlebars template and engine and a MySQL database
- Brief about installing MySQL
- Installing and using MySQL using a Docker container
7 - Tools
Transpilers
- What is a transpiler?
- JavaScript transpilers
- Installation and usage of Babel
- HTML transpilers
- Usage of Pug
- CSS transpilers
- Usage of SCSS
- Post-processors
- Minification
Builders
- What is a build tool?
- Using Gulp
Bundlers
- What is a bundler?
- Typical operations of a bundler
- Popular bundlers
- Using Parcel
- Using Vite