Spellbook of Modern Web Dev

A Big Picture, Thesaurus, and Taxonomy of Modern JavaScript Web Development

README


  Spellbook of Modern Web Dev

A Big Picture, Thesaurus, and Taxonomy of Modern JavaScript Web Development


Spellbook of Modern Web Dev



This document originated from a bunch of most commonly used links and learning resources I sent to every new web developer on our full-stack web development team.
What I'm doing in this document now is trying to provide the __complete view angle__ of __modern web (app or page) development ruled by JavaScript__, reflect __technological advance__ and help developers to __acquire APIs, libraries, tools, services, best practices and learning resource__ which are __not outdated__ and __most commonly used__.
I hope this document can __help one developer to have more power to do much more and much better__, just __like a spellbook does in fantasy worlds__.
The JS/web technology is like an ocean of stuff you don’t know. Simply collecting more stuff or composing dozens of "awesome lists" into a single one will only exacerbate the Javascript Fatigue. So this document must __stay lean__ and focus on __the most frequent problems__ and __the most commonly used stuff__.
So for each problem domain and each technology, I try my best to pick only __one or a few__ links.
Which link belongs to "not outdated and most commonly used stuff" is not only decided by __clear trends__, __empirical observation__, and __working experience__, also by __public data__ and __web scraping scripts__.
__The npm package statistics (like download count) are given more weight than Github repo statistics (like starring data)__ because npm statistics can better reflect the actual usage and popularity.
Prefer __fine-grained classifications and deep hierarchies__ over __featureless descriptions and distractive comments__.
Ideally, __each line is a unique category__. The __" / "__ symbol between the links means they are replaceable. The __", "__ symbol between the links means they are complementary.
I wish this document could be closer to a kind of __knowledge graph__ or __skill tree__ than a list or a collection.
It currently contains __2000+__ links (projects, tools, plugins, services, articles, books, sites, etc.)
Feel free to submit the __missing__ or __better__ links in your opinion. Also, please provide the __reason__.

Understanding Modern Web Development


In English: coming soon...
In Chinese: slides @ JSConf CN 2017





