A guide to effective, productive and joyful development experience
The JavaScript Promise is about the promise of JavaScript as a whole, including the language, community, libraries, frameworks and tools, enabling you to be a happier, more effective and productive creator for beginners and seasoned software engineers alike.
If you're an absolute beginner, the JavaScript ecosystem offers the gentlest ramp up possible in any web-ready technology stack to bring you up from zero to hero. You don't need to be a long time coder or have a computer science degree to achieve results with JavaScript.
If you're a professional whose needs scale from a single page website to large scale enterprise deployment, who needs reliability, performance, security, code analysis and automated testing, JavaScript is fully capable of meeting and exceeding these needs and do so in a cost effective manner.
The JavaScript Promise aims to open your mind up to the possibilities that are enabled by the JavaScript ecosystem and help you accomplish what you need to accomplish. It doesn't aim to be a reference of all things JavaScript or document language functions and features. Relevant links to deep dive resources along the way.
The JavaScript Promise is kind of like a choose-your-own-adventure resource. Read the first chapter to orient yourself and then skip to the chapter that'll help you achieve the result you need to achieve. Each chapter will list their pre-requisites and the complexity of the content will be flagged as Beginner, Intermediate and Advanced.
The JavaScript Promise is meant to equip you with the resources you need to get yourself up to speed with JavaScript as a language, and use it to create full and complete solutions. Motivating yourself to learn something new can be a challenge, thusly this book is focused on the learning-by-doing methodology. In parts, this book relies on NodeSchool.io workshoppers for the best self-learning experience.
I. Introduction
a. JavaScript Promises
i. A 5 minute guide to JavaScript Promises in case you bought the wrong book
b. What is the JavaScript Promise?
i. Easy to use
ii. Easy to learn
iii. Works everywhere
1) Web
2) Mobile Web
3) Progressive Web
4) Hybrid Mobile
5) Desktop
6) IoT
iv. No compilation
v. Loose or strict
vi. No over-engineering
vii. No heavy IDEs
viii. Native JSON workflow
ix. Deliver results and quickly too
x. Stand the test of time
c. Why use JavaScript?
i. Explain to your boss benefits of full-stack JS
ii. Native Web Apps
iii. Real-time
iv. Skill share
v. Developer happiness
vi. Performance
vii. Scalability
viii. Better Agile Teams
d. Breaking down the barriers
i. Powerful impact of Open source
ii. Define usual barriers to entry
iii. Standards based solution
iv. Simplify stack
v. Full-stack JS
vi. No context switching
vii. Consistent tools
viii. Consistent best practices
II. The Very Beginning
a. Learning by doing methdology
b. New to Collaborative & Open Source Programming?
c. Installing Pre-Requisites
d. Learn How to Ask for Help
e. Write your first lines of code
III. A Re-Introduction to JavaScript
a. A brief history
b. Things to unlearn
c. jQuery to Backbone to Angular/React
d. WebComponents
e. Importance of modules
i. Types of modules
f. Configuration vs convention
(picture of gears turning) vs (secret society meeting)
G. Packaging code
IV. JavaScript Ecosystem Basics
a. Node
b. Npm
c. Angular
d. React
e. TypeScript
f. Cordova
g. Electron
V. Become a Better JavaScript Developer
a. Lodash etc.
VI. How to Create a Simple Web Page
a. HTML
b. CSS
c. JavaScript
VII. How to Create a Command Line Tool
VIII. How to Create a Simple Web Server
a. Node
IX. How to Create Web APIs
a. Express
X. How to Create a Dynamic Single Page Application
a. Angular & Angular Material
XI. How to Create a Simple Hybrid Mobile Application
a. Wrap SPA with Cordova
XII. How to Connect to a Database
a. MongoDB
XIII. How to Compare Front-End JavaScript Frameworks
a. Polymer
b. Ember
c. Angular
d. React
XIV. How to Create a Sophisticated SPA
a. AngularJS
b. Angular
XV. How to Create a Full-Stack JavaScript Application
a. MEAN
XVI. How to Write Unit Tests
a. Jasmine
b. testdouble
XVII. 1 Hour CI & CD
a. Github
b. Codeship/CircleCI
c. Heroku
XVIII. How to Create a Full-Stack TypeScript Application
a. Minimal MEAN
XIX. How to take full advantage of MongoDB
XX. How to containerize your application
a. Beginner
b. Advanced
XXI. How to Create Better Hybrid Mobile Applications
a. Ionic
b. React Native
XXII. How to Create a Desktop Application
a. Electron
XXIII. How to Hack on IoT boards
a. Tessel
b. Hobby to production