Skip to content

JavaScript NodeJS Course

enki-hq edited this page Jul 3, 2018 · 8 revisions

NodeJS Course Overview

Table of Contents

Content

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

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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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
events-asynchronous-operations.1: 20
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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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 node-standard-library-os.2: 10
3 basic-web-server-with-express 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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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
use-modules.0: 10
use-modules.1: 10
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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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
read-and-write-streams.0: 20
node-standard-library-os.0: 20
events-asynchronous-operations.1: 20
3 piping-readable-streams 👶 introduction
💪 workout
🦑 deep
read-and-write-streams.0: 20
node-standard-library-os.0: 20
events-asynchronous-operations.1: 20
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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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
identify-common-design-patterns.5: 10
use-modules.2: 10
use-open-source-javascript-packages.6: 10
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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 styling-brackets 👶 introduction identify-common-design-patterns.7: 10

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

10. express

Insights:

no name content aspects standards PQ RQ Quiz done
1 easy-way-to-deliver-html-pages-with-express express-server.0: 10
express-server.1: 10
2 response-object-additional-properties-in-express express-server.1: 10
express-server.7: 10
express-server.8: 10
3 body-parser-in-express express-server.4: 10
4 error-handler-in-express express-server.1: 10
express-server.9: 10
5 using-express-4-0-router express-server.1: 10
express-server.2: 10
express-server.4: 10

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 session-handling-in-express express-server.4: 10
http-request-response.12: 10
2 cookie-session-in-express express-server.1: 10
express-server.4: 10
http-request-response.12: 10
3 gzip-compression-for-express express-server.4: 10
4 log-with-morgan-in-express express-server.4: 10
5 vhost-in-express express-server.4: 10

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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 node-standard-library-os.6: 10

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

14. tools

Insights:

no name content aspects standards PQ RQ Quiz done
1 automatic-compilation-for-node-with-nodemon 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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 manage-child-processes-in-node 💪 workout
🦑 deep
node-standard-library-os.5: 20
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:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Standards

✅ - At least one insight covers this

❌ - Nothing covers this

🛠️ - This standard has no objectives yet

❌ Set up and use a Node developer environment

  1. ✅ Install Node.js on your system
  2. ❌ Manage versions of Node.js with a version manager
  3. ✅ Install a package manager for Node.js
  4. ❌ Install a debugger for Node.js
  5. ❌ Install build tools for Node.js
  6. ✅ Use the node interpreter to execute JavaScript

❌ Use events to manage asynchronous operations

  1. ✅ Create an EventEmitter
  2. ✅ Listen for events on an EventEmitter
  3. ✅ Emit events on an EventEmitter
  4. ❌ Emit events in response to input to the process

✅ Use modules to add functionality to your code

  1. ✅ Create a module from a single file with exported functions to reuse code
  2. ✅ Import a module into another file from somewhere else in your project
  3. ✅ Import a module from the npm registry
  4. ✅ Import a module from git

❌ Read and Write Streams

  1. ✅ Use pipe to read from a streaming interface
  2. ✅ Use write to write to a stream
  3. ❌ Use pause and resume effectively to pause and resume streams
  4. ❌ Use stream events to robustly handle a stream's states

✅ Identify and use common design patterns

  1. ✅ Identify and use the factory module design pattern
  2. ✅ Identify and use the middleware pipeline design pattern
  3. ✅ Use conventional property names for common objects
  4. ✅ Use industry conventions to handle synchronous exceptions
  5. ✅ Use industry conventions to handle type errors
  6. ✅ Use industry conventions to catch asynchronous errors
  7. ✅ Identify and use the revealing module pattern
  8. ✅ Use a linter with JavaScript
  9. ✅ Distinguish between operational and programmer error

❌ Use the standard library to interact with your operating system

  1. ✅ Use the standard library to interact with the file system
  2. ❌ Use the standard library to issue network requests and listen for responses
  3. ✅ Use the standard library to listen for network requests and issue responses
  4. ❌ Use the standard library to interact with device ports
  5. ❌ Use the standard library to encrypt and decrypt data
  6. ✅ Use the standard library to manage child processes
  7. ✅ Use the standard library to monitor the running process

❌ Use express to create a web server

  1. ✅ Create an express app, bound to a port
  2. ✅ Use an express app to respond to HTTP requests
  3. ✅ Use the express Router to organize route handlers
  4. ❌ Use the express Router & Request object to receive parameters from the URL
  5. ✅ Use middleware with express to parse requests or preprocess responses
  6. ❌ Use parameters from the Request in a route handler
  7. ❌ Use middleware to log incoming requests and outgoing responses
  8. ✅ Use the Response object API to send a properly formatted HTTP response (status code, headers, etc)
  9. ✅ Use a server-side rendering package to render HTML containing data from the server
  10. ✅ Catch server and request errors and properly respond to the request with information about the error

Aspects

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

👶 Introduction

If you are being introduced to the topic for the first time

