page: 📄 jS语法相关:数据类型、日期类型、文件读取

This commit is contained in:
bunny 2024-08-01 15:29:38 +08:00
parent ff6dcd05a3
commit d9a293f082
6 changed files with 7662 additions and 5841 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1 +1 @@
{"version":1721883990967} {"version":1722474202768}

View File

@ -0,0 +1,45 @@
<script lang="ts" setup>
import { onMounted } from 'vue';
const testTypeOf = () => {
//
const message = 'Hello world';
console.log(typeof message);
const num1 = 25;
const num2 = 20;
const num3 = 36;
//
console.log(~num1, ~num2, ~num3); // -26 -21 -37
//
console.log(25 & 3, 36 & 6, 20 & 1, 30 & 6); // 1 4 0 6
//
console.log(25 | 3, 20 | 1, 30 | 1, 30 | 2); // 27 21 31 30
//
console.log(25 ^ 3, 26 ^ 3, 30 ^ 1, 32 ^ 2); // 26 25 31 34
//
console.log(2 << 5, 6 << 2, 2 << 3); // 64 3072 16
//
console.log(2 >> 1, 4 >> 0, 12 >> 2, 26 >> 1); // 1 4 3 13
//
console.log(2 >> 2, 24 >> 1, 20 >> 1); // 0 12 10
//
console.log(2 ** 2, 3 ** 2, 6 ** 2, 3 ** 3); // 4 9 36 27
};
onMounted(() => {
testTypeOf();
});
</script>
<template></template>
<style lang="scss" scoped></style>

View File

@ -0,0 +1,51 @@
<script lang="ts" setup>
import { onMounted } from 'vue';
const dateTest = async () => {
//
const date = new Date();
console.log(`当前时间:${date}`); // Thu Aug 01 2024 09:33:47 GMT+0800 ()
//
const now = Date.now();
console.log(`当前时间戳:${now}`); // 1722476248241
//
const parseDate = new Date(Date.parse('Mon Jan 01 2024'));
console.log(parseDate); // Mon Jan 01 2024 00:00:00 GMT+0800 ()
//
const parseDate2 = new Date('Jan 01 2024');
console.log(parseDate2); // Mon Jan 01 2024 00:00:00 GMT+0800 ()
// UTC
const utcDate = new Date(Date.UTC(2024, 6));
console.log(utcDate); // Mon Jul 01 2024 08:00:00 GMT+0800 ()
//
console.log(utcDate > parseDate); // true
date.toUTCString();
date.toTimeString();
date.toDateString();
date.toLocaleDateString();
date.toJSON();
date.toISOString();
date.toLocaleString();
date.toLocaleTimeString();
};
onMounted(() => {
dateTest();
});
</script>
<template>
<img
alt=""
draggable="false"
src="http://192.168.3.98:9000/test/64ee875c-7005-491c-be82-413aacd94b3aimage-20240604142630699.png"
/>
</template>
<style lang="scss" scoped></style>

View File

@ -0,0 +1,76 @@
<script lang="ts" setup>
import { ref } from 'vue';
const imageSrc = ref();
const textValue = ref();
const binaryString = ref();
const buffer = ref();
const onFileChange = (event: Event) => {
// buffer
const fileReaderBuffer = new FileReader();
// base64
const fileReaderBase64 = new FileReader();
//
const fileReaderText = new FileReader();
//
const fileReaderBinaryString = new FileReader();
//
const files = (event.target as HTMLInputElement).files;
if (files && files.length > 0) {
// Base64
fileReaderBase64.readAsDataURL(files[0]);
fileReaderBase64.onload = () => {
imageSrc.value = fileReaderBase64.result;
console.log(fileReaderBase64.result);
};
//
fileReaderText.abort();
fileReaderText.readAsText(files[0]);
fileReaderText.onload = () => {
textValue.value = fileReaderText.result;
};
//
fileReaderBinaryString.readAsBinaryString(files[0]);
fileReaderBinaryString.onload = () => {
binaryString.value = fileReaderBinaryString.result;
};
// buffer
fileReaderBuffer.readAsArrayBuffer(files[0]);
fileReaderBuffer.onloadend = () => {
buffer.value = fileReaderBuffer.result;
};
//
fileReaderBinaryString.onprogress = (ev: ProgressEvent) => {
console.log(`${ev.loaded}/${ev.total}`);
};
//
fileReaderBinaryString.onerror = (ev: any) => {
console.log(ev.code);
console.log(fileReaderBinaryString.error?.code);
};
}
};
</script>
<template>
<input type="file" @change="onFileChange" />
<br />
<!-- buffer 图片-->
<img v-if="buffer" :src="imageSrc" alt="" class="card-img w-[200px] h-[200px]" />
<br />
<!-- base64图片 -->
<img v-if="imageSrc" :src="imageSrc" alt="" class="card-img w-[200px] h-[200px]" />
<br />
<!-- 字符串内容 -->
<textarea :value="textValue" class="w-[600px]" rows="6" />
<br />
<!-- 二进制文本内容 -->
<textarea :value="binaryString" class="w-[600px]" rows="6" />
</template>

View File

@ -0,0 +1,23 @@
<script lang="ts" setup>
import { onMounted } from 'vue';
const notificationsTest = async () => {
const permissionPromise = await Notification.requestPermission();
console.log(permissionPromise);
new Notification('通知标题内容');
const notification = new Notification('测试标题', {
body: '你好啊啊啊',
image: 'http://192.168.3.98:9000/test/64ee875c-7005-491c-be82-413aacd94b3aimage-20240604142630699.png',
vibrate: true,
});
setTimeout(() => notification, 3000);
};
onMounted(() => {
notificationsTest();
});
</script>
<template></template>
<style lang="scss" scoped></style>