smalljs$mol搜索⌘ K文档演练场对比生态系统关于ZH

$mol vs Vue

6 个类别中,$mol 拿下 4 个,Vue 拿下 2 个,none 个打平边界情况在你运行下面的实时测试之后才会计入。它们在你的浏览器里测量,不会保存在这里。

边界情况

尚未运行
四个日常场景,在你的浏览器里并排运行。在某个用例上按“运行”,看看会发生什么;这里没有任何预先录好的东西。过期响应覆盖了最新响应点击列表的速度快过服务器回应。运行正在等待三个 iframe 全部加载完成。$mol尚未运行The panel value is computed from the selected id, so a response for an earlier id is never assigned. Nothing is written by hand here.Vue尚未运行The watcher assigns whatever the awaited request returns, with no cancellation. Ignoring a response that is no longer current takes a check after the await that the selected id has not changed.查看代码10,000 行高度不一的列表滚动一个每行高度都不同的长列表。运行正在等待三个 iframe 全部加载完成。$mol尚未运行The list keeps only the rows inside the viewport in the DOM and measures their heights as it scrolls. Nothing is written by hand here.Vue尚未运行Every row is rendered by a plain v-for over the data. Rendering only the rows on screen takes a virtualization library and a way to measure each row, since the heights differ.查看代码100 次挂载循环之后的订阅把一个带订阅的组件挂载和卸载一百次。运行正在等待三个 iframe 全部加载完成。$mol尚未运行The subscription belongs to the component's own reactive cell and is released together with the component. Nothing is written by hand here.Vue尚未运行onMounted subscribes and there is no matching onUnmounted. Releasing the subscription takes a teardown hook in every component that subscribes.查看代码一个损坏的条目拖垮整棵树在二十张卡片中的一张里放入格式错误的数据。运行正在等待三个 iframe 全部加载完成。$mol尚未运行A view that throws renders the error message in its own place and the rest of the tree keeps rendering. Nothing is written by hand here.Vue尚未运行The production build drops the throwing component and leaves an empty comment node in its place, so the rest of the list stays and the page shows no sign that anything failed — the TypeError reaches the console only. Putting something visible where the card was takes an onErrorCaptured hook and markup to render in the failed slot.查看代码

代码