Insights:

  1. what-is-nodejs
  2. installing-node-js
  3. the-repl-terminal
  4. executing-programs-with-node
  5. npm-nodes-package-manager
  6. synchronous-file-write-read-in-node-js
  7. asynchronous-file-write-read-in-node-js
  8. async-file-write-in-node-js
  9. consuming-events
  10. listening-to-events-just-once
  11. synchronous-event-delivery
  12. passing-arguments-to-listeners
  13. handling-event-errors
  14. the-http-module-for-servers
  15. what-are-node-modules
  16. requiring-and-exporting
  17. local-modules
  18. exports-vs-module-exports-in-node
  19. module-patterns
  20. what-are-streams
  21. readable-streams
  22. piping-readable-streams
  23. chaining-readable-streams
  24. writable-streams
  25. try-catch-only-for-sync-code
  26. first-error-callbacks-in-node
  27. wrapping-errors-in-node-js-using-node-verror
  28. handle-json-parse-error-in-node-js
  29. uncaughtexception-listener-in-node-js
  30. operational-vs-programmer-errors
  31. handling-operational-errors
  32. handling-programmer-errors
  33. styling-brackets
  34. split-your-project-into-components
  35. wrap-common-utilities-in-modules
  36. use-vulnerability-checking-tools
  37. use-conventional-property-names-for-error-handling-in-node-js
  38. global-objects-and-environment-variables-in-node
  39. how-to-debug-node-js
  40. the-built-in-node-debugger
  41. bulk-write-in-node-with-cork
  42. node-and-sudo
  43. node-os-module

⚠️ There are no exercises tagged with this aspect in node. :warning: There are no games tagged with this aspect in node.

💪 Workout

Theory put into practice/that’s how you achieve X points

Insights:

  1. synchronous-file-write-read-in-node-js
  2. asynchronous-file-write-read-in-node-js
  3. async-file-write-in-node-js
  4. consuming-events
  5. listening-to-events-just-once
  6. synchronous-event-delivery
  7. passing-arguments-to-listeners
  8. handling-event-errors
  9. the-http-module-for-servers
  10. custom-node-repl-server
  11. what-are-node-modules
  12. requiring-and-exporting
  13. local-modules
  14. exports-vs-module-exports-in-node
  15. module-patterns
  16. what-are-streams
  17. readable-streams
  18. piping-readable-streams
  19. chaining-readable-streams
  20. writable-streams
  21. try-catch-only-for-sync-code
  22. first-error-callbacks-in-node
  23. wrapping-errors-in-node-js-using-node-verror
  24. handle-json-parse-error-in-node-js
  25. uncaughtexception-listener-in-node-js
  26. handling-operational-errors
  27. handling-programmer-errors
  28. factories-design-pattern
  29. middleware-pipeline-design-pattern
  30. process-nexttick-callback-pattern
  31. use-conventional-property-names-for-error-handling-in-node-js
  32. global-objects-and-environment-variables-in-node
  33. how-to-debug-node-js
  34. the-built-in-node-debugger
  35. bulk-write-in-node-with-cork
  36. node-and-sudo
  37. avoid-command-injection
  38. node-os-module
  39. manage-child-processes-in-node
  40. clustering
  41. the-worker-class
  42. master-processes-and-worker-processes
  43. master-and-worker-process-communication

⚠️ There are no exercises tagged with this aspect in node. :warning: There are no games tagged with this aspect in node.

🦑 Deep

Prerequisite knowledge consisting of 2 or more 👶/💪 workouts

Insights:

  1. readable-streams
  2. piping-readable-streams
  3. chaining-readable-streams
  4. writable-streams
  5. split-your-project-into-components
  6. use-vulnerability-checking-tools
  7. factories-design-pattern
  8. process-nexttick-callback-pattern
  9. use-conventional-property-names-for-error-handling-in-node-js
  10. how-to-debug-node-js
  11. the-built-in-node-debugger
  12. node-and-sudo
  13. avoid-command-injection
  14. manage-child-processes-in-node
  15. clustering
  16. the-worker-class
  17. master-processes-and-worker-processes
  18. master-and-worker-process-communication

⚠️ There are no exercises tagged with this aspect in node. :warning: There are no games tagged with this aspect in node.

✨ New

Recently added/gained traction feature

Insights:

  1. split-your-project-into-components
  2. use-vulnerability-checking-tools

⚠️ There are no exercises tagged with this aspect in node. :warning: There are no games tagged with this aspect in node.

🔮 Obscura

Stories, obscure details that don’t specifically relate to a learning objective

Insights:

  1. process-nexttick-callback-pattern
  2. node-and-sudo
  3. avoid-command-injection

⚠️ There are no exercises tagged with this aspect in node. :warning: There are no games tagged with this aspect in node.

Content without aspects

  1. http-server-in-node
  2. basic-web-server-with-express
  3. easy-way-to-deliver-html-pages-with-express
  4. response-object-additional-properties-in-express
  5. body-parser-in-express
  6. error-handler-in-express
  7. using-express-4-0-router
  8. session-handling-in-express
  9. cookie-session-in-express
  10. gzip-compression-for-express
  11. log-with-morgan-in-express
  12. vhost-in-express
  13. process-env-performance
  14. automatic-compilation-for-node-with-nodemon

Clone this wiki locally