Table of Contents

1. Background

This covers some of the core tooling changes available in 2016 as well as a study path. From a review perspective this emphasizes learning the base syntax then moving forward with covering the ideas on a per-project basis.

2. Training

3. Topics

3.1. Modules

Addresses issues with pollution and build.

3.2. Classes

Addresses issues with reuse and standarization.

3.3. Async functions

Addresses issues with shims, promise libraries.

3.4. Spread operator

3.5. Destructuring assignment

4. Tools

4.1. Browser Testing

4.2. Test Harness

4.3. Build Tools

4.4. Static Analysis

4.5. Linting

4.6. Code Coverage

4.7. Continuous Integration

4.8. Error Logging

5. Review

5.1. Code: ES6 (arrows, generators)

5.5. Algorithms: Trees and Search

5.6. Typed JavaScript: TypeScript

5.7. Transpilers

The current best practice is moving forward with the supported language at an organization by incrementally adding in additional presets associated with the Babel configuration. Minimally this covers the ES2015 features but would likely move forward to include each of the following:

These are covered by using http://babeljs.io/docs/plugins/preset-latest/ but during an evaluation of the specific language features it's worth seeing the behavior without the preset.

Example: https://gist.github.com/jwalsh/217a7f96758e0e3d8357a9bc5daec5af

5.8. Security

6. Code Reading

Each of these should take less than an hour: the goal is to summarize the logic and dependencies. This should also avoid any browser-specific work-arounds: the goal is just to get comfortable with code reading.

7. Books

7.1. Core

  • JDG: full reference for core or when needing a summary of expected security behavior
  • Functional JavaScript: excellent summary of essential tool when working functionally particularly with arrays; nice summary of partial application and currying
  • Maintainable JavaScript: may not follow the rules that are being used with React but is a great summary of patterns that people should recognize if if linting, namespace, module builders, etc. cover some of the risks
  • JavaScript Design Patterns: sections on module loaders, jQuery, could be avoided but the Design Pattern and MV* sections are a good contrast
  • Secrets of the JavaScript Ninja
  • Even Faster Websites: classic; required for CDN and debugging
  • JavaScript Enlightment
  • High Performance JavaScript: some of the consideration maybe we better covered by Web Page Test, Chrome Developer Tools, or Page Speed but still a good overview
  • Third-Party JavaScript: for non-UI development this covers many of the considerations for cross-domain communication, build, and testing

7.2. Current Language Features

For dealing with the current tools and ecosystem the following are recommended since it covers the core cases of dealing with the language, transpiling, upgrading libraries, async, and reactive design.

  • Nicholas Zakas, Understanding ECMAScript 6
  • Kyle Simpsons, ES6 and Beyond

7.3. Current Frameworks

  • Stoyan Stefanov, React Up and Running

7.4. Transpilers

Given the current rate of change associated with ECMAScript I've not looked too closely at the state of the following for use actively in React-driven, dashboard or visualization, or Third-Party JavaScript.

7.5. Async

  • Kyle Simpsons, Async & Performance
  • Daniel Parker, JavaScript with Promises

7.6. Design

  • Mario Casciaro, Node.js Design Patterns

7.7. Reactive Design

  • Functional and Reactive Domain Modeling
  • Grokking Reactive User Interfaces

Author: Jason Walsh

Created: 2023-10-24 Tue 12:22

Validate