$mol 5 项中占 4 项,Vue 5 项中占 1 项 · $mol 领先
要读的东西有多少,其中又有多少属于别人。$molVueLines of code (TodoMVC)194247$mol 比 Vue 低 21%Fewer lines to read when someone else picks the project up. Counts the code you write and maintain yourself, not a stylesheet you installed from npm.Official TodoMVC implementation from github.com/tastejs/todomvc, plus the $mol one from the todomvc-compare repository. Every line of every source file under `src/`, tests, build config and the HTML shell excluded. Styles are excluded for every framework, because TodoMVC renders one fixed layout and its CSS is the same work regardless of framework: the tastejs examples install that stylesheet as the `todomvc-app-css` package and keep a small override sheet, while the $mol implementation writes its own. Counting styles would compare that packaging choice rather than the frameworks. The counting rule is the one published in todomvc-compare and reproduces its $mol figure to the line.$molgithub.com/…/mol2026-08-13Vuegithub.com/…/vue2026-08-13npm packages shipped04$mol 没有,Vue 有 4How many npm packages end up inside the bundle the browser downloads. This is code your users execute, not code your build machine reads.Distinct `node_modules/<package>` paths in the `sources` of the production build sourcemaps. Scaffolded on 2026-08-13 with each framework's own getting-started command: react `npm create vite@latest app -- --template react-ts`; vue `npm create vue@latest app -- --default`; svelte `npx sv create app --template minimal --types ts --no-add-ons --install npm`; solid `npm create solid@latest app -- --vanilla --ts --template basic`; angular `npx @angular/cli@21 new app --defaults --skip-git --package-manager=npm`; $mol `git clone --depth 1 https://github.com/hyoo-ru/mam.git app && npm install`. For $mol, the sourcemap of the deployed todomvc.hyoo.ru bundle.$moltodomvc.hyoo.ru/web.js.map2026-08-13Vuevuejs.org/guide/quick-start.html2026-08-13Dev dependencies declared310$mol 比 Vue 低 70%Packages the starter project names in its own package.json. Build-time tooling included: this is the list your development environment inherits, not what reaches the browser.Entries in `dependencies` plus `devDependencies` of a fresh starter project. Scaffolded on 2026-08-13 with each framework's own getting-started command: react `npm create vite@latest app -- --template react-ts`; vue `npm create vue@latest app -- --default`; svelte `npx sv create app --template minimal --types ts --no-add-ons --install npm`; solid `npm create solid@latest app -- --vanilla --ts --template basic`; angular `npx @angular/cli@21 new app --defaults --skip-git --package-manager=npm`; $mol `git clone --depth 1 https://github.com/hyoo-ru/mam.git app && npm install`.$molgithub.com/hyoo-ru/mam2026-08-13Vuevuejs.org/guide/quick-start.html2026-08-13Dev packages installed133125Vue 比 $mol 低 6%How many separate packages npm resolves into node_modules on a clean checkout. Each one is an author your build trusts, and every CI run downloads all of them.Distinct name+version pairs in `npm ls --all` after scaffolding and installing the starter project. Scaffolded on 2026-08-13 with each framework's own getting-started command: react `npm create vite@latest app -- --template react-ts`; vue `npm create vue@latest app -- --default`; svelte `npx sv create app --template minimal --types ts --no-add-ons --install npm`; solid `npm create solid@latest app -- --vanilla --ts --template basic`; angular `npx @angular/cli@21 new app --defaults --skip-git --package-manager=npm`; $mol `git clone --depth 1 https://github.com/hyoo-ru/mam.git app && npm install`.$molgithub.com/hyoo-ru/mam2026-08-13Vuevuejs.org/guide/quick-start.html2026-08-13node_modules size62 MB98.3 MB$mol 比 Vue 低 37%Disk footprint of a fresh checkout. None of it ships to the browser, but all of it is downloaded by every CI run and every new machine on the team.`du -sk node_modules` after scaffolding and installing the starter project. Scaffolded on 2026-08-13 with each framework's own getting-started command: react `npm create vite@latest app -- --template react-ts`; vue `npm create vue@latest app -- --default`; svelte `npx sv create app --template minimal --types ts --no-add-ons --install npm`; solid `npm create solid@latest app -- --vanilla --ts --template basic`; angular `npx @angular/cli@21 new app --defaults --skip-git --package-manager=npm`; $mol `git clone --depth 1 https://github.com/hyoo-ru/mam.git app && npm install`.$molgithub.com/hyoo-ru/mam2026-08-13Vuevuejs.org/guide/quick-start.html2026-08-13

重量与加载

$mol 2 项中占 2 项,Vue 2 项中占 0 项 · $mol 领先
浏览器下载了什么,以及页面开始响应前要等多久。$molVueTodoMVC bundle, gzip36 KB36.6 KB$mol 比 Vue 低 1.6%What the browser actually downloads for a small but complete application, compressed the way a server would send it.Every JavaScript and CSS asset referenced by the production `index.html`, gzipped at level 9 and summed. Unlike the line count, styling is included everywhere and is comparable: the shared `todomvc-app-css` is compiled into each tastejs example’s shipped CSS, and $mol compiles its styles into the JavaScript bundle, leaving its `web.css` a 38-byte comment. The `base.js` page furniture from `todomvc-common` is excluded everywhere, including its Angular equivalent. Built artifacts come from the tastejs repository; the $mol bundle from the deployed todomvc.hyoo.ru.$moltodomvc.hyoo.ru2026-08-13Vuegithub.com/…/vue2026-08-13Startup transfer128 KB195 KB$mol 比 Vue 低 35%Bytes pulled over the network before the benchmark application is usable. Same application in every column, so the difference is the framework.Lighthouse total byte weight for the js-framework-benchmark application, reported as benchmark 34_startup-totalbytes. Transfer size, not gzip specifically.$molnin-jin.github.io/…/table.html2022-02-05Vuenin-jin.github.io/…/table.html2022-02-05

