Find online courses made by experts from around the world.
Take your courses with you and learn anywhere, anytime.
Learn and practice real-world skills and achieve your goals.
NOTE: This is an EARLY BIRD version of the course, meaning all content is not yet published. New content being added as course completion nears!
NodeJS is a rapidy growing web server technology, and Node developers are among the highest paid in the industry. Knowing NodeJS well will get you a job or improve your current one by enabling you to build high quality, robust web applications.
In this course you will gain a deep understanding of Node, learn how NodeJS works under the hood, and how that knowledge helps you avoid common pitfalls and drastically improve your ability to debug problems.
You'll learn how asynchronous code works in Node and the Node event loop, as well as how to use the event emitter, streams, buffers, pipes, and work with files. We'll see how that leads to building a web server in Node.
We'll dive into web sites, web apps and APIs with Express and learn how Express can save us time as Node developers.
You'll also gain an understanding of npm, connecting to databases, and the MEAN stack!
NodeJS doesn't have to be hard to learn. The biggest mistake most coding tutorials make is expecting someone to learn simply by imitating others' code. Real world situations are never exactly like the tutorial.
I believe the best way to learn is to understand how a tool works and what it does for you, look at examples, and then try it yourself. That's how this course is built, with the goal to help you both learn and understand NodeJS.
Note: In this course you'll also get downloadable source code. You will often be provided with 'starter' code, giving you the base for you to start writing your code, and 'finished' code to compare your code to.
Not for you? No problem.
30 day money back guarantee.
Learn on the go.
Desktop, iOS and Android.
Certificate of completion.
|Section 1: Introduction and Setup|
Introduction and the Goal of this CoursePreview
Big Words and NodeJSPreview
Watching this Course in High Definition
Conceptual Aside: The Command Line InterfacePreview
Command Line References
Conceptual Aside: Processors, Machine Language, and C++Preview
V8 Under the HoodPreview
|Section 3: The Node Core|
Conceptual Aside: Servers and ClientsPreview
The C++ CorePreview
Downloading Lecture Source Code
|Section 4: Modules, Exports, and Require|
Conceptual Aside: Modules
Let's Build a Module
How Do Node Modules Really Work?: module.exports and require
More on require
exports vs module.exports
Requiring Native (Core) Modules
Modules and ES6
Web Server Checklist
|Section 5: Events and the Event Emitter|
Conceptual Aside: Events
The Node Event Emitter - Part 1
The Node Event Emitter - Part 2
Inheriting From the Event Emitter
Inheriting From the Event Emitter - Part 2
Inheriting From the Event Emitter - Part 3
|Section 6: Asynchronous Code, libuv, The Event Loop, Streams, Files, and more…|
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
ES6 Typed Arrays
Files and fs
Conceptual Aside: Pipes
Web Server Checklist
|Section 7: HTTP and being a Web Server|
Conceptual Aside: TCP/IP
Conceptual Aside: Addresses and Ports
Conceptual Aside: HTTP
Let's Build a Web Server in Node
Outputting HTML and Templates
Streams and Performance
Conceptual Aside: APIs and Endpoints
Web Server Checklist
|Section 8: 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
|Section 9: Express|
Installing Express and Making it Easier to Build a Web Server
Static Files and Middleware
Templates and Template Engines
Querystring and Post Parameters
RESTful APIs and JSON
Structuring an App
Conceptual Aside: Relational Databases and SQL
Node and MySQL
Conceptual Aside: NoSQL and Documents
MongoDB and Mongoose
Web Server Checklist
|Section 11: 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…
Newly married in Cleveland Ohio, Tony is primarily focused these days on trying to be a good husband. While inexperienced at that, he's quite experienced in all things web.
Tony has been programming since he was 12 years old, and got into web sites and web application development at 16. After graduating with a Computer Science degree from Case Western Reserve University, Tony continued with that interest as a Microsoft certified software application developer and architect, database designer, and user interface designer.
He believes strongly that deeply understanding any topic allows you to properly learn it and, even more importantly in a real-world environment, quickly overcome problems.
He also has a deep interest in human nature and behavior, and how that impacts human-computer interaction. This interest translated into extending his career into user experience design and usability research.
Another link in the chain is his 25 years of experience in public speaking and teaching, both in front of large groups and as a one-on-one private instructor.
Putting all these pieces together, he has spent his career listening to a client need, designing a database and software to meet that need, building it, testing it, teaching others how to use it, then improving user experience by watching people actually use it and adjusting accordingly.
Tony loves teaching every aspect of what he does, and even more loves teaching in a way that imparts understanding, as opposed to just examples intended to be parroted. He loves that moment when a student 'gets it', and that's what he wants for you when you take one of his courses.
He has found that those that learn purely by example, and not by understanding, end up much more limited than they need to be.
"Examples need to be built on top of context, and once you have context, you can not only copy the examples you find, but adjust and improve upon them."
He firmly believes that everyone has the ability to develop software, if they are just taught properly. Including you.
"It is my pleasure and privilege to teach you. I hope you'll come away knowing something you didn't before, understanding at a level deeper than before, and feeling positive that you can accomplish what you've set out to accomplish. Thank you!" - Tony Alicea
Ask Tony a question, read a post, or follow him around internet.