JavaScript Awesome
- novnc/noVNC
- felixrieseberg/macintosh.js
- RobinCsl/awesome-js-tooling-not-in-js
- sorrycc/awesome-javascript
Library
- Event
- DOM EventTarget - Bus
- DOM MessageChannel - 1-1、WebWorker
- DOM BroadcastChannel - origin 纬度 - 多窗口
- DOM Window.postMessage - 跨 origin、多窗口、iframe
- EventEmitter
- npm:events
- sindresorhus/emittery
- 支持 async, generator
- 🌟 推荐 - 更加现代
- primus/eventemitter3
- 移除 Domain 支持
- Morglod/tseep
eventemitter2- wildcard/namespace, ttl/once/many, async listener/setImmediate
- emitAsync
- 18.2kB, 5.6kB
- developit/mitt
- ts, 200byte
- 建议直接拷到项目使用
- broadcast-channel
- 基于 BroadcastChannel+IndexedD+LocalStorage
- NodeJS 使用 Sockets
- 支持 Leader 选举
- 20kB/6kB
- browserify/events
- EventEmitter 同
node:events
- EventEmitter 同
- tiny-emitter
tunnckoCoreLabs/dush- emittery vs eventemitter2 vs eventemitter3 vs events vs mitt vs tiny-emitter
- DOM
- google/incremental-dom
- in-place DOM diffing
- manipulation
- dom7 - morden jquery
- jquery
- parser
- zeed-dom - Parser
- cheerio - jQuery
- htmlparser2
- parse5
- jsdom
- santinizer
- env
- focus-trap/focus-trap
- google/incremental-dom
- Communication/Network/Websocket/proxy
- WebSockets
- 浏览器 Chrome 17+, Safari 7+, Android 4.4+ - 2013+
- NodeJS 21+
node --experimental-websocket
- websockets/ws
- MIT, JS
- JS 实现
- binary 加速包 bufferutil, utf-8-validate
- uWebSockets.js
- 基于 uWebSockets C++ 库
- 性能好
- 针对 Linux 优化
- theturtle32/WebSocket-Node
- Apache-2.0, JS
- JS 实现
- npm:websocket
- faye/faye-websocket-node
- sockjs
- 支持回滚为其他协议
- primus/primus
- SocketCluster/socketcluster
- realtime pub/sub and RPC framework
- socketio
- eventsource
- WebRTC
- WebTransport
- OptimalBits/redbird
- reverse proxy for node
- WebSockets
- WebWorker
- GoogleChromeLabs/comlink
- https://vitejs.dev/guide/features.html#web-workers
- https://vitejs.dev/config/worker-options.html
const worker = new Worker(new URL('./worker.ts', import.meta.url, { type: 'module', }))
import MyWorker from './worker?worker'
import MyWorker from './worker?worker&inline'
import MyWorker from './worker?worker&url'
const worker = new MyWorker()
- IoC/Container/DI
- nestjs
- 整体设计类似 Spring/Angular
- ⚠️ 只支持 NodeJS
- jeffijoe/awilix
- npm:awilix
- 9kB/3kB
- 0 依赖
- Proxy+Reflect - Chrome >= 49, Safari >= 10
- 支持代理模式 - 通过访问的字段名字进行 resolve
- 不支持异步
- 支持传统 Token 模式
- 支持浏览器
- 强类型 Container
- 不支持 异步,功能相对比较欠缺
- inversify/InversifyJS
- npm:inversify
- 51kB/11kB
- 功能非常全的 IoC - 使用起来有一点复杂
- ⚠️ 不活跃
- typestack/typedi
- typedi
- 220kB
- 功能相对简单,做 DI 足够
- ⚠️ 非常不活跃
- Microsoft/tsyringe
- ⚠️ 非常不活跃
- @abraham/reflection
- ~3k - 替代 reflect-metadata ~ 50k
- async-dependency-graph
- dependency graph that can traverse asyncronous nodes
- 5kB, 1.5kB
- fastify/avvio
- 20kB, 7kB
- Asynchronous bootstrapping of Node applications
- nestjs
- deep compare
- epoberezkin/fast-deep-equal
- FormidableLabs/react-fast-compare
- 基于 fast-deep-equal
- 支持 react 元素
- lukeed/dequal
- 304B to 489B
- lodash.isEqual
- object-hash
- hash-sum
- Date & Time
- date-fns
- 多错误的容忍度低
- 可 tree-shaking
- dayjs
- Fast 2kB alternative to Moment.js
- 接口友好
- 不可 tree-shaking
- Immutable
- plugins
- duration
moment- 不再维护
- d3-time-format
- chrono-node
- natural language date parser
- moment/luxon
- 70kB, 21kB
- date-fns
- format/intl/unit - number, time, money
- SheetJS/printj
- Apache-2.0, JS
- sprintf for JS
- numbro
- MIT, JS
- 基于 numeral
- EvanHahn/HumanizeDuration.js
- adamwdraper/Numeral-js
- MIT, JS
- npm:numeral
- 不再维护
- ben-ng/convert-units
- 不再维护
- ECMA-402
- Intl.NumberFormat
- SheetJS/printj
- money
- dinero.js
- create, calculate, format money
- currency.js
- accounting.js
- dinero.js
- flip effect
- react-flip-numbers
- react-flipcard
- [number-flip] (https://github.com/gaoryrt/flip)
- objectivehtml/FlipClock
- 不再维护
- ramda
- fp-ts
- io-ts
- reactive
- rxjs
- core
- toss/es-toolkit
- lodash alternative
- lodash
- angus-c/just
- core-js
- underscore
- stdlib-js/stdlib
- toss/es-toolkit
- Error
- verror
- @netflix/nerror
- voxpelli/pony-cause
- Error Cause tc39/proposal-error-cause
- Chrome 93+, Safari 15+, Firefox 91+, Node 16+
- clone
- structuredClone - Chrome 98
- lukeed/klona
- json
- fast-json-patch
- fastify/fast-json-stringify
- 基于 schema - 更快更安全
- devalue
- 支持循环依赖
- 支持 undefined, Infinity, NaN, -0, Date, Map, Set, BigInt, RegExp
- class-transformer
- object <-> class
- 依赖 reflect-metadata
- 基于 decorator
- json5
- Human-readable JSON
- unjs/destr
- JSON.parse
- uhop/stream-json
- json+ - 扩展 toJSON 支持更多类型
- yahoo/serialize-javascript
- 支持 Function
- blitz-js/superjson
- 支持 Date, undefined, bigint, RegExp, Set, Map, Error, URL
- 可以配合 NextJS 使用
- 可以配合 Decimal.js / Prisma.Decimal 使用
- https://github.com/iccicci/next-json
- yahoo/serialize-javascript
- html/dom/xml
- fast-xml-parser
- xml2js
- saxjs
- xmlbuilder
- jsdom
- 模拟 DOM
- cheeriojs/cheerio
- 开发不活跃
- 模仿 jquery 接口
- diff
- fs/filesystem/virtual file
- https://github.com/isomorphic-git/isomorphic-git
- lighting-fs
- jvilk/BrowserFS
- MIT, JS
- emulates the Node JS file system API
- filer
- BSD-2, JS
- 258kB/68Kb
- drop-in replacement for node's fs module
- backend: indexeddb, memory, custom
- feross/buffer
- 26.8kB/8kB
- browserify/path-browserify
- vfile/vfile
- gulpjs/vinyl
- https://github.com/ebidel/idb.filesystem.js/blob/2f9e8fb3ece3aeca8388e60ba75d622dd354e6da/src/idb.filesystem.js
- LiteCode-IDE/virtual-file-system
- https://manual.os-js.org/tutorial/vfs/
- aaronhuggins/jsvfs
- files
- tar
- 77.4kB/23kB
- node:zlib
- tar
- diagram
- d3
- eclipse/sprotty
- elkjs
- 1.3MB/404kB
- Eclipse Layout Kernel
- 2d rendering/canvas
- fabricjs/fabric.js
- SVG <-> Canvas
- Build indoor maps with Fabric.js and React
- obsidianmd/jsoncanvas
- file format for infinite canvas data
- HN
- jonobr1/two.js
- signature_pad
- jakubfiala/atrament
- MIT, JS
- drawing & handwriting
- https://www.fiala.space/atrament/demo/
- yisibl/resvg-js
- SVG renderer, powered by Rust based resvg and napi-rs
- svgdotjs/svg.js
- manipulating and animating SVG
- chearon/dropflow
- MIT, TS
- CSS layout engine for canvas
- konvajs/konva
- MIT, JS+TS
- react-konva
- 使用的项目
- rowsncolumns/grid
- MIT
- React Components for Tabular data.
- React-Proto/react-proto
- 原型设计
- rowsncolumns/grid
- catdad/canvas-confetti
- Microsoft/maker.js
- Apache-2.0, TS
- 2D vector line drawing and shape modeling for CNC and laser cutters
- fathyb/html2svg
- HTML,
<canvas>
to SVG - https://fathy.fr/html2svg
- HTML,
- Brooooooklyn/canvas
- skia binding to Node.js
- fabricjs/fabric.js
- 3d rendering/canvas/webgl
- threejs
- https://wiggle.three.tools/
- https://www.shadertoy.com/
- pmndrs/react-three-fiber
- React renderer for Three.js
- 3d-dice/dice-box
- 3D Game Dice
- animation
- motion-canvas/motion-canvas
- MIT, TS
- uses generators to program animations
- creating animated videos using the Canvas API
- Visualize Complex Ideas Programmatically
- framer/motion
- react-spring
- react-motion
- react-move
- danro/easing-js
- mojs/mojs
- gijsroge/tilt.js
- transition
- motion-canvas/motion-canvas
- functional
- ar/vr/xr
- WebXR Device API
- Chrome 79
- AR-js-org/AR.js
- MIT, JS
- webgl, webrtc
- fcor/arjs-gestures
- Rotate and zoom with touch gestures
- hiukim/mind-ar-js
- MIT, JS
- Image Tracking, Face Tracking. Tensorflow.js
- AR-js-org/studio
- Demo
- WebXR Device API
- color
- randomcolor
- Evercoder/culori
- npm:culori
- 👍 在维护,功能多,支持新的 colorspace
- Qix-/color
- MIT, JS
- npm:color
- color conversion and manipulation
- gka/chroma.js
- Apache-2.0, JS
- npm:chroma-js
- color manipulations
- colorjs/color-name
- davidmerfield/randomColor
- npm:randomColor
- bgrins/TinyColor
- npm:tinycolor2 - 14kb
- color-parse
- color
- brehaut/color-js
- color2k
- styled-components/polished
- MIT, JS
- writing styles in JavaScript
- rvanwijnen/spectral.js
- MIT, JS
- paint like color mixing library utilizing the Kubelka-Munk theory
- CSS color
- css
- css-tree - parser
- csstype - TypeScript for CSS
- css in js
- nano-css - 0.5 kb
- jss - 22kb
- processor
- stylis - 10kb - nesting, selector namespacing, vendor prefixing, minification
- store
- sessionStorage - 单 Tab, 关闭消息, 打开新 Tab 继承
- localStorage - origin 纬度, 可监听跨 tab 变化
- cookie - C/S 交互
- localforage
- async 的 localStorage
- 可以存储到 IndexedDB, WebSQL, localStorage
- 多实例
- rxdb
- 135kB, 36kB
- rxjs
- adapters: pouchdb, lokijs
- replication: couchdb, graphql
- lokijs
- dexie
- Apache-2.0, JS, TS
- 82kB, 26kB - 无依赖
- IndexedDB wrapper
- 支持 Sync, Subscribe
- share/sharedb
- 126kB, 35kB - ot-json0, array-diff
- JSON OT database backend
- Realtime database backend based on Operational Transformation (OT)
- YousefED/SyncedStore
- yjs
- 提供 react, vue, svelte 组件
- DB/SQL Builder/Database
- electric-sql/pglite
- pgmock
- knex
- [kysely]
- reactive
- rxjs
- utils
- he HTML entities
- office
- dolanmiu/docx
- generate .docx files
- ZEISS/react-view-pdf
- react, pdf.js
- SheetJS/sheetjs
- Apache-2.0
- mengshukeji/Luckysheet
- handsontable/hyperformula
- dolanmiu/docx
- crdt
- yjs/yjs
- 实现协作编辑
- dmonad/lib0
- vs automerge #145
- y-crdt/y-crdt
- Rust port of Yjs
- yousefed/SyncedStore
- YJS based
- josephg/diamond-types
- automerge/automerge
- 通用状态,自定义 CRDT
- dmonad/crdt-benchmarks
- Where is the CRDT for syntax trees HN
inkandswitch/peritextfelipeleivav/yboard- Vue
- multiplayer desktop-like workspace
- https://news.ycombinator.com/item?id=30983770
- partykit/partykit
- MIT, TS
- streamich/json-joy
- JSON CRDT, JSON CRDT Patch, JSON Patch+, JSON Predicate, JSON Pointer, JSON Expression, JSON Type
- yjs/yjs
- p2p
- editor
- tiptap
- headless, framework-agnostic and extendable rich text editor, based on ProseMirror
- tiptap
- ui
- floating-ui/floating-ui
- low-level 接口
- 支持 web, React Native, Canvas
- popper -> floating-ui - 2021 - ~600b
- popper - ~3kb - 2006
- react https://floating-ui.com/docs/react-dom
- Popper is evolving into Floating UI!
- atomiks/tippyjs
- 基于 @popperjs/core
- floating-ui/floating-ui
- ml
- invariant
- tiny-invariant
- tiny-warning
- 不 throw
- ts-invariant
- condition build
- image/media
- nhn/tui.image-editor
- fengyuanchen/compressorjs
- image compressor
- https://github.com/photopea
- sharp
- jimp-dev/jimp
- 纯 JS
- JavaScript Image Manipulation Program
- 支持 jpeg, png, bmp, tiff, gif
- rsms/node-imagemagick
- npm:imagemagick
- gm
- GraphicsMagick
- fluent-ffmpeg
- GoogleChromeLabs/squoosh
- Make images smaller using best-in-class codecs
- compression/zip/unzip
- fflate
- TextEncoderStream
- gildas-lormeau/zip.js
- zip and unzip
- streams, zip64, split files and encryption
- interactive
- core
- core-js
- dmonad/lib0
- fabiospampinato/cash
- jquery
- logger/logging
- console
- pino
- 6.5kB/2.5kB
- https://www.npmjs.com/package/picocolors
- roarr
- 13kB/4kB
- winston
- bunyan
- log4js
- unjs/consola
- HuolalaTech/page-spy-web
- Tencent/vConsole
- validate
- decs/typeschema
- adapter for TypeScript schema validation.
- ajv
- JSON Schema
- zod
- 定义的校验会生成 ts 类型
- TypeScript-first schema validation
- validatorjs/validator.js
- yup
- joi
- vest
- superstruct
- quicktype/quicktype
- imbrn/v8n
- npmtrends ajv vs joi vs yup vs zod
- ar-nelson/spartan-schema
- 定义的校验可生成 ts 类型
- validatorjs/validator.js
- typestack/class-validator
- https://github.com/moltar/typescript-runtime-type-benchmarks
- typebox
- zod
- decs/typeschema
- typescript
- true-myth/true-myth
- io-ts
- fp-ts
- trpc
- typia
- ts-rest
- typescript codegen / Generating Schema from TypeScript
- vega/ts-json-schema-generator
- MIT, TS
- YousefED/typescript-json-schema
- json-schema from ts
- sinclairzx81/typebox-workbench
- 单一文件
- 生成 typebox - JSONSchema
- 生成 zod, effect, arktype, io-ts, valibot
- 直接调用 sinclairzx81/typebox-codegen
- 使用 astexplorer 比较好开发这种工具
- vega/ts-json-schema-generator
- math
- jsbi - pure-JavaScript BigInts
- 33kB/10kB
- Uniswap SDK
- Chrome 67+, Opera 54+, Firefox 68+, Edge 79+, Safari 14+, Node.js v10.4+
- babel 插件可 transpile
- https://tc39.es/proposal-bigint/
- https://github.com/GoogleChromeLabs/jsbi
- bn.js
- 44kB/11.5kB
- ether.js
- MikeMcl
- decimal.js
- 31kB/12kB
- scientific
- bignumber.js
- 18kB/8kB
- financial
- 支持 exp,ln,log
- big.js
- 7kB/3kB
- decimal.js-light
- 13kB/5.5kB
- 不支持 NaN, Infinity, -0
- 不支持其他 base
- big.js vs bignumber.js vs decimal.js
- decimal.js
- josdejong/mathjs
- Apache-2.0, JS
- plot https://plotly.com/javascript/
- stdlib-js/stdlib
- @stdlib/plot - 基于 d3
- https://mathnotepad.com/
- https://www.mathcha.io/
- Mathematics Editor
- thoughtspile/grafar
- https://mafs.dev/
- React components for interactive math
- stevenpetryk/mafs
- imaphatduc/cubecubed
- 3b1b/manim
- jsxgraph/jsxgraph
- MIT, LGPL, JS
- interactive geometry, function plotting, charting, and data visualization
- mathjax
- CindyJS/CindyJS
- Apache-2.0, JS
- interactive mathematical
- 2D Geometry, 3D Geometry, Algebra, Calculus, Differential Equations, Statistics, Probability, Linear Algebra, Complex Numbers, Trigonometry
- https://upmath.me/ Math Online Editor
- tex, tikz
- kisonecat/tikzjax
- TikZ running under WebAssembly in the browser
- katex
- Asymptote (vector graphics language)
- jsbi - pure-JavaScript BigInts
- geo
- Turfjs/turf
- MIT, TS
- geospatial engine
- https://geojson.io/
- Turfjs/turf
- Phy
- stat/bi/data
- jstat
- cubejs
- uwdata/arquero
- pbeshai/tidy
- markdown
- markdown-it
- mdx-js/mdx
- wooorm/xdm
- MDX compiler
- micromark/micromark
- 替代 remark-parse
- markedjs/marked
- unifiedjs
- Auth/ACL/Security
- Syntax Highlighter
- PrismJS/prism
- MIT, JS
- shikijs/shiki
- MIT, TS
- shikijs/shiki-magic-move
- Highlight.js
- wooorm/lowlight
- 基于 lowlight
- wooorm/refractor
- 基于 Prism.js
- wooorm/starry-night
- TextMate syntax
- react-syntax-highlighter/react-syntax-highlighter
- 基于 lowlight, refractor
- prismjs, highlightjs
- https://lezer.codemirror.net
- antonmedv/codejar
- embeddable code editor
- react-simple-code-editor/react-simple-code-editor
- 基于 prismjs
- inokawa/rich-textarea
- MIT, TS, React
- 基于 textarea overlay
- inokawa/edix
- framework agnostic
- Justineo/highlightable-input
- 基于 contenteditable
- twoslashes/twoslash
- Markup for generating rich type information in your documentations ahead of time
- PrismJS/prism
- jwt
- openid-client
- nodejs RP client for passport.
- openid-client
- dev
- nolanlawson/fuite
- finding memory leaks in web apps
- sverweij/dependency-cruiser
- nolanlawson/fuite
- bundler/transpile/build/tool
- evanw/esbuild
- MIT, Go
- babel
- ts
- swc
- rsbuild
- by rspack
- web-infra-dev/rspack
- MIT, Rust
- Rust-based web bundler
- alangpierce/sucrase
- turbopack
- rolldown
- webpack
- rollup
- parcel
- vite
- developit/microbundle
- webpro-nl/knip
- Find unused
- retire.js
wooorm/xdm- MDX compiler - No runtime. With esbuild, Rollup, and webpack plugins
preactjs/wmr- MIT, JS
- tiny all-in-one development tool for modern web apps
- evanw/esbuild
- i18n
- lingui/js-lingui
- core - 30kB, 8kB
- react + 7kB, 2.5kB
- @lingui/macro
- 支持语义
- 支持 自动提取
- https://lingui.dev/
- i18next
- MIT, JS, TS
- 56kB, 15kB
- key-based
- globalizejs/globalize
- MIT, JS
- airbnb/polyglot.js
- BSD-2, JS
- lukeed/rosetta
- 27 LOC
- lukeed/templite
- dlv
- react-intl
- 服务
- 参考
- PO - Portable Object
- POT - Portable Object Template
- i18next -> LinguiJS
- lingui/js-lingui
- object path
- dlv
- get by path
- lukeed/dset
- set by path
- dlv
- benchmark
- framework
- Effect-TS/effect
- MIT, TS
- ecosystem of tools to build robust applications in TypeScript.
- Effect-TS/effect
- debug
- HuolalaTech/page-spy-web
- MIT, TS
- by 货拉拉
- Debug remotely and easily like chrome devtools.
- HuolalaTech/page-spy-web
- data/io
- ArrayBuffer
- js 标准里的 nodejs Buffer 对等角色
- mdn-data - mdn/data
- feross/buffer
- NodeJS Buffer
- ArrayBuffer
- fetch/network
- axios
- 30kB/18kB
- based on XMLHttpRequests
- elbywan/wretch
- tiny wrapper built around fetch
- sindresorhus/ky
- fetch wrapper
- 9.5kB/3.3kB
- 0 依赖
- sindresorhus/got
- for NodeJS
- undici
- NodeJS 的 fetch 实现
- 如果需要用代理功能则需要直接引入
- superagent
request- node-fetch
- NodeJS v18 内置
- axios
- codec/parser
- punycode
- url-js
- url
- AST/parser
- meriyah/meriyah
- 127kB, 40kB
- acornjs/acorn
- 107kB, 31.1kB
- acorn-jsx
- acorn-bigint
- estree/estree
- eslint, acorn, babel, Esprima
- jquery/esprima
- meriyah/meriyah
- router
- URLPattern Chrome 95+
- lukeed/regexparam
- lukeed/polka
- Web Server
- pillarjs/path-to-regexp
- React router 之前版本
- hono RegExpRouter https://hono.dev/docs/concepts/routers
- audio/sound
- goldfire/howler.js
- MIT, JS
- Web Audio API, HTML5 Audio
- https://github.com/DawidWraga/davstack/tree/main/packages/sound
- bbc/peaks.js
- LGPLv3, JS
- audio waveforms
- BenzLeung/benz-amr-recorder
- jpemartins/amr.js
- opencore-amr version 0.1.3 using emscripten
- goldfire/howler.js
- glob
- thecodrr/fdir
- MIT, TS
- fastest directory crawler & globbing library
- globby
- MIT
- 基于 fast-glob 增加部分功能
- glob
- fast-glob
- micromatch/micromatch
- wildcard and glob matching library
- 在 picomatch 之上增加部分功能 -
{.ts,.js}
展开, extglobs
- micromatch/picomatch
- 20kB/7kB
- consola
- thecodrr/fdir
- test - WebStorm 支持 jest, mocha
- node:test
- NodeJS v18 内置 Test Runner
- jest
- by Facebook
- mocha
- Selenium
- jasmine
- karma
- puppeteer
- storybook
- playwright
- lost-pixel
- ava
- WebStrom Plugin AVA Test Run Configuration Generator
- WEB-21788
- vitest
- testing library
- react, dom
- lukeed/uvu
- webdriver io
- E2E - Browser
- cypress
- Web Test Runner
- nightwatch
- MIT, JS
- W3C Webdriver API
- tap - 测试协议
- tapjs/node-tap
- http://tap4j.org/
- WebStorm 暂不支持 WEB-20916
- ava vs jasmine vs jest vs mocha vs qunit
- node:test
- random data generator/mock data
- json-schema-faker
- https://json-schema-faker.js.org/
- 不支持 draft 2019-09 #289
- @faker-js/faker
- 2.8MB, 907kB
- chance
- 206kB, 67kB
- danibram/mocker-data-generator
- json-schema-faker
- Presentation Slides
- slidevjs/slidev
- TS, Vue
- slidevjs/slidev
- Font
- MISC
- useragent/figureprint
- 51Degrees/Renderer
- return the GPU renderer string for iPhone and iPad
- pmndrs/detect-gpu
- https://shaka-player-demo.appspot.com/support.html
- 51Degrees/Renderer
- webcomponents
- google/model-viewer
- 3D Model
- google/model-viewer
- state / store
- jotai
- zustand
- valtio
- nanostore
- 类似于 jotai
- 297 bytes
- React, Vue, Svelte, Solid, Lit, Angular, SSR
- saasquatch/bunshi
- 1.18kb
- Molecule pattern for jotai, nanostore, valtio, zustand
- React, Vue, Vanilla
- FSM / Finite state machines
- XState
- chakra-ui/zag
- React, Vue, Solid
- from chakra-ui
- search
- nextapps-de/flexsearch
- size min.mjs 16kB
- krisk/fuse
- MIT, JS
- npm:fuse.js
- size min.mjs 16kB
- olivernn/lunr.js
- MIT, JS
- nextapps-de/flexsearch
- security/fuzzer
- layout
- gridstack/gridstack.js
- MIT, TS
- Build interactive dashboards
- gridstack/gridstack.js
- shell/script
- sindresorhus/execa
- MIT, JS+TS
- shelljs/shelljs
- BSD-3, JS
- Portable Unix shell commands for Node.js
- google/zx
- sindresorhus/execa
- xyflow/xyflow
Runtimes & Engines
Engine | [QuickJS] | [DukTape] | [V8] | MuJS | JerryScript | Hermes | XS |
---|---|---|---|---|---|---|---|
License | MIT | MIT | BSD-3 | ISC | Apache-2.0 | MIT | GPL |
Executable size | 620K | 331K | 28M | 244K | 211K | 27M | 1.2M |
- Runtime - stdlib/sandboxing
- NodeJS
- Deno
- Bun
- workerd
- edge-runtime
- losfair/blueboat
- Apache-2.0, Rust
- multi-tenant serverless JavaScript runtime
- V8 isolate
- vm2
- vs node:vm
- 更安全
- 暴露更少的内容
- 使用 proxy 避免逃逸
- 覆盖 require 避免访问内部
- 支持 transpiler
- vs node:vm
- vm - NodeJS
- ringo/ringojs
- JVM
- saghul/txiki.js
- MIT, C
- QuickJS + libuv + wasm3 + curl + libffi
- Engine - JIT
- V8
- Chrome
- JavaScriptCore
- SpiderMonkey
- Firefox
- GraalJS
- Oracle
- GraalVM
- JVM
- ChakraCore
- MIT, C++
- 早先的 Microsoft Edge
- just-js/just
- small v8 for linux only
- ~15 MB
- facebook/hermes
- MIT, C++
- React Native
- XS Moddable
- GPL
- CanadaHonk/porffor
- MIT, JS
- from-scratch AOT JS -> WASM
- https://porffor.goose.icu/
- V8
- Engine - embeddable/interpreter
- svaarala/duktape
- MIT, C
- bellard/quickjs
- MIT, C
- Typescript
- https://bellard.org/quickjs/bench.html
- quickjs-ng/quickjs
- cesanta/mjs
- GPLv2, C
- ccxvii/mujs
- ISC, C
- svaarala/duktape
- Sandbox
- v8 isolate
- WICG/portals
- JetBrains/websandbox
- Apache-2.0, TS
- iframe
- NeilFraser/JS-Interpreter
- sandboxed JavaScript interpreter in JavaScript
- LavaMoat/LavaMoat
- MIT
- based on endo
- endojs/endo
- distributed secure JavaScript sandbox, based on SES
- SES - Secure EcmaScript
- tc39/proposal-ses
- endojs/Jessie
- simple universal safe mobile code
- markwylde/workerbox
- MIT, JS
- justjake/quickjs-emscripten
- tc39/proposal-shadowrealm
- Azure AppBlades
- IoT
- espruino
- MPLv2, C
- 128kB Flash, 8kB RAM
- jerryscript-project/jerryscript
- Apache-2.0, C99
- ECMAScript 5.1
- 160K
- espruino
- GoogleChromeLabs/jsvu
- JavaScript engine Version Updater
- 支持 charkra, gralljs, hermes, JavaScriptCore, quickjs, SpiderMonkey, v8, v8 debug, xs
- Typescript
- detection/user agent/fingerprinting
- AssemblyScript/assemblyscript
- Apache-2.0, TypeScript
- WebAssembly/binaryen
- Apache-2.0, C++
- Binaryen IR
- CanadaHonk/porffor
- MIT, JS, TS
- JS/TS -> WASM
- WASM -> Native
- turbolent/w2c2
- MIT, C, WebAssembly
- WASM -> C
- microsoft/pxt
- MIT, TS, JS
- Microsoft MakeCode (PXT - Programming eXperience Toolkit)
- sablejs/sablejs
- JS
- 国产
- ECMA5.1
- License 不明确 - https://github.com/sablejs/sablejs/issues/19
- plasma-umass/doppio
- JVM in TypeScript v0.5.0
- List of ECMAScript engines
- privatenumber/ts-runtime-comparison
WebServer
- Reuqest/Response/WebStandard - 支持 EdgeRuntime/Deno/Bun/Cloudflare
- Router
- lukeautry/tsoa
- Build OpenAPI-compliant REST APIs using TypeScript and Node
- support Express, Hapi, Koa
- itty-router
- lukeautry/tsoa
- fastify
- koa
- express
- [polka]
- trpc
- nextjs
- jeremydaly/lambda-api
- 路由
- typestack/routing-controllers
- 通过 修饰器 为 express.js, koa.js 定义路由
- typestack/socket-controllers
- typestack/routing-controllers
Typescript
- https://github.com/typestack
- dsherret/ts-morph
- Compiler API wrapper
- AST edit
- 替代 tsc
- ts-patch
- typia
- trpc
- zod
Polyfill
- core-js
- ardatan/whatwg-node
- fetch
- busboy -> parse form data
- fast-querystring
- fast-url-parser
- events
- server
- fetch
- aermin/web-locks
- Modernizr/Modernizr
Edge/Serverless
- blueboat
- flareact/flareact
Game
- KilledByAPixel/LittleJS
- Tiny, 2D, WebGL
Template
- ladjs/consolidate
- eta
- 5.7kB/2.4kB
- linkedin/dustjs
- ejs
- nunjucks
- pug
- twig
- liquid
- doT
- 通用/跨语言/非信任代码
- handlebars
- mustache
- aui/art-template
- 高性能,不再维护
有趣
- enkimute/ganja.js - 几何代数
- lokesh/color-thief
- 提取 image 颜色
Crypto
- Hashing
- brix/crypto-js
- rzcoder/node-rsa
- pure js, 不依赖 OpenSSL, 支持浏览器
- travist/jsencrypt
- RSA
- digitalbazaar/forge
- node-forge
- dchest/tweetnacl-js
- Port of TweetNaCl cryptographic library to JavaScript
- aes-decrypter
- pkcs7
- videojs-contrib-hls
- AES-128 segment encryption
- https://github.com/originjs/crypto-js-wasm
- Rust -> WASM
- npm:@originjs/crypto-js-wasm
- JavaScript Crypto Libraries https://gist.github.com/jo/8619441
- http://www.webtoolkit.info/javascript-sha1.html
- http://www.webtoolkit.info/javascript-sha256.html
- http://www.webtoolkit.info/javascript-md5.html
- http://www.webtoolkit.info/javascript-base64.html
- http://pajhome.org.uk/crypt/md5/
- Object hash
UX
工具
- formatter
- prettier
- linter
- eslint
- biomejs/biome
- MIT, Rust
- linter
- https://github.com/arethetypeswrong/arethetypeswrong.github.io
- publint.dev
- tester
- ava
- vitest
- tap
- ava
- mocha
- e2e test
- cypress
- webdriver io
- coverage
- CryogenicPlanet/depp
go install github.com/cryogenicplanet/depp@latest
# .depp/config.json
depp init
depp
npx -y publint
npx -y @biomejs/biome check ./src