速度

$mol 7 项中占 5 项,Vue 7 项中占 2 项 · $mol 领先
改动到达屏幕需要多久,以及这期间占用了多少内存。$molVueCreate 1,000 rows55.1 ms201 ms$mol 比 Vue 低 73%Time to put a thousand fresh rows on the screen. This is the wait after hitting a filter or opening a list.js-framework-benchmark 01_run1k, arithmetic mean of 10 runs.$molnin-jin.github.io/…/table.html2022-02-05Vuenin-jin.github.io/…/table.html2022-02-05Partial update316 ms1,146 ms$mol 比 Vue 低 72%Touching every tenth row of a thousand, sixteen times. This is where a framework either finds the changed rows or re-checks everything.js-framework-benchmark 03_update10th1k_x16, arithmetic mean of 10 runs.$molnin-jin.github.io/…/table.html2022-02-05Vuenin-jin.github.io/…/table.html2022-02-05Swap two rows46.3 ms178 ms$mol 比 Vue 低 74%Two rows trade places out of a thousand. The ideal answer is two DOM moves, and the gap here shows who gets close to it.js-framework-benchmark 05_swap1k, arithmetic mean of 10 runs.$molnin-jin.github.io/…/table.html2022-02-05Vuenin-jin.github.io/…/table.html2022-02-05Remove one row26.9 ms37.9 ms$mol 比 Vue 低 29%Deleting a single row out of a thousand. The smallest possible change, so it measures the fixed cost of reacting at all.js-framework-benchmark 06_remove-one-1k, arithmetic mean of 10 runs.$molnin-jin.github.io/…/table.html2022-02-05Vuenin-jin.github.io/…/table.html2022-02-05Memory after load1.54 MB1.37 MBVue 比 $mol 低 11%Heap the framework occupies with nothing on the page yet.js-framework-benchmark 21_ready-memory, single run.$molnin-jin.github.io/…/table.html2022-02-05Vuenin-jin.github.io/…/table.html2022-02-05Memory with 1,000 rows1.94 MB3.47 MB$mol 比 Vue 低 44%Heap once a thousand rows are on screen. On a phone this is the difference between staying alive in the background and being killed.js-framework-benchmark 22_run-memory, single run.$molnin-jin.github.io/…/table.html2022-02-05Vuenin-jin.github.io/…/table.html2022-02-05Startup blocking time244 ms16.5 msVue 比 $mol 低 93%How long the main thread is busy during startup, so taps and scrolls do nothing.js-framework-benchmark 32_startup-bt (Lighthouse total blocking time), arithmetic mean of 4 runs.$molnin-jin.github.io/…/table.html2022-02-05Vuenin-jin.github.io/…/table.html2022-02-05

内置