Table of Contents



    - Learning, Reference, Visual Tools
    - Performance, Security, Semantics / SEO / Accessibility
    - HTML/DOM, Appearance, Interaction, Access, Network, Media, Graphics, Computing...
    - RWD, Layout, Typography, Text, Animation, Effects...
    - CSS Module, PostCSS, CSS in JS
    - Best Practices (Skeleton, Methodology, Code Style...)
    - Know More about Web Design / UI Design / UX Design (RWD, Atomic Design, Motion Design, Grid System, Typography, Style Guide...)
    - ES6+ Features, Intro to ES6+, Re-intro to JS, Important Proposals, Functional Programming, FRP, Static Typing, Code Style...
    - Concepts, Features, Rust, ...
  - Node.js
    - Intro, Workshop, Best Practices...
    - Platform Status / Releases / Updates, ECMAScript Compatibility
    - Proposal Status (W3C WG, WICG, WHATWG, ECMA TC39, Node.js CTC)
    - JS Engine (V8, JSC, Chakra), Web/JS Runtime (Electron, Cordova, React Native...), Device...
    - Appearance, Interaction, Access, Network, Performance, Offline, Media...
    - Finding Packages (Search, Stats, Rank)
    - Dependency Management / Release / Maintenance (npm, yarn, lerna, ncp...)
    - Convention (Open Source, SemVer, package.json, Small modules, Isomorphic JS / Universal JS...)
    - Standard Library Extensions (FP, OOP, Async...)
    - Hashing / Generating
    - Parsing / Manipulating (URL, Validator, i18n, Date, Numbers, Color, Text, Buffer / Blob...)
    - Logic, Network, Storage, NLP, ML...
    - View / ViewModel / ViewController (React)
    - Model / App State (Redux)
    - API (GraphQL)
    - GUI Architectures (MVC, MVP, PM, MVVM, Flux, Redux, Elm, MVI, SAM...)
    - CSS, React...
    - Layout, Icon, Button, Form, Overlay, Picker, Content, Editor...
    - Drag & Drop, Gesture, Scrolling, Zoom, Tooltip, Tour...
    - Animation (Effects, Loading, Scrolling, Parallax, Transition, Timeline, Motion / Curved Path...)
    - 2D (Canvas, SVG, Physics...), 3D (WebGL, Physics...)
    - Data Visualization, Game...
    - Electron, React Native
  - Network
    - HTTP (Intro, Same-origin policy, Performance, HTTPS, HTTP/2, gRPC...)
    - TCP, UDP...
    - Restful API, SaaS, Microservices (API Gateway, Serverless)
    - Cloud / Distributed, Web Hosting / Non-distributed
    - Authentication / Authorization, Security, Logging / Monitoring, DevOps...
    - Frameworks (RESTful API, Microservices, Serverless, Bots...), GraphQL, DocGen + CodeGen...
    - Configuration, Debugging, Protocols, Network, Crypto, Auth, Storage, Jobs, Scraping, Images, Parsing / Generating, NLP...
    - Compute (FaaS / Serverless / WebHook, PaaS, CaaS)
    - Storage (Object Storage, DBaaS)
    - BaaS (CRUD, Auth, Search, Email, SMS...)
    - AIaaS / BDaaS (Natural Language, Computer Vision...)
    - The evil twins inside the Great Firewall of China
  - Testing
    - Unit Testing / Test Runner, Test Doubles
    - Web Testing (Integration Testing, Functional/E2E Testing, Visual testing, Monkey Testing, Headless Browsers)
    - Server-side Testing (Functional Testing, Load Testing)
    - Benchmark Testing
    - Analysis (Code Coverage, Node.js Security...)
    - JS, API, CLI, CSS / Style Guide, Writing
  - Toolchain
    - Compiler / Transpiler / Preprocessor (Babel, PostCSS...)
    - Loader / Builder / Bundler (Webpack, Rollup...)
    - Minifier / Compressor / Optimizer (Prepack, Babili / Uglify, imagemin, cssnano / clean-css...)
    - Formatter (Prettier, Stylefmt...)
    - Static Analysis (ESLint, Flow, StyleLint...)
    - Task Automation (npm scripts, Gulp...)
  - Workflow
    - Development (Micro Generator, Live Reload / Watch / Preview, Dev Tools, HTTP Inspector, Debugging Proxy...)
    - Deployment (Process Supervisor, Containers, Container Clusters, PaaS)
    - Monitoring (Error Tracking, Logging, APM...)
    - Terminal, Homebrew, Zsh, Vim, Git, Docker, dotfiles, Utilities...
    - Input (Options/Arguments Parser, Interactive, Configuration...)
    - Output (Color / Style, Icon, Updating Log, Notice, Columns, Curses, Drawing...)
    - Delivery, OS, API, Parser...
    - VSCode Plugins (UI, Formatting, Operating, Static Analysis, Docs, Assistant, Integration...)
    - Atom Plugins (UI, Formatting, Operating, Static Analysis, Docs, Assistant, Integration...)
    - Out-of-the-box Atom IDE, Other Electron-based IDE, Programming Fonts...
    - Playground, Visual Tools, Viewer, Docs, Automation...
    - Version Control, ChatOps, Kanban, Markdown, Design...

A Subset as a __Learning Path__


A Subset for __Finding Libraries__


A Subset for __Architecture and Infrastructure__






Platforms and Languages


Open Web Platform


Learning
    HTTP - see _Server Side > Network_
Reference
  Apple
    WebKit JS
  CSSDB
  Visual Tools
    see _Tooling > Useful Apps > Visual Tools_
Performance
  Rendering
  Loading
  Offline
    see _HTML5 / Web APIs > Offline_
  Measure
  Optimization
Security
Semantics
  SEO
    SEO audits
  Accessibility

\>\> Return to Table of Contents

HTML5 / Web APIs


HTML / DOM
  HEAD
Appearance
    Status - Are we animated yet?
Interaction
  Desktop
  Mobile
    TouchEvent
  Hardware Agnostic
Access
Network
  Fetch
  WebRTC
Offline
  Overview
    Status - Is ServiceWorker Ready?
Media
* [\](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video), [\](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio)
    Workshop - Web Audio School
Graphics
  SVG
  Canvas
    HTML5 Canvas
  WebGL
