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.
Syntax -
<topic name>: <html file> | <JavaScript file>
-
- 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
- functions - Declarations & Expressions: functions.html | functions.js
- Arrays: arrays.html | arrays.js
- Coding Challenge III: challenge_3.html | challenge_3.js
- Objects - Properties & Methods: objects.html | objects.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
-
- 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.html | this.js
-
- 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
-
-
Advanced JS: Objects & Functions
- Object Creation, Inheritence & prototype Chain: obj.html | obj.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.html | bind_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.
-
- 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 of NodeList to Array & the usage of forEach() 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() and splice() 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
-
-
Next Generation JavaScript - Intro to ES6/ES2015
- List of New Concepts in ES6: es6.html
- Variables declared using let & const: let_const.html | let_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.html | arrow_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.html | spread.css | spread.js
- Function Parameters
- Rest Parameters: rest.html | rest.js
- Default Parameters: default.html | default.js
- The Map Data Structure: map.html | map.js
- classes (Syntactic Sugar): class.html | class.js
- Inheritance - Classes & Subclasses (ES5 - Object.create() / ES6 - extends): inheritance.html | inheritance.js
- Challenge VIII: challenge8.html | challenge8.js
-
- 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 Promises: promise.html | promise.pdf - view or download
- From Promises to async/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
- Promises: fetch_promise.html | fetch_promise.js
- async/await: fetch_async_await.html | fetch_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 classes: ./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 and data-* 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() and map() 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) to convert the Quantities into a Fraction & Highlighting the Selected Recipes using classList 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: ./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
-