$mol 10 项中占 6 项,Vue 10 项中占 1 项 · $mol 领先
这件事框架自带,还是需要去找一个库。$molVueRouter两边都有Whether URLs and navigation come from the framework project itself, or you go pick a library and own that choice forever.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. A library from anyone else counts as no, however popular or de-facto standard it has become, which is why routing is a yes for Angular and a no for React. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when that project publishes and documents a routing solution of its own. No when its own docs send you to a third-party project instead.$molgithub.com/…/arg2026-08-13Vuerouter.vuejs.org2026-08-13Localization没有$mol 有,Vue 没有Translating an application is rarely planned at the start and always arrives later.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. A library from anyone else counts as no, however popular or de-facto standard it has become, which is why routing is a yes for Angular and a no for React. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when that project publishes and documents localization of its own. An official CLI add-on that wires up somebody else’s i18n library is a no, because the library is still somebody else’s.$molgithub.com/…/locale2026-08-13Vuevuejs.org/api2026-08-14Theming没有$mol 有,Vue 没有Dark mode and brand colours without inventing your own CSS variable convention.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. A library from anyone else counts as no, however popular or de-facto standard it has become, which is why routing is a yes for Angular and a no for React. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when that project publishes and documents a theming mechanism of its own. No when the word does not appear in its official API reference, which is the page linked, so the absence can be checked directly.$molgithub.com/…/lights2026-08-14Vuevuejs.org/api2026-08-13List virtualization没有$mol 有,Vue 没有Long lists stay smooth because off-screen rows are never rendered. Without it, someone eventually bolts a library onto a list that already shipped.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. A library from anyone else counts as no, however popular or de-facto standard it has become, which is why routing is a yes for Angular and a no for React. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when that project publishes and documents lazy or virtual rendering of long lists. No when no such component appears in its API reference.$molgithub.com/…/list2026-08-13Vuevuejs.org/api2026-08-14Offline support没有$mol 有,Vue 没有A service worker set up by the framework rather than copied from a blog post.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. A library from anyone else counts as no, however popular or de-facto standard it has become, which is why routing is a yes for Angular and a no for React. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when that project ships the service worker integration: a module it builds and registers for you. No when the docs only show where to drop your own sw.js and how to register it with the browser API, because that is the browser’s feature rather than the framework’s.$molgithub.com/…/offline2026-08-13Vuevuejs.org/…/tooling.html2026-08-14Server rendering没有Vue 有,$mol 没有Rendering to HTML on the server, for search engines and for the first paint.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. A library from anyone else counts as no, however popular or de-facto standard it has become, which is why routing is a yes for Angular and a no for React. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when that project publishes and documents a server rendering API of its own. No when its published module list contains no such module.$molgithub.com/hyoo-ru/mam_mol2026-08-14Vuevuejs.org/…/ssr.html2026-08-13Tests without a DOM没有$mol 有,Vue 没有Components testable as plain objects, with no browser and no jsdom to boot up first.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when a component can be instantiated and asserted on with no document in play — the test never reaches for one. No when a DOM has to exist before a component can render at all, which is what every official testing guide here prescribes when it tells you to install jsdom, happy-dom or a browser. The question is whether a DOM is required, not whether the runtime happens to have one available: a runtime that provides a document nobody asks for does not make the test a DOM test.$molgithub.com/…/pair.test.ts2026-08-14Vuevuejs.org/…/testing.html2026-08-13Dependency injection两边都有Swapping a real service for a fake one in a test without touching the component that uses it.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. A library from anyone else counts as no, however popular or de-facto standard it has become, which is why routing is a yes for Angular and a no for React. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when that project documents a way to hand a component a value from outside it and replace that value later, in a test or in another host. Context APIs count: the bar is a documented mechanism, not a particular shape of container.$molgithub.com/…/ambient2026-08-13Vuevuejs.org/…/provide-inject.html2026-08-14Forms没有$mol 有,Vue 没有Validation, dirty state and submission handled by the framework instead of a fourth form library per team.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. A library from anyone else counts as no, however popular or de-facto standard it has become, which is why routing is a yes for Angular and a no for React. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when that project documents a form API that goes past binding one input to one variable, covering at least submission handling or validation state. Two-way binding on its own is a no.$molgithub.com/…/form2026-08-14Vuevuejs.org/…/forms.html2026-08-14Typed templates两边都有A typo in a template is caught by the compiler, not by a user.Built in means the framework project ships it itself: its own package, or one the same team maintains and publishes as official. A library from anyone else counts as no, however popular or de-facto standard it has become, which is why routing is a yes for Angular and a no for React. The same cut is applied to all six frameworks, and every value links to the official page it was read from. Yes when the framework’s official TypeScript documentation covers type checking of its template or view layer.$molgithub.com/…/view2026-08-14Vuevuejs.org/…/overview.html2026-08-13

