import AWS from 'aws-sdk';
const s3 = new AWS.S3({
endpoint: 'http://' + endpoint,
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey,
s3ForcePathStyle: true,
signatureVersion: 'v4'
});
s3.getSignedUrl('getObject', params, (err, url) => {
let parts = url.match('(http://.*)(/iaas-image/.*)');
let address;
address = window.location.protocol + '//' + window.location.host + parts[2];
if (err) {
console.error('无法生成镜像文件:', err);
} else {
// 使用生成的URL下载图片
window.open(address);
}
});
})
我是正常的使用下载,但是编译出来会有1.7M,不使用时只有170kb
import AWS from 'aws-sdk';
引入后👇

//import AWS from 'aws-sdk';
注掉后👇

咨询下大佬,这个该怎么去优化呢,我应该怎么处理呢?拜谢!
1、可以使用v3版本,可以只引入你真正需要的 AWS 服务模块,而不是整个 SDK
安装:npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner @aws-sdk/util-create-request @aws-sdk/credential-provider-node
// v3 中的导入方式
import { S3, GetObjectCommand } from "@aws-sdk/client-s3";
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
// 创建 S3 客户端实例
const s3 = new S3({
endpoint: 'http://' + endpoint,
credentials: {
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey,
},
forcePathStyle: true,
signatureVersion: 'v4'
});
// 获取预签名 URL
async function fetchSignedUrl() {
try {
const command = new GetObjectCommand(params);
const signedUrl = await getSignedUrl(s3, command);
let parts = signedUrl.match('(http://.*)(/iaas-image/.*)');
let address;
address = window.location.protocol + '//' + window.location.host + parts[2];
// 使用生成的URL下载图片
window.open(address);
} catch (err) {
console.error('无法生成镜像文件:', err);
}
}
fetchSignedUrl();
2、使用vue异步组件功能引入组件,只在需要时才被加载,对于一个使用 aws-sdk 的组件:
const AwsComponent = () => import('./AwsComponent.vue');