JavaScript - Proof of Concept
Implementation & Explanation of Beginner to Advanced JavaScript Concepts [ES5 & ES6].
Resources:
- JS Course & GitHub Repo for JS by Jonas Schmedtmann
- You Don’t Know JS by Kyle Simpson (getify)
- JS Docs by MDN
More resources will be added depending on the usefulness of the resource.
Child Repositories (Project Deployments)
These are the projects that are implemented using JavaScript as a proof of concept.
-
Pig - dice game: Live here GitHub Repo -
Budgety - budget app: Live here GitHub Repo -
Forkify - online recipe search: Live here GitHub Repo
Development Workflow
Syntax - <topic name>: <html file> | <JavaScript file>
-
JavaScript Basics
- Hello World!:
- Inline Script: hello_i.html
-
External Script: hello_e.html hello.js
-
Variables & Data Types: var_dt.html var_dt.js -
Variable Mutation & Type Coercion: vm_tc.html vm_tc.js -
Basic Operators: operators.html operators.js -
Coding Challenge I: challenge_1.html challenge_1.js -
Control Structures & Boolean Logic: cs_bl.html cs_bl.js -
Coding Challenge II: challenge_2.html challenge_2.js -
function
s - Declarations & Expressions: functions.htmlfunctions.js -
Array
s: arrays.htmlarrays.js -
Coding Challenge III: challenge_3.html challenge_3.js -
Object
s - Properties & Methods: objects.htmlobjects.js -
Coding Challenge IV: challenge_4.html challenge_4.js -
Looping & Iteration: loops.html loops.js -
Coding Challenge V: challenge_5.html challenge_5.js
- Hello World!:
-
JS Behind the Scenes
-
Execution Context & Execution Stack: exec.html exec.js - Exectution Context in Detail
-
Hoisting: hoisting.html hoisting.js -
Scoping & Scope Chain: scope.html scope.js scope.pdf - view or download -
The this
Keyword: this.htmlthis.js
-
-
-
JS DOM: The Pig Game
- Common Markup for ii-vii: index.html & style.css
- DOM Access & Manipulation: app.js
- Events & Event Handling: app.js
- Adding, Removing & Toggling HTML Classes: app.js
- DRY Principle & More DOM Manipulation: app.js
- Creating Initialization Function for the Game: app.js
-
Adding Game State: app.js final version (Easy) Play the game @CodeSandBox -
Pig Game: app.js final version (Hard) | Play the game @Repl.it | Updated Markup - index.html & style.css
-
Advanced JS: Objects & Functions
-
Object
Creation, Inheritence &prototype
Chain: obj.htmlobj.js prototypeChain.pdf - view or download -
Primitives vs. Objects: prim_vs_obj.html prim_vs_obj.js -
First Class Functions: first_class_functions.html first_class_functions.js -
Immediately Invoked Function Expressions (IIFE): iife.html iife.js -
Closures: closure.html closure.js closure.pdf - view or download -
bind()
,call()
&apply()
: bind_call_apply.htmlbind_call_apply.js -
Coding Challenge VII: challenge_7.html challenge_7.js -
Event Bubbling, Target Element & Event Delegation: eventDelegation.html eventDelegation.pdf - view or download. Reading of eventDelegation.pdf required before understanding the code from Budgety App (k) and thereafter. -
Budgety App
- Common Markup: index.html & style.css
- Module Pattern, Encapsulation & Separation of Concerns: app.js
keypress
Events &event
Object: app.js- Reading
HTML
Input Data w. Separation of Concerns: app.js - Adding the Initialization Function: app.js
- Function Constructors and Data Structures for Incomes & Expenses: app.js
- Avoiding Data Structure Conflicts & Passing Data from One Module to Another: app.js
- Usage of
innerAdjacentHTML()
method &replace()
method: app.js - Usage of
querySelectorAll()
method, Conversion ofNodeList
toArray
& the usage offorEach()
method: app.js - Converting HTML Field Inputs to Numbers & Preventing False Item Inputs: app.js
- Creating functions for a singular purpose: app.js
- Event Delegation in Practice - The
parentNode
property: app.js - Usage of
map()
andsplice()
methods on an array: app.js - How to remove an element from the DOM using
removeChild()
: app.js - Usage of
prototype
to define a method in a predefined function constructor: app.js - How to implement a
forEach()
for NodeList instead of array: app.js - How to use different String methods to manipulate strings: app.js
- How to get the current date using the
Date
object constructor: app.js - How and when to use
change
events: app.js -
Budgety App: app.js (final version) | Use the app @netlify
-
-
Next Generation JavaScript - Intro to ES6/ES2015
- List of New Concepts in ES6: es6.html
-
Variables declared using let
&const
: let_const.htmllet_const.js -
Blocks & IIFEs: block_iife.html block_iife.js -
Strings & String Functions: strings.html strings.js -
Arrow Functions Intro: arrow_func.html arrow_func.js -
Arrow Functions - Lexical this
Keyword: arrow_func_this.htmlarrow_func_this.css arrow_func_this.js -
Destructuring: destructuring.html destructuring.js -
Arrays in ES6 (ES2015): arrays.html arrays.css arrays.js -
The Spread ...
Operator: spread.htmlspread.css spread.js - Function Parameters
-
Rest Parameters: rest.html rest.js -
Default Parameters: default.html default.js
-
-
The Map
Data Structure: map.htmlmap.js -
class
es (Syntactic Sugar): class.htmlclass.js -
Inheritance - Classes & Subclasses (ES5 - Object.create()
/ ES6 -extends
): inheritance.htmlinheritance.js -
Challenge VIII: challenge8.html challenge8.js
-
Asynchronous JavaScript
- An Example of Asynchronous JavaScript: intro.html
-
Understanding Asynchronous JS, The Event Loop: event_loop.html event_loop.pdf - view or download - Callback Hell - The Old Way: callback_hell.html
-
From Callback Hell to Promise
s: promise.htmlpromise.pdf - view or download - From
Promise
s toasync
/await
in ES8/ES2017: async_await.html -
AJAX & API - What do they mean? : ajax_api.html ajax_api.pdf - view or download - Making AJAX Calls Using
fetch()
and-
Promise
s: fetch_promise.htmlfetch_promise.js -
async
/await
: fetch_async_await.htmlfetch_async_await.js
-
-
Modern JavaScript Using ES6, NPM, Babel & Webpack
- Introduction: intro.html
-
An Overview of Modern JavaScript: overview.html overview.pdf - view or download -
A Modern Setup Installing Node.js and NPM: nodejs.html package.json nodejs.pdf - view or download -
A Modern Setup Configuring Webpack: webpack.html index.js test.js webpack.config.js package.json bundle.js webpack.pdf - view or download -
A Modern Setup Configuring Webpack Dev Server: webpack_dev_server.html index.js test.js webpack.config.js package.json index.html bundle.js webpack_dev_server.pdf - view or download -
A Modern Setup Configuring Babel: babel.html index.js test.js package.json bundle.js babel.pdf - view or download tooling_changes_babel.html -
Forkify App Development (Path: ./Modern-JS-ES6-NPM-Babel-Webpack/forkify_project/)
-
Common Markup & Styling: ./dist/index.html ./dist/css/style.css Forked from: Jonas Schmedtmann’s Starter Code @GitHub -
MVC Architecture: forkify_mvc.html forkify_mvc.pdf - view or download -
How ES6 Modules Work: ./src/js/index.js ./src/js/models/Search.js ./src/js/views/searchView.js - Making Our First API Call: ./src/js/index.js
-
Building the Search Model Using ES6 class
es: ./src/js/index.js./src/js/models/Search.js -
Building the Search Controller (keeping in mind, the application state): ./src/js/index.js ./src/js/models/Search.js - Building the Search View (base.js contains the DOM elements)
-
Rendering the Results onto the front-end: ./src/js/index.js ./src/js/models/Search.js ./src/js/views/searchView.js ./src/js/views/base.js -
Using the reduce()
&join()
methods to limit the Recipe Title: ./src/js/index.js./src/js/models/Search.js ./src/js/views/searchView.js ./src/js/views/base.js -
Rendering the Loading Spinner: ./src/js/index.js ./src/js/models/Search.js ./src/js/views/searchView.js ./src/js/views/base.js
-
-
Setting Up Pagination Using Element.closest()
, Event Delegation anddata-*
attribute in HTML5: ./src/js/index.js./src/js/models/Search.js ./src/js/views/searchView.js ./src/js/views/base.js -
Building the Recipe (Data) Model [Part 1]: ./src/js/index.js ./src/js/models/Recipe.js -
Building the Recipe Controller Using the hashchange
Event: ./src/js/index.js./src/js/models/Recipe.js -
Building the Recipe (Data) Model [Part 2] Using the eval()
andmap()
methods &Map
object: ./src/js/index.js./src/js/models/Recipe.js - Building the Recipe View
-
Looping inside a Template String to generate HTML: ./src/js/index.js ./src/js/models/Recipe.js ./src/js/views/recipeView.js ./src/js/views/base.js -
Using 3rd Party API ( [fractional](https://github.com/ekg/fraction.js/)
) to convert the Quantities into a Fraction & Highlighting the Selected Recipes usingclassList
property: ./src/js/index.js./src/js/models/Recipe.js ./src/js/views/recipeView.js ./src/js/views/searchView.js ./src/js/views/base.js package.json -
Updating Recipe Servings Using Event Delegation ( matches()
method): ./src/js/index.js./src/js/models/Recipe.js ./src/js/views/recipeView.js ./src/js/views/base.js
-
-
Building the Shopping List (Data) Model Using [uniqid](https://github.com/adamhalasz/uniqid)
: ./src/js/index.js./src/js/models/List.js package.json -
Building the Shopping List View (Front-End): ./src/js/index.js ./src/js/views/listView.js ./src/js/models/List.js ./src/js/views/base.js -
Building the Shopping List Controller: ./src/js/index.js ./src/js/views/listView.js ./src/js/models/List.js ./src/js/views/recipeView.js ./src/js/views/base.js -
Building the Likes (Data) Model: ./src/js/index.js ./src/js/models/Likes.js -
Building the Likes Controller: ./src/js/index.js ./src/js/models/Likes.js ./src/js/views/base.js -
Building the Likes View (Front-End): ./src/js/index.js ./src/js/views/likesView.js ./src/js/views/recipeView.js ./src/js/views/searchView.js ./src/js/models/Likes.js ./src/js/views/base.js -
Implementing Persistent Data With localStorage()
API and Implementing Delete All Shopping Items Functionality List’s Model, View & Controller: ./src/js/index.js./src/js/views/likesView.js ./src/js/views/searchView.js ./src/js/views/listView.js ./src/js/models/Likes.js ./src/js/models/List.js ./src/js/views/base.js - Forkify App Summary
- Controller: ./src/js/index.js
-
Models: ./src/js/models/Search.js ./src/js/models/Recipe.js ./src/js/models/List.js ./src/js/models/Likes.js -
Views: ./src/js/views/searchView.js ./src/js/views/recipeView.js ./src/js/views/listView.js ./src/js/views/likesView.js - Common Code Base: ./src/js/views/base.js
-
Config: package.json webpack.config.js .babelrc - Final Bundled JS: ./dist/js/bundle.js
-
Forkify App: Use here, @Repl | Use here, @Netlify
-