生态与市场

$mol 4 项中占 0 项,Vue 4 项中占 4 项 · Vue 领先
招人、搜答案、找现成零件各有多容易。$molVueGitHub stars74354,230Vue 是 $mol 的 73×A popularity signal, and nothing more. It says how many people bookmarked the repository, not how many shipped with it.`stargazers_count` from the GitHub API for the repository that holds the framework's current source.$molgithub.com/hyoo-ru/mam_mol2026-08-13Vuegithub.com/vuejs/core2026-08-13npm downloads3,327 per week14,550,122 per weekVue 是 $mol 的 4373.3×The closest thing to a usage count. Inflated by CI runs, but inflated the same way for everyone.npm registry downloads for the last full week, for the package you install to use the framework.$molapi.npmjs.org/…/mam2026-08-13Vueapi.npmjs.org/…/vue2026-08-13Stack Overflow questions0107,927$mol 没有,Vue 有 107,927How likely it is that your problem was already asked and answered by someone else.Question count of the framework's Stack Overflow tag, via the Stack Exchange API.$molapi.stackexchange.com/2.3/tags2026-08-13Vuestackoverflow.com/…/vue.js2026-08-13npm maintainers12Vue 是 $mol 的 2×How many people can publish a release. A low number is a bus factor.Length of the `maintainers` array in the npm registry metadata of the framework's primary package.$molregistry.npmjs.org/mam2026-08-13Vueregistry.npmjs.org/vue2026-08-13

持有成本

$mol 2 项中占 0 项,Vue 2 项中占 1 项 · Vue 领先
依赖树和发版历史在这些年里要付出什么。$molVueAdvisories in shipped packages00两边报告的数值相同Known vulnerabilities in the packages that reach the browser. These execute on your users’ machines, which makes them a different class of risk from anything in the build toolchain.Each shipped package, at its installed version, queried against the OSV database. Counts packages carrying at least one advisory.$moltodomvc.hyoo.ru/web.js.map2026-08-13Vuevuejs.org/guide/quick-start.html2026-08-13Advisories in the dev tree30Vue 没有,$mol 有 3Known vulnerabilities in the packages a fresh checkout installs. These run on developer and CI machines rather than in the browser, but somebody still has to triage every one.Total reported by `npm audit` on the starter project, straight after scaffolding it. Scaffolded on 2026-08-13 with each framework's own getting-started command: react `npm create vite@latest app -- --template react-ts`; vue `npm create vue@latest app -- --default`; svelte `npx sv create app --template minimal --types ts --no-add-ons --install npm`; solid `npm create solid@latest app -- --vanilla --ts --template basic`; angular `npx @angular/cli@21 new app --defaults --skip-git --package-manager=npm`; $mol `git clone --depth 1 https://github.com/hyoo-ru/mam.git app && npm install`.$molgithub.com/hyoo-ru/mam2026-08-13Vuevuejs.org/guide/quick-start.html2026-08-13Breaking releases in 3 years未计入:$mol 没有数据Major versions shipped since 2023. Every one of them is a migration someone on the team pays for.

这些数字是怎么测的

这里的每个值都来自一次测量或外部来源,并附带链接和采集日期。只有两个框架都公开的指标才计入类别:否则表格更全的一方就会靠数据的完整程度取胜,而不是靠数字本身。还没有人测过的地方,这一行会照实说明,而不是猜。方法与来源在 GitHub 上

推荐一个框架

少了哪个?写下名字并提一个 issue。加入一个框架,意味着一份带测量数据的数据文件,以及用于实时测试的一个 runner 页面:两者都放在仓库里,就在已有的那些旁边。提交 issue
Type to search the documentation.