CDN
约 2 分钟阅读
| cdn | import | github | cjs -> esm |
|---|---|---|---|
| Skypack | cdn.skypack.dev | ✅ | |
| esm.sh | esm.sh | esm-dev/esm.shGitHubesm-dev/esm.sh | ✅ |
| jsDelivr | cdn.jsdelivr.net/npm | ❌ | |
| JSPM | ga.jspm.io/npm:[email protected] | jspm/projectGitHubjspm/project | ❌ |
| unpkg | unpkg.com/${PKG}?module | mjackson/unpkgGitHubmjackson/unpkg | ❌ |
- jsDelivr
- 商业化、功能多速度快
- cdn.jsdelivr.net
- 使用 Fastly
- 国内大部分地区不可用
- testingcf.jsdelivr.net
- 使用 Cloudflare
- JSPM
- 基于 rollup
- 支持 systemjs
- jsdelivr 提供 esm.run 别名
- unpkg
- 很久没更新维护了
- esm.sh
- MIT, Golang
- 基于 esbuild - 不支持 systemjs
- skypack - ESM
- BootstrapCDN
- cdnjs
- 加入 CDN 需要申请
- cdnjsGitHubcdnjs/cdnjs
- cdnjs.cloudflare.com
- 检测
CDN Test
- esm.run/react@17 -> cdn.jsdelivr.net/npm/react@17/+esm - 依然是 CJS
for i in $(seq 3); do
rm bench-*.txt
for i in $(seq 10); do
curl -o /dev/null -s -w "%{time_total}\n" https://cdn.skypack.dev/react@17 >> bench-a.txt
curl -o /dev/null -s -w "%{time_total}\n" https://cdn.jsdelivr.net/npm/react@17/+esm >> bench-b.txt
curl -o /dev/null -s -w "%{time_total}\n" https://esm.sh/react@17 >> bench-c.txt
done
for i in bench-*.txt; do
echo $i
awk '{ total += $1; count++ } END { print total/count }' $i
done
doneesm.sh
- 可以 Selfhosted
- 主服务器在 HK
- 基于 esbuild 构建
- cjs -> esm 使用 swc
- 支持 X-Typescript-Types 头 - demo 类型检测
?no-check禁用
import React from 'https://esm.sh/react@17';
// 非模块文件
import 'https://esm.sh/tailwindcss/dist/tailwind.min.css';
// bundle 模式
import {Button} from 'https://esm.sh/antd?bundle';
// 开发模式
import React from 'https://esm.sh/react?dev';
// 依赖控制
import React from 'https://esm.sh/[email protected]';
import useSWR from 'https://esm.sh/[email protected]';
// 别名
import useSWR from 'https://esm.sh/swr?alias=react:preact/compat&[email protected]';
// 目标版本 - 默认基于 header 判断
import React from 'https://esm.sh/react?target=es2020';
// WebWorker
import editorWorker from '/monaco-editor/esm/vs/editor/editor.worker?worker';
const worker = new editorWorker();FAQ
jsdelivr vs. unpkg
- unpkg
- 慢
- jsdelivr
- 国内更快,有 ICP 备案
- 参考
关联信息
反向链接、本文链接的其他页面和外部资料。
参考资料
GitHub4 条
- cdnjs/cdnjsgithub.com/cdnjs/cdnjs
- esm-dev/esm.shgithub.com/esm-dev/esm.sh
- jspm/projectgithub.com/jspm/project
- mjackson/unpkggithub.com/mjackson/unpkg
其他外链14 条
- esm.shesm.sh/
- cdn.jsdelivr.net/npmcdn.jsdelivr.net/npm
- cdn.jsdelivr.net/npm/react@17/+esmcdn.jsdelivr.net/npm/react@17/+esm
- cdn.jsdelivr.net/npm/react/+esmcdn.jsdelivr.net/npm/react/+esm
- cdn.skypack.devcdn.skypack.dev/
- cdnjs.cloudflare.comcdnjs.cloudflare.com/
- esm.run/reactesm.run/react
- esm.run/react@17esm.run/react@17
- ga.jspm.io/npm:[email protected]ga.jspm.io/npm:[email protected]
- ping.chinaz.comping.chinaz.com/
- unpkg.com/${PKG}?moduleunpkg.com/$%7BPKG%7D?module=
- w3techs.com/technologies/comparison/cd-jsdelivr,cd-unpkgw3techs.com/technologies/comparison/cd-jsdelivr,cd-unpkg
- w3techs.com/technologies/reportlist/content_deliveryw3techs.com/technologies/reportlist/content_delivery
- www.jsdelivr.com/unpkgwww.jsdelivr.com/unpkg