Computing
  WebAssembly
    see _WebAssembly_

\>\> Return to Table of Contents

CSS Features


Basics
Responsive Web Design
  Media Queries
  Images
  Units
  Flexbox, CSS Grid Layout
  Traditional
Web Typography
Text
Animation
  CSS Transition
  CSS Animation
  Motion Path
Effects

\>\> Return to Table of Contents

Modern CSS / Next-Gen CSS


Component-based CSS
  Utility Class / Functional CSS / Utility-first CSS / Atomic CSS
    see _UI Toolkits_
    Tools - see _Tooling > Toolchain > Builder / Bundler > Webpack_
    CSS in JS
    Libraries
      styled-tools
Preprocessor-based CSS
    Intro
      Meet PostCSS
      PostCSS Playground
    Preset Env
    More Plugins - see _Tooling > Toolchain > Compiler / Transpiler / Preprocessor > PostCSS_
Best Practices
  Methodology
    BEM
      BEM 101 / MindBEMding
    OOCSS
    SMACSS
  Code Style
    CSS + HTML
      Code Guide by @mdo
Know More about Web Design / UI Design / UX Design
  Responsive/Adaptive Web Design
    Responsivedesign.is - Design, Develop
    Patterns
        Responsive Patterns, \
  Motion Design
    calc() grid system - Lost Grid
    flexbox grid system - Flexbox Grid
  Typography
    Gutenberg
      Modular Scale
  Design System
    Design Tokens
    Style Guide
      Tools - see _Tooling > Documentation > Style Guide_
      Examples
        Apple's Human Interface Guidelines
        Google's Material Design
        Microsoft's Fluent Design System
        Airbnb's new design system
        Github's Primer
        Atlassian's Design Guidelines
        Salesforce's Lightning Design System
        Yelp's Styleguide
        IBM's Living Language
        BBC's GEL Guidelines
        A List Apart's pattern library
* USA.gov's [Web Design Standards](https://standards.usa.gov/)
        MailChimp's Email Design Guide

\>\> Return to Table of Contents

Modern JS / Next-Gen JS


ES6+ Features
Intro to ES6+
  Nicholas C. Zakas's Understanding ECMAScript 6
Re-intro to JS
  Articles
    MDN
    Dmitry Soshnikov
      ECMA-262-3 in detail
      ECMA-262-5 in detail
        Lexical environments: Common Theory, ECMAScript implementation
      Notes
    Dmitri Pavlutin
      three dots
      well-known symbols
      unicode
    Other
  Books
Reference
Important Proposals
  ESM (ECMAScript Modules)
    Intro
    Browsers
    Node.js
      .mjs
      esm
  [Dynamic Import (import())](https://github.com/tc39/proposal-dynamic-import)
  Concurrent JS / Parallel JavaScript
Functional Programming
  Books
FRP (Functional Reactive Programming)
    Rx Book
    RxMarbles
Static Typing
  Intro
  Flow
    Flow Runtime
  tcomb
Concurrent JS / Parallel JavaScript
Code Style

\>\> Return to Table of Contents

WebAssembly


References
Concepts
Features
Workshop
Languages
  Rust
      The Rust Wasm Book

Node.js


Intro
  RisingStack's / NodeSource's Understanding the Node.js Event Loop
Workshop
    learnyounode
Best Practices

\>\> Return to Table of Contents

Platform Compatibility and Proposal Status


Web
  Platform Status
    Can I Use
  Platform Releases
  Platform Updates
    Webkit Blog
    Polyfill - What is a Polyfill?
    Feature Detection - Modernizr/feature-detects, feature.js
    Browser/Device/Runtime Detection - see _Platforms and Languages > Universal Utility Libraries > Parsing / Manipulating_
  Email
Node.js
  Platform Releases
ECMAScript Support
    Node 10.x LTS - Supports ES modules natively (without --experimental-modules)
    Node.8.5 - Supports ES modules natively (.mjs + --experimental-modules)
    Node 7.6 - V8 5.5, Async functions
    Node 6.0 LTS - V8 5.0, 93% of ES6 language features
  Performance - Six Speed
Proposal Status
  [W3C WG](https://www.w3.org/Consortium/activities#W