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
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__.
Why not add a Europe (or other regions) section? Why not add your project? Why so many React-based projects? Why not Angular/Vue.js/XXX?
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
- Tooling
- 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
- 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__
3. CSS Features
7. Network
8. Node.js
11. IDE / Editors
12. GUI Framework
15. Testing
A Subset for __Finding Libraries__
A Subset for __Architecture and Infrastructure__
- Workflow
Platforms and Languages
Open Web Platform
Learning
HTTP - see _Server Side > Network_
MDN's Learn Web Development
Reference
Apple
CSS-Tricks's CSS Almanac, Codrops' CSS Reference
Visual Tools
see _Tooling > Useful Apps > Visual Tools_
Performance
Rendering
Loading
Offline
see _HTML5 / Web APIs > Offline_
Measure
Optimization
Security
Semantics
SEO
Accessibility
\>\> Return to Table of Contents
HTML5 / Web APIs
HTML / DOM
Appearance
Status - Are we animated yet?
Interaction
Desktop
Mobile
Hardware Agnostic
Access
Network
Offline
Overview
Status - Is ServiceWorker Ready?
Workshop - Codelabs - Your First Progressive Web App
Media
* [\