-
Notifications
You must be signed in to change notification settings - Fork 1.2k
JavaScript NodeJS Course
NodeJS Course Overview
Below you can find the ordered content of the topic, in a linear progression
The linear progression of content aims to cover all content, course by course, workout by workout as follows:
- first course is the only core one, denoted by its manifest
- the next course is denoted by the first item of the next array in each course manifest
- each course has its order of workouts designated by the sections field in the same aforementioned manifest
1. intro-node
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | what-is-nodejs | ✅ | 👶 introduction | node-developer-environment.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | installing-node-js | ✅ | 👶 introduction | node-developer-environment.0: 10 | ✅ | ✅ | ❌ | ✅ |
3 | the-repl-terminal | ✅ | 👶 introduction | node-developer-environment.5: 10 | ✅ | ✅ | ❌ | ✅ |
4 | executing-programs-with-node | ✅ | 👶 introduction | node-developer-environment.5: 10 | ✅ | ✅ | ❌ | ✅ |
5 | npm-nodes-package-manager | ✅ | 👶 introduction | node-developer-environment.2: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
2. file-io
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | synchronous-file-write-read-in-node-js | ✅ | 👶 introduction 💪 workout |
node-standard-library-os.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | asynchronous-file-write-read-in-node-js | ✅ | 👶 introduction 💪 workout |
node-standard-library-os.0: 10 | ✅ | ✅ | ❌ | ✅ |
3 | async-file-write-in-node-js | ✅ | 👶 introduction 💪 workout |
node-standard-library-os.0: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
3. events
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | consuming-events | ✅ | 👶 introduction 💪 workout |
events-asynchronous-operations.0: 10 events-asynchronous-operations.1: 10 |
✅ | ✅ | ❌ | ✅ |
2 | listening-to-events-just-once | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | synchronous-event-delivery | ✅ | 👶 introduction 💪 workout |
events-asynchronous-operations.1: 20 | ❌ | ✅ | ❌ | ❌ |
4 | passing-arguments-to-listeners | ✅ | 👶 introduction 💪 workout |
events-asynchronous-operations.2: 20 | ❌ | ✅ | ❌ | ❌ |
5 | handling-event-errors | ✅ | 👶 introduction 💪 workout |
events-asynchronous-operations.1: 20 identify-common-design-patterns.5: 20 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
4. web-servers
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | the-http-module-for-servers | ✅ | 👶 introduction 💪 workout |
node-standard-library-os.2: 10 | ✅ | ✅ | ❌ | ✅ |
2 | http-server-in-node | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | basic-web-server-with-express | ✅ | 👶 introduction 💪 workout |
express-server.0: 10 express-server.1: 10 |
✅ | ✅ | ❌ | ✅ |
4 | custom-node-repl-server | ✅ | 💪 workout | express-server.0: 10 express-server.1: 10 use-modules.3: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
5. modules
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | what-are-node-modules | ✅ | 👶 introduction 💪 workout |
use-modules.0: 10 node-developer-environment.2: 10 |
✅ | ✅ | ❌ | ✅ |
2 | requiring-and-exporting | ✅ | 👶 introduction 💪 workout |
use-modules.0: 20 use-modules.1: 20 |
✅ | ✅ | ❌ | ✅ |
3 | local-modules | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | exports-vs-module-exports-in-node | ✅ | 👶 introduction 💪 workout |
use-modules.0: 10 use-modules.1: 10 |
✅ | ✅ | ❌ | ✅ |
5 | module-patterns | ✅ | 👶 introduction 💪 workout |
use-modules.1: 20 identify-common-design-patterns.6: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
6. streams
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | what-are-streams | ✅ | 👶 introduction 💪 workout |
read-and-write-streams.0: 20 node-standard-library-os.0: 20 events-asynchronous-operations.1: 20 |
✅ | ✅ | ❌ | ✅ |
2 | readable-streams | ✅ | 👶 introduction 💪 workout 🦑 deep |
❌ | ✅ | ✅ | ❌ | ❌ |
3 | piping-readable-streams | ✅ | 👶 introduction 💪 workout 🦑 deep |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | chaining-readable-streams | ✅ | 👶 introduction 💪 workout 🦑 deep |
read-and-write-streams.0: 20 node-standard-library-os.0: 20 events-asynchronous-operations.1: 20 |
✅ | ✅ | ❌ | ✅ |
5 | writable-streams | ✅ | 👶 introduction 💪 workout 🦑 deep |
read-and-write-streams.1: 20 node-standard-library-os.0: 20 events-asynchronous-operations.1: 20 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | try-catch-only-for-sync-code | ✅ | 👶 introduction 💪 workout |
identify-common-design-patterns.3: 10 | ✅ | ✅ | ❌ | ✅ |
2 | first-error-callbacks-in-node | ✅ | 👶 introduction 💪 workout |
identify-common-design-patterns.5: 10 | ✅ | ✅ | ❌ | ✅ |
3 | wrapping-errors-in-node-js-using-node-verror | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ❌ | ❌ |
4 | handle-json-parse-error-in-node-js | ✅ | 👶 introduction 💪 workout |
identify-common-design-patterns.3: 10 | ✅ | ✅ | ❌ | ✅ |
5 | uncaughtexception-listener-in-node-js | ✅ | 👶 introduction 💪 workout |
identify-common-design-patterns.5: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | operational-vs-programmer-errors | ✅ | 👶 introduction | identify-common-design-patterns.8: 10 | ✅ | ✅ | ❌ | ✅ |
2 | handling-operational-errors | ✅ | 👶 introduction 💪 workout |
identify-common-design-patterns.8: 10 identify-common-design-patterns.6: 10 |
✅ | ✅ | ❌ | ✅ |
3 | handling-programmer-errors | ✅ | 👶 introduction 💪 workout |
identify-common-design-patterns.4: 10 identify-common-design-patterns.5: 10 identify-common-design-patterns.6: 10 identify-common-design-patterns.8: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | styling-brackets-1 | ✅ | 👶 introduction | identify-common-design-patterns.7: 10 | ✅ | ❌ | ❌ | ❌ |
2 | styling-brackets-2 | ✅ | 👶 introduction | identify-common-design-patterns.7: 10 | ✅ | ✅ | ✅ | ✅ |
Exercises:
Game:
10. express
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | easy-way-to-deliver-html-pages-with-express | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
2 | response-object-additional-properties-in-express | ✅ | 👶 introduction | express-server.1: 10 express-server.7: 10 express-server.8: 10 |
✅ | ✅ | ❌ | ✅ |
3 | body-parser-in-express | ✅ | 👶 introduction | express-server.4: 10 | ✅ | ✅ | ❌ | ✅ |
4 | error-handler-in-express | ✅ | 👶 introduction | express-server.1: 10 express-server.9: 10 |
✅ | ✅ | ❌ | ✅ |
5 | using-express-4-0-router | ✅ | 👶 introduction | express-server.1: 10 express-server.2: 10 express-server.4: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
11. express-ii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | session-handling-in-express | ✅ | 👶 introduction | express-server.4: 10 http-request-response.12: 10 |
✅ | ✅ | ❌ | ✅ |
2 | cookie-session-in-express | ✅ | 👶 introduction | express-server.1: 10 express-server.4: 10 http-request-response.12: 10 |
✅ | ✅ | ❌ | ✅ |
3 | gzip-compression-for-express | ✅ | 👶 introduction | express-server.4: 10 | ✅ | ✅ | ❌ | ✅ |
4 | log-with-morgan-in-express | ✅ | 👶 introduction | express-server.4: 10 | ✅ | ✅ | ❌ | ✅ |
5 | vhost-in-express | ✅ | 👶 introduction 🦑 deep |
express-server.4: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
12. best-practices
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | split-your-project-into-components | ✅ | 👶 introduction ✨ new 🦑 deep |
identify-common-design-patterns.6: 10 | ✅ | ✅ | ✅ | ✅ |
2 | wrap-common-utilities-in-modules | ✅ | 👶 introduction | npm-publish.0: 10 identify-common-design-patterns.6: 10 |
✅ | ✅ | ✅ | ✅ |
3 | use-vulnerability-checking-tools | ✅ | 👶 introduction ✨ new 🦑 deep |
use-open-source-javascript-packages.2: 10 use-open-source-javascript-packages.12: 10 |
✅ | ✅ | ❌ | ✅ |
4 | process-env-performance | ✅ | 🦑 deep 🔮 obscura |
node-standard-library-os.6: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
13. patterns
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | factories-design-pattern | ✅ | 💪 workout 🦑 deep |
identify-common-design-patterns.0: 20 use-modules.0: 20 |
✅ | ✅ | ❌ | ✅ |
2 | middleware-pipeline-design-pattern | ✅ | 💪 workout | identify-common-design-patterns.1: 20 | ✅ | ✅ | ❌ | ✅ |
3 | process-nexttick-callback-pattern | ✅ | 💪 workout 🦑 deep 🔮 obscura |
events-asynchronous-operations.2: 10 async.1: 10 |
✅ | ✅ | ❌ | ✅ |
4 | use-conventional-property-names-for-error-handling-in-node-js | ✅ | 👶 introduction 💪 workout 🦑 deep |
identify-common-design-patterns.2: 10 | ✅ | ✅ | ❌ | ✅ |
5 | global-objects-and-environment-variables-in-node | ✅ | 👶 introduction 💪 workout |
identify-common-design-patterns.2: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
14. tools
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | automatic-compilation-for-node-with-nodemon | ✅ | 👶 introduction | node-developer-environment.5: 20 use-modules.2: 20 |
✅ | ✅ | ❌ | ✅ |
2 | how-to-debug-node-js | ✅ | 👶 introduction 💪 workout 🦑 deep |
node-developer-environment.5: 20 use-modules.2: 20 |
✅ | ✅ | ❌ | ✅ |
3 | the-built-in-node-debugger | ✅ | 👶 introduction 💪 workout 🦑 deep |
node-developer-environment.5: 20 | ✅ | ✅ | ❌ | ✅ |
4 | bulk-write-in-node-with-cork | ✅ | 👶 introduction 💪 workout |
node-standard-library-os.0: 20 read-and-write-streams.1: 20 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
15. quirks
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | node-and-sudo | ✅ | 👶 introduction 💪 workout 🔮 obscura 🦑 deep |
node-standard-library-os.5: 20 | ✅ | ✅ | ❌ | ✅ |
2 | avoid-command-injection | ✅ | 💪 workout 🦑 deep 🔮 obscura |
node-standard-library-os.5: 20 | ✅ | ✅ | ❌ | ✅ |
3 | node-os-module | ✅ | 👶 introduction 💪 workout |
node-standard-library-os.6: 20 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | manage-child-processes-in-node | ✅ | 💪 workout 🦑 deep |
❌ | ✅ | ✅ | ❌ | ❌ |
2 | clustering | ✅ | 💪 workout 🦑 deep |
node-standard-library-os.5: 20 | ✅ | ✅ | ❌ | ✅ |
3 | the-worker-class | ✅ | 💪 workout 🦑 deep |
node-standard-library-os.5: 20 | ✅ | ✅ | ❌ | ✅ |
4 | master-processes-and-worker-processes | ✅ | 💪 workout 🦑 deep |
node-standard-library-os.5: 20 | ✅ | ✅ | ❌ | ✅ |
5 | master-and-worker-process-communication | ✅ | 💪 workout 🦑 deep |
node-standard-library-os.5: 20 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
✅ - At least one insight covers this
❌ - Nothing covers this
🛠️ - This standard has no objectives yet
- ✅ Install Node.js on your system
- ❌ Manage versions of Node.js with a version manager
- ✅ Install a package manager for Node.js
- ❌ Install a debugger for Node.js
- ❌ Install build tools for Node.js
- ✅ Use the node interpreter to execute JavaScript
- ✅ Create an EventEmitter
- ✅ Listen for events on an EventEmitter
- ✅ Emit events on an EventEmitter
- ❌ Emit events in response to input to the process
- ✅ Create a module from a single file with exported functions to reuse code
- ✅ Import a module into another file from somewhere else in your project
- ✅ Import a module from the npm registry
- ✅ Import a module from git
- ✅ Use pipe to read from a streaming interface
- ✅ Use write to write to a stream
- ❌ Use pause and resume effectively to pause and resume streams
- ❌ Use stream events to robustly handle a stream's states
- ✅ Identify and use the factory module design pattern
- ✅ Identify and use the middleware pipeline design pattern
- ✅ Use conventional property names for common objects
- ✅ Use industry conventions to handle synchronous exceptions
- ✅ Use industry conventions to handle type errors
- ✅ Use industry conventions to catch asynchronous errors
- ✅ Identify and use the revealing module pattern
- ✅ Use a linter with JavaScript
- ✅ Distinguish between operational and programmer error
- ✅ Use the standard library to interact with the file system
- ❌ Use the standard library to issue network requests and listen for responses
- ✅ Use the standard library to listen for network requests and issue responses
- ❌ Use the standard library to interact with device ports
- ❌ Use the standard library to encrypt and decrypt data
- ✅ Use the standard library to manage child processes
- ✅ Use the standard library to monitor the running process
- ✅ Create an express app, bound to a port
- ✅ Use an express app to respond to HTTP requests
- ✅ Use the express Router to organize route handlers
- ❌ Use the express Router & Request object to receive parameters from the URL
- ✅ Use middleware with express to parse requests or preprocess responses
- ❌ Use parameters from the Request in a route handler
- ❌ Use middleware to log incoming requests and outgoing responses
- ✅ Use the Response object API to send a properly formatted HTTP response (status code, headers, etc)
- ✅ Use a server-side rendering package to render HTML containing data from the server
- ✅ Catch server and request errors and properly respond to the request with information about the error
Given the insights are tagged with aspects, we can filter over the linear content progression and create learning sub-paths.
These sub-path progressions will most likely not cover all content, but they will ensure and enforce an unified learning experience, tailor for the user wish.
For example, a user might be interested in new additions and updates of a language, rather than introduction lessions. Note that these sub-paths don't take games into consideration
If you are being introduced to the topic for the first time
Insights:
- what-is-nodejs
- installing-node-js
- the-repl-terminal
- executing-programs-with-node
- npm-nodes-package-manager
- synchronous-file-write-read-in-node-js
- asynchronous-file-write-read-in-node-js
- async-file-write-in-node-js
- consuming-events
- listening-to-events-just-once
- synchronous-event-delivery
- passing-arguments-to-listeners
- handling-event-errors
- the-http-module-for-servers
- http-server-in-node
- basic-web-server-with-express
- what-are-node-modules
- requiring-and-exporting
- local-modules
- exports-vs-module-exports-in-node
- module-patterns
- what-are-streams
- readable-streams
- piping-readable-streams
- chaining-readable-streams
- writable-streams
- try-catch-only-for-sync-code
- first-error-callbacks-in-node
- wrapping-errors-in-node-js-using-node-verror
- handle-json-parse-error-in-node-js
- uncaughtexception-listener-in-node-js
- operational-vs-programmer-errors
- handling-operational-errors
- handling-programmer-errors
- styling-brackets-1
- styling-brackets-2
- easy-way-to-deliver-html-pages-with-express
- response-object-additional-properties-in-express
- body-parser-in-express
- error-handler-in-express
- using-express-4-0-router
- session-handling-in-express
- cookie-session-in-express
- gzip-compression-for-express
- log-with-morgan-in-express
- vhost-in-express
- split-your-project-into-components
- wrap-common-utilities-in-modules
- use-vulnerability-checking-tools
- use-conventional-property-names-for-error-handling-in-node-js
- global-objects-and-environment-variables-in-node
- automatic-compilation-for-node-with-nodemon
- how-to-debug-node-js
- the-built-in-node-debugger
- bulk-write-in-node-with-cork
- node-and-sudo
- node-os-module
Theory put into practice/that’s how you achieve X points
Insights:
- synchronous-file-write-read-in-node-js
- asynchronous-file-write-read-in-node-js
- async-file-write-in-node-js
- consuming-events
- listening-to-events-just-once
- synchronous-event-delivery
- passing-arguments-to-listeners
- handling-event-errors
- the-http-module-for-servers
- http-server-in-node
- basic-web-server-with-express
- custom-node-repl-server
- what-are-node-modules
- requiring-and-exporting
- local-modules
- exports-vs-module-exports-in-node
- module-patterns
- what-are-streams
- readable-streams
- piping-readable-streams
- chaining-readable-streams
- writable-streams
- try-catch-only-for-sync-code
- first-error-callbacks-in-node
- wrapping-errors-in-node-js-using-node-verror
- handle-json-parse-error-in-node-js
- uncaughtexception-listener-in-node-js
- handling-operational-errors
- handling-programmer-errors
- factories-design-pattern
- middleware-pipeline-design-pattern
- process-nexttick-callback-pattern
- use-conventional-property-names-for-error-handling-in-node-js
- global-objects-and-environment-variables-in-node
- how-to-debug-node-js
- the-built-in-node-debugger
- bulk-write-in-node-with-cork
- node-and-sudo
- avoid-command-injection
- node-os-module
- manage-child-processes-in-node
- clustering
- the-worker-class
- master-processes-and-worker-processes
- master-and-worker-process-communication
Prerequisite knowledge consisting of 2 or more 👶/💪 workouts
Insights:
- readable-streams
- piping-readable-streams
- chaining-readable-streams
- writable-streams
- vhost-in-express
- split-your-project-into-components
- use-vulnerability-checking-tools
- process-env-performance
- factories-design-pattern
- process-nexttick-callback-pattern
- use-conventional-property-names-for-error-handling-in-node-js
- how-to-debug-node-js
- the-built-in-node-debugger
- node-and-sudo
- avoid-command-injection
- manage-child-processes-in-node
- clustering
- the-worker-class
- master-processes-and-worker-processes
- master-and-worker-process-communication
Recently added/gained traction feature
Insights:
Stories, obscure details that don’t specifically relate to a learning objective
Insights:
✅ All content has been tagged with aspects.
Want to contribute to this wiki? Go right ahead! If it has to do with how the Enki software ecosystem works, or editorial guidelines for how to write, let us handle that. Anything else, edit away!
Curriculum Format:
- Topic Documentation
- Course Documentation
- Workout Documentation
- Insight Documentation
- Glossary Documentation
Contributor Resources:
Curriculum overview:
Topic pages: