Modern JavaScript Explained For Dinosaurs. by Peter Jang. 2017

By Xah Lee. Date: .

Modern JavaScript Explained For Dinosaurs

great article i read many years ago.

Modern JavaScript Explained For Dinosaurs 2026-06-26 18a37 ll
Modern JavaScript Explained For Dinosaurs 2026-06-26 18a37 ll
Modern JavaScript Explained For Dinosaurs 2026-06-25 24b57 ll
Modern JavaScript Explained For Dinosaurs 2026-06-25 24b57 ll

node js

nodejs.org 2026-06-26 3202d ll
nodejs.org 2026-06-26 3202d ll

bower. JavaScript package manager

bower.io 2026-06-26 31f44 ll
bower.io 2026-06-26 31f44 ll

npm. JavaScript package manager

npmjs.com 2026-06-26 31de0 ll
npmjs.com 2026-06-26 31de0 ll

yarn. JavaScript package manager

classic.yarnpkg.com 2026-06-26 32013 ll
classic.yarnpkg.com 2026-06-26 32013 ll

spm. JavaScript package manager

SPM (Static Package Manager) is a package manager for the browser built by the Chinese developer community, specifically driven by Alipay. It manages CommonJS packages and is recommended for use with the Sea.js module loader.

Key characteristics include:

Binary Management: It manages binaries via a publish command similar to npm, rather than fetching directly from git endpoints like Bower.

Target Audience: It gained popularity within the Chinese developer community for front-end development before npm and browserify became more optimized for this use case.

Current Status: The project is largely considered inactive; the packaging server spmjs.io is offline, and the main GitHub repository notes that SPM no longer manages component lifecycles as of version 3.9, recommending npm for component management instead.

There are also unrelated tools with the acronym "spm" on npm, such as a Stupid Package Manager for Node.js (which installs to ~/.node_libraries) and Sematext Performance Monitoring agents for application performance monitoring, but these are distinct from the browser-focused SPM.

AI-generated answer. Please verify critical facts.

browserify. JavaScript bundler (2017)

bundler is tool that takes a js file, find all the “requires”, and bundle them into a single js file.

js did not have modules system before JS: ECMAScript 2015 . People created CommonJS Module System , and is used in nodejs.

it loads library by code like const math = require('./math.js'); but this isn't supported by browsers. Thus, use bundler to merge all the js files into one.

browserify.org 2026-06-26 320e5 ll
browserify.org 2026-06-26 320e5 ll
webpack.js.org 2026-06-26 320fb ll
webpack.js.org 2026-06-26 320fb ll
xtodo

JavaScript user interface framework

react.dev 2026-06-26 32130 ll
react.dev 2026-06-26 32130 ll

js compiler

babeljs.io 2026-06-26 334c3 ll
babeljs.io 2026-06-26 334c3 ll
xtodo

vite. js frontend build tool

vite.dev 2026-06-26 369f7 ll
vite.dev 2026-06-26 369f7 ll

Vite is a next-generation, blazing fast frontend build tool and development server created by Evan You (creator of Vue.js) and backed by VoidZero Inc. Pronounced "veet" (French for "quick"), it is designed to provide a leaner, faster development experience for modern web projects by leveraging native ES modules in the browser for instant startup and Hot Module Replacement (HMR).

It consists of two main parts: a development server that serves code on-demand via native ESM for rapid feedback, and a build command that bundles code for production using Rolldown. Vite is framework-agnostic, supporting React, Vue, Svelte, and vanilla JavaScript/TypeScript out of the box, making it a popular, lightweight alternative to heavier tools like Webpack or Create React App.

AI-generated answer. Please verify critical facts.

xtodo
vuejs.org 2026-06-26 36a3b ll
vuejs.org 2026-06-26 36a3b ll
svelte.dev 2026-06-26 36a6a ll
svelte.dev 2026-06-26 36a6a ll
xtodo
swc js 2026-06-27 16e80 ll
swc js 2026-06-27 16e80 ll

SWC (Speedy Web Compiler) is a high-performance, Rust-based JavaScript and TypeScript compiler designed as a faster alternative to Babel and the native TypeScript compiler (tsc). It is widely integrated into modern developer tools and frameworks, including Next.js, Vite, Parcel, and Deno, to accelerate build times and hot module replacement (HMR).

Key Characteristics:

  • Performance: SWC is approximately 20x faster than Babel on a single thread and 70x faster on multi-core systems due to its Rust implementation and parallel processing capabilities.
  • Functionality: It handles transpilation (e.g., TypeScript to JavaScript, JSX transformation), minification, and bundling, often replacing separate tools like Terser.
  • Configuration: It uses a .swcrc configuration file similar to Babel’s .babelrc but offers a more streamlined setup for modern development workflows.
  • Limitations: SWC focuses on fast syntax transformation and does not perform type-checking; developers typically pair it with tsc (for type checking) or use frameworks that handle this separation.

AI-generated answer. Please verify critical facts.

xtodo
hmr hot module replacement 2026-06-27 ll
hmr hot module replacement 2026-06-27 ll
pnpm.io 2026-06-27 1eb70 ll
pnpm.io 2026-06-27 1eb70 ll

grunt js. task runner

gruntjs.com 2026-06-27 1fc69 ll
gruntjs.com 2026-06-27 1fc69 ll
grunt js 2026-06-27 1fc34 ll
grunt js 2026-06-27 1fc34 ll

gulp js. task runner

gulpjs.com 2026-06-27 1fd7f ll
gulpjs.com 2026-06-27 1fd7f ll

npm scripts (task runner)

docs.npmjs.com npm scripts 2026-06-27 1fe39 ll
docs.npmjs.com npm scripts 2026-06-27 1fe39 ll
npm scripts 2026-06-27 1fdfd ll
npm scripts 2026-06-27 1fdfd ll

JS web tech history related