Introduction and Setup
  • Introduction and the Goal of this Course
  • Big Words and NodeJS
  • Watching this Course in High Definition
  • Conceptual Aside: The Command Line Interface
  • Command Line References
V8: The Javascript Engine
  • Conceptual Aside: Processors, Machine Language, and C++
  • Javascript Aside: Javascript Engines and The ECMAScript Specification
  • V8 Under the Hood
  • Adding Features to Javascript
The Node Core
  • Conceptual Aside: Servers and Clients
  • What Does Javascript Need to Manage a Server?
  • The C++ Core
  • The Javascript Core
  • Downloading Lecture Source Code
  • Let's Install and Run Some Javascript in Node
Modules, Exports, and Require
  • Conceptual Aside: Modules
  • Javascript Aside: First-Class Functions and Function Expressions
  • Let's Build a Module
  • Javascript Aside: Objects and Object Literals
  • Javascript Aside: Prototypal Inheritance and Function Constructors
  • Javascript Aside: By Reference and By Value
  • Javascript Aside: Immediately Invoked Function Expressions (IIFEs)
  • How Do Node Modules Really Work?: module.exports and require
  • Javascript Aside: JSON
  • More on require
  • Module Patterns
  • exports vs module.exports
  • Requiring Native (Core) Modules
  • Modules and ES6
  • Web Server Checklist
Events and the Event Emitter
  • Conceptual Aside: Events
  • Javascript Aside: Object Properties, First Class Functions, and Arrays
  • The Node Event Emitter - Part 1
  • The Node Event Emitter - Part 2
  • Javascript Aside: Object.create and Prototypes
  • Inheriting From the Event Emitter
  • Javascript Aside: Node, ES6, and Template Literals
  • Javascript Aside: .call and .apply
  • Inheriting From the Event Emitter - Part 2
  • Javascript Aside: ES6 Classes
  • Inheriting From the Event Emitter - Part 3
Asynchronous Code, libuv, The Event Loop, Streams, Files, and more…
  • Javascript Aside: Javascript is Synchronous
  • Conceptual Aside: Callbacks
  • libuv, The Event Loop, and Non-Blocking Asynchronous Execution
  • Conceptual Aside: Streams and Buffers
  • Conceptual Aside: Binary Data, Character Sets, and Encodings
  • Buffers
  • ES6 Typed Arrays
  • Javascript Aside: Callbacks
  • Files and fs
  • Streams
  • Conceptual Aside: Pipes
  • Pipes
  • Web Server Checklist
HTTP and being a Web Server
  • Conceptual Aside: TCP/IP
  • Conceptual Aside: Addresses and Ports
  • Conceptual Aside: HTTP
  • http_parser
  • Let's Build a Web Server in Node
  • Outputting HTML and Templates
  • Streams and Performance
  • Conceptual Aside: APIs and Endpoints
  • Outputting JSON
  • Routing
  • Web Server Checklist
NPM: the Node Package Manager
  • Conceptual Aside: Packages and Package Managers
  • Conceptual Aside: Semantic Versioning (semver)
  • npm and the npm registry: Other People's Code
  • init, nodemon, and package.json
  • npm Global Installation
  • init, nodemon, and package.json - Part 2
  • Using Other People's Code
  • Installing Express and Making it Easier to Build a Web Server
  • Routes
  • Static Files and Middleware
  • Templates and Template Engines
  • Querystring and Post Parameters
  • RESTful APIs and JSON
  • Structuring an App
Javascript, JSON, and Databases
  • Conceptual Aside: Relational Databases and SQL
  • Node and MySQL
  • Conceptual Aside: NoSQL and Documents
  • MongoDB and Mongoose
  • Web Server Checklist
The MEAN stack
  • MongoDB, Express, AngularJS, and NodeJS
  • AngularJS: Managing the Client
  • AngularJS: Managing the Client (Part 2)
  • AngularJS: Managing the Client (Part 3)
  • Conceptual Aside: Angular 1, Angular 2, React, and more…