返回

前端八股文笔记

目录

minio (js版)

1
2
3
4
5
6
7
8
9
import * as Minio from 'minio'

const minioClient = new Minio.Client({
  endPoint: 'play.min.io',
  port: 9000,
  useSSL: true,
  accessKey: 'Q3AM3UQ867SPQQA43P2F',
  secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
})

存储桶操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 创建存储桶
minioClient.makeBucket('mybucket', 'us-east-1',function (err) {
  if (err) return console.log('Error creating bucket with object lock.', err)
  console.log('Bucket created successfully in "us-east-1" and enabled object lock')
})

// removeBucket
try {
  await minioClient.removeBucket('mybucket')
  console.log('Bucket removed successfully.')
} catch (err) {
  console.log('unable to remove bucket.')
}

// setBucketLifecycle
const lifecycleConfig = {
  Rule: [
    {
      ID: 'Transition and Expiration Rule',
      Status: 'Enabled',
      Filter: {
        Prefix: '',
      },
      Expiration: {
        Days: '3650',
      },
    },
  ],
}

await minioClient.setBucketLifecycle('bucketname', lifecycleConfig)

// removeBucketLifecycle
await minioClient.removeBucketLifecycle('bucketname')

对象操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// 对象流式下载
let size = 0
const dataStream = await minioClient.getObject('mybucket', 'photo.jpg')
dataStream.on('data', function (chunk) {
  size += chunk.length
})
dataStream.on('end', function () {
  console.log('End. Total size = ' + size)
})
dataStream.on('error', function (err) {
  console.log(err)
})

// 获取加密对象
const dataStream = await minioClient.getObject('mybucket', 'photo.jpg', {
  SSECustomerAlgorithm: 'AES256',
  SSECustomerKey: 'YOUR_KEY',
  SSECustomerKeyMD5: 'YOUR_MD5',
})

// 下载对象并将其保存为本地文件系统中的文件
minioClient.fGetObject('mybucket', 'photo.jpg', '/tmp/photo.jpg', function (err) {
  if (err) {
    return console.log(err)
  }
  console.log('success')
})

// fPutObject(bucketName, objectName, filePath, metaData[, callback])
const file = '/tmp/40mbfile'
const metaData = {
  'Content-Type': 'text/html',
  'Content-Language': 123,
  'X-Amz-Meta-Testing': 1234,
  example: 5678,
}
minioClient.fPutObject('mybucket', '40mbfile', file, metaData, function (err, objInfo) {
  if (err) {
    return console.log(err)
  }
  console.log('Success', objInfo.etag, objInfo.versionId)
})

// 获取对象的元数据
const stat = await minioClient.statObject('mybucket', 'photo.jpg')
console.log(stat)  //size, etag, version, metadata, lastModified(time-stamp)

// removeObject
await minioClient.removeObject('mybucket', 'photo.jpg')

// removeObjects
const objectsList = []

// List all object paths in bucket my-bucketname.
const objectsStream = s3Client.listObjects('my-bucketname', 'my-prefixname', true)

objectsStream.on('data', function (obj) {
  objectsList.push(obj.name)
})

objectsStream.on('error', function (e) {
  console.log(e)
})

objectsStream.on('end', async () => {
  await s3Client.removeObjects(bucket, objectsList)
})
const offsetY = event.nativeEvent.contentOffset.y;
setScrollY(offsetY);

rn如何与webview通信(react-native-webview)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import React, { useRef } from 'react';
import { View } from 'react-native';
import { WebView } from 'react-native-webview';

const MyWebComponent = () => {
  const webviewRef = useRef(null);

  const sendToWebView = () => {
    if (webviewRef.current) {
      webviewRef.current.injectJavaScript(`yourJavaScriptCodeHere`);
    }
  };

  return (
    <View style={{ flex: 1 }}>
      <WebView
        ref={webviewRef}
        source={{ uri: 'https://example.com' }}
        onMessage={(event) => console.log('Message from webview:', event.nativeEvent.data)}
        injectedJavaScript="window.onload=function(){window.ReactNativeWebView.postMessage('hello from webview')};"
      />
    </View>
  );
};
Licensed under CC BY-NC-SA 4.0