CDN
CDN (Content Delivery Network) 是一种分布式网络服务,旨在有效地分发网络内容给最终用户。
它通过将资源存储在位于全球各地的服务器上,并根据用户的位置、网络状况和请求内容等因素,将内容提供给用户,从而提高内容的加载速度、可用性和安全性。
CDN 推荐:
页面中使用
在学习一些库的时候,经常会使用 CDN 来引入它的资源,例如:jquery、axios 等。引入之后,这些库一般会暴露一个全局变量,例如 jquery 对应 $。
html
<body>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios@1.6.8/dist/axios.min.js"></script>
<script>
console.log($, axios)
</script>
</body>构建工具中使用
在实际开发中,可以通过使用 CDN 加载第三方库的方式来减小打包后的项目体积。
Vite
首先需要在页面中引入对应的 CDN 资源,例如 jQuery。
html
<!-- /index.html -->
<body>
<div id="app"></div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
<script type="module" src="/src/main.js"></script>
</body>安装 rollup 的插件,用于告诉 rollup 指定的依赖对应的全局变量。
bash
npm i rollup-plugin-external-globals -D配置 vite.config.js
js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ExternalGlobals from 'rollup-plugin-external-globals'
export default defineConfig({
plugins: [vue()],
build: {
rollupOptions: {
external: ['jquery'], // 无需打包的库
plugins: [
ExternalGlobals({
jquery: '$', // 告诉 rollup, jquery 模块的全局变量为 $
}),
],
},
},
})Webpack
通过 CDN 引入无需打包的库。
html
<!-- /public/index.html -->
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
</body>配置 webpack.config.js
js
module.exports = {
//...
externals: {
jquery: '$',
},
}