🔒 SUPPORT SSR SITE REBUILD && DECLARE FORK TARGET REPO:IT-TOOL

This commit is contained in:
babyProxy 2024-04-22 23:42:56 +08:00
parent 61035dd088
commit 80aa4292a5
6 changed files with 7019 additions and 5530 deletions

View file

@ -4,18 +4,18 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" href="favicon.ico" /> <link rel="icon" href="favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>IT Tools</title> <title>极客日志 - 在线工具箱 - zeeklog</title>
<meta itemprop="name" content="IT Tools" /> <meta itemprop="name" content="Zeeklog online tools" />
<meta <meta
name="description" name="description"
content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." content="极客日志 在线工具 编码/解码url格式的字符串 JWT解析器 XML格式化 在线二维码生成器 在线JSON美化 在线JSON格式化 JSON转YAML转换器 TOML转YAML 在线 Base64 字符串编码/解码图片转base64 Base64 文件转换器 BIP39密码生成器 Hmac 生成器 罗马数字转换器 ETA 计算器 YAML美化和格式化 随机端口生成 加密/解密文本 打乱字符串 Git 备忘录 基准生成器 HTTP 状态码 SQL 美化和格式化 Crontab 表达式生成 密码强度分析仪 计时器 Token 生成器 百分比计算器 SVG 占位符生成器 JSON 转 CSV 摄像机记录器 Keycode 信息 Emoji 选择器 Color 选择器 加密 "
/> />
<meta <meta
itemprop="description" itemprop="description"
content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." content="极客日志 在线工具 编码/解码url格式的字符串 JWT解析器 XML格式化 在线二维码生成器 在线JSON美化 在线JSON格式化 JSON转YAML转换器 TOML转YAML 在线 Base64 字符串编码/解码图片转base64 Base64 文件转换器 BIP39密码生成器 Hmac 生成器 罗马数字转换器 ETA 计算器 YAML美化和格式化 随机端口生成 加密/解密文本 打乱字符串 Git 备忘录 基准生成器 HTTP 状态码 SQL 美化和格式化 Crontab 表达式生成 密码强度分析仪 计时器 Token 生成器 百分比计算器 SVG 占位符生成器 JSON 转 CSV 摄像机记录器 Keycode 信息 Emoji 选择器 Color 选择器 加密 "
/> />
<link rel="author" href="humans.txt" /> <link rel="author" href="humans.txt" />
<link rel="canonical" href="https://it-tools.tech" /> <link rel="canonical" href="https://tool.zeeklog.com" />
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" /> <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" /> <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" />
@ -24,32 +24,30 @@
<meta name="msapplication-TileColor" content="#da532c" /> <meta name="msapplication-TileColor" content="#da532c" />
<meta name="theme-color" content="#ffffff" /> <meta name="theme-color" content="#ffffff" />
<meta property="og:url" content="https://it-tools.tech/" /> <meta property="og:url" content="https://tool.zeeklog.com/" />
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="IT Tools" /> <meta property="og:title" content="Zeeklog online tools" />
<meta <meta
property="og:description" property="og:description"
content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." content="极客日志 在线工具 编码/解码url格式的字符串 JWT解析器 XML格式化 在线二维码生成器 在线JSON美化 在线JSON格式化 JSON转YAML转换器 TOML转YAML 在线 Base64 字符串编码/解码图片转base64 Base64 文件转换器 BIP39密码生成器 Hmac 生成器 罗马数字转换器 ETA 计算器 YAML美化和格式化 随机端口生成 加密/解密文本 打乱字符串 Git 备忘录 基准生成器 HTTP 状态码 SQL 美化和格式化 Crontab 表达式生成 密码强度分析仪 计时器 Token 生成器 百分比计算器 SVG 占位符生成器 JSON 转 CSV 摄像机记录器 Keycode 信息 Emoji 选择器 Color 选择器 加密 "
/> />
<meta property="og:image" content="https://it-tools.tech/banner.png?v=2" /> <meta property="og:image" content="https://tool.zeeklog.com/banner.png?v=2" />
<meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@ittoolsdottech" /> <meta name="twitter:site" content="@ittoolsdottech" />
<meta name="twitter:creator" content="@cthmsst" /> <meta name="twitter:creator" content="@cthmsst" />
<meta name="twitter:title" content="IT Tools" /> <meta name="twitter:title" content="Zeeklog online tools" />
<meta <meta
name="twitter:description" name="twitter:description"
content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." content="极客日志 在线工具 编码/解码url格式的字符串 JWT解析器 XML格式化 在线二维码生成器 在线JSON美化 在线JSON格式化 JSON转YAML转换器 TOML转YAML 在线 Base64 字符串编码/解码图片转base64 Base64 文件转换器 BIP39密码生成器 Hmac 生成器 罗马数字转换器 ETA 计算器 YAML美化和格式化 随机端口生成 加密/解密文本 打乱字符串 Git 备忘录 基准生成器 HTTP 状态码 SQL 美化和格式化 Crontab 表达式生成 密码强度分析仪 计时器 Token 生成器 百分比计算器 SVG 占位符生成器 JSON 转 CSV 摄像机记录器 Keycode 信息 Emoji 选择器 Color 选择器 加密 "
/> />
<meta name="twitter:image" content="https://it-tools.tech/banner.png?v=2" /> <meta name="twitter:image" content="https://tool.zeeklog.com/banner.png?v=2" />
<meta name="twitter:image:alt" content="IT Tools" /> <meta name="twitter:image:alt" content="Zeeklog online tools" />
<style><!--app-css--></style> <style><!--app-css--></style>
</head> </head>
<body> <body>
<div id="app"><!--app-html--></div> <div id="app"><!--app-html--></div>
<!-- <script type="module" src="/src/main.ts"></script>-->
<script type="module" src="/src/entry-client.ts"></script> <script type="module" src="/src/entry-client.ts"></script>
</body> </body>
</html> </html>

View file

@ -22,7 +22,7 @@
}, },
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vue-tsc --noEmit && NODE_OPTIONS=--max_old_space_size=4096 vite build", "build": "vue-tsc --noEmit && vite build",
"build:ssr": "node server.js", "build:ssr": "node server.js",
"preview": "vite preview --port 5050", "preview": "vite preview --port 5050",
"test": "npm run test:unit", "test": "npm run test:unit",

12349
pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff

View file

@ -7,37 +7,37 @@ const { isDarkTheme } = toRefs(styleStore);
</script> </script>
<template> <template>
<c-tooltip :tooltip="$t('home.nav.github')" position="bottom"> <!-- <c-tooltip :tooltip="$t('home.nav.github')" position="bottom">-->
<c-button <!-- <c-button-->
circle <!-- circle-->
variant="text" <!-- variant="text"-->
href="https://github.com/CorentinTh/it-tools" <!-- href="https://github.com/CorentinTh/it-tools"-->
target="_blank" <!-- target="_blank"-->
rel="noopener noreferrer" <!-- rel="noopener noreferrer"-->
:aria-label="$t('home.nav.githubRepository')" <!-- :aria-label="$t('home.nav.githubRepository')"-->
> <!-- >-->
<n-icon size="25" :component="BrandGithub" /> <!-- <n-icon size="25" :component="BrandGithub" />-->
</c-button> <!-- </c-button>-->
</c-tooltip> <!-- </c-tooltip>-->
<c-tooltip :tooltip="$t('home.nav.twitter')" position="bottom"> <!-- <c-tooltip :tooltip="$t('home.nav.twitter')" position="bottom">-->
<c-button <!-- <c-button-->
circle <!-- circle-->
variant="text" <!-- variant="text"-->
href="https://twitter.com/ittoolsdottech" <!-- href="https://twitter.com/ittoolsdottech"-->
rel="noopener" <!-- rel="noopener"-->
target="_blank" <!-- target="_blank"-->
:aria-label="$t('home.nav.twitterAccount')" <!-- :aria-label="$t('home.nav.twitterAccount')"-->
> <!-- >-->
<n-icon size="25" :component="BrandTwitter" /> <!-- <n-icon size="25" :component="BrandTwitter" />-->
</c-button> <!-- </c-button>-->
</c-tooltip> <!-- </c-tooltip>-->
<c-tooltip :tooltip="$t('home.nav.about')" position="bottom"> <!-- <c-tooltip :tooltip="$t('home.nav.about')" position="bottom">-->
<c-button circle variant="text" to="/about" :aria-label="$t('home.nav.aboutLabel')"> <!-- <c-button circle variant="text" @click='window.open("https://zeeklog.com/about-ne0")' :aria-label="$t('home.nav.aboutLabel')">-->
<n-icon size="25" :component="InfoCircle" /> <!-- <n-icon size="25" :component="InfoCircle" />-->
</c-button> <!-- </c-button>-->
</c-tooltip> <!-- </c-tooltip>-->
<c-tooltip :tooltip="isDarkTheme ? $t('home.nav.lightMode') : $t('home.nav.darkMode')" position="bottom"> <c-tooltip :tooltip="isDarkTheme ? $t('home.nav.lightMode') : $t('home.nav.darkMode')" position="bottom">
<c-button circle variant="text" :aria-label="$t('home.nav.mode')" @click="() => styleStore.toggleDark()"> <c-button circle variant="text" :aria-label="$t('home.nav.mode')" @click="() => styleStore.toggleDark()">
<n-icon v-if="isDarkTheme" size="25" :component="Sun" /> <n-icon v-if="isDarkTheme" size="25" :component="Sun" />

View file

@ -1,38 +1,42 @@
// // entry-client.js // entry-client.js
// import { createApp } from './main'; import { createApp } from './main';
//
// const { app, router } = createApp();
//
// router.isReady().then(() => {
// app.mount('#app', true);
// });
// import 'uno.css'; // 确保这是你的 UnoCSS 生成的样式文件 // import 'uno.css'; // 确保这是你的 UnoCSS 生成的样式文件
import { createHead } from '@vueuse/head'; const { app, router } = createApp();
// src/entry-client.js
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import App from './App.vue';
import router from '@/router';
import { plausible } from '@/plugins/plausible.plugin';
import { naive } from '@/plugins/naive.plugin';
import { i18nPlugin } from '@/plugins/i18n.plugin';
const app = createApp(App);
const pinia = createPinia();
app.use(pinia);
app.use(createHead());
app.use(i18nPlugin);
app.use(router);
app.use(plausible);
app.use(naive);
router.isReady().then(() => { router.isReady().then(() => {
console.log('---- Router is ready, now mounting the app...');
app.mount('#app', true); app.mount('#app', true);
console.log('---- App has been mounted successfully.');
}).catch((err) => { }).catch((err) => {
console.log(err); console.log(err);
}); });
//
// // import 'uno.css'; // 确保这是你的 UnoCSS 生成的样式文件
//
// import { createHead } from '@vueuse/head';
//
// // src/entry-client.js
// import { createApp } from 'vue';
// import { createPinia } from 'pinia';
// import App from './App.vue';
// import router from '@/router';
// import { plausible } from '@/plugins/plausible.plugin';
// import { naive } from '@/plugins/naive.plugin';
// import { i18nPlugin } from '@/plugins/i18n.plugin';
//
// const app = createApp(App);
// const pinia = createPinia();
// app.use(pinia);
// app.use(createHead());
// app.use(i18nPlugin);
// app.use(router);
// app.use(plausible);
// app.use(naive);
//
// router.isReady().then(() => {
// console.log('---- Router is ready, now mounting the app...');
// app.mount('#app', true);
// console.log('---- App has been mounted successfully.');
// }).catch((err) => {
// console.log(err);
// });

View file

@ -41,7 +41,7 @@ const tools = computed<ToolCategory[]>(() => [
<MenuLayout class="menu-layout" :class="{ isSmallScreen: styleStore.isSmallScreen }"> <MenuLayout class="menu-layout" :class="{ isSmallScreen: styleStore.isSmallScreen }">
<template #sider> <template #sider>
<RouterLink to="/" class="hero-wrapper"> <RouterLink to="/" class="hero-wrapper">
<HeroGradient class="gradient" /> <!-- <HeroGradient class="gradient" />-->
<div class="text-wrapper"> <div class="text-wrapper">
<div class="title"> <div class="title">
IT - TOOLS IT - TOOLS
@ -96,14 +96,14 @@ const tools = computed<ToolCategory[]>(() => [
<template #content> <template #content>
<div flex items-center justify-center gap-2> <div flex items-center justify-center gap-2>
<CButton <!-- <CButton-->
circle <!-- circle-->
variant="text" <!-- variant="text"-->
:aria-label="$t('home.toggleMenu')" <!-- :aria-label="$t('home.toggleMenu')"-->
@click="styleStore.isMenuCollapsed = !styleStore.isMenuCollapsed" <!-- @click="styleStore.isMenuCollapsed = !styleStore.isMenuCollapsed"-->
> <!-- >-->
<NIcon size="25" :component="Menu2" /> <!-- <NIcon size="25" :component="Menu2" />-->
</CButton> <!-- </CButton>-->
<CTooltip :tooltip="$t('home.home')" position="bottom"> <CTooltip :tooltip="$t('home.home')" position="bottom">
<CButton to="/" circle variant="text" :aria-label="$t('home.home')"> <CButton to="/" circle variant="text" :aria-label="$t('home.home')">
@ -125,20 +125,20 @@ const tools = computed<ToolCategory[]>(() => [
<NavbarButtons v-if="!styleStore.isSmallScreen" /> <NavbarButtons v-if="!styleStore.isSmallScreen" />
</div> </div>
<CTooltip position="bottom" :tooltip="$t('home.support')"> <!-- <CTooltip position="bottom" :tooltip="$t('home.support')">-->
<CButton <!-- <CButton-->
round <!-- round-->
href="https://www.buymeacoffee.com/cthmsst" <!-- href="https://www.buymeacoffee.com/cthmsst"-->
rel="noopener" <!-- rel="noopener"-->
target="_blank" <!-- target="_blank"-->
class="support-button" <!-- class="support-button"-->
:bordered="false" <!-- :bordered="false"-->
@click="() => tracker.trackEvent({ eventName: 'Support button clicked' })" <!-- @click="() => tracker.trackEvent({ eventName: 'Support button clicked' })"-->
> <!-- >-->
{{ $t('home.buyMeACoffee') }} <!-- {{ $t('home.buyMeACoffee') }}-->
<NIcon v-if="!styleStore.isSmallScreen" :component="Heart" ml-2 /> <!-- <NIcon v-if="!styleStore.isSmallScreen" :component="Heart" ml-2 />-->
</CButton> <!-- </CButton>-->
</CTooltip> <!-- </CTooltip>-->
</div> </div>
<slot /> <slot />
</template> </template>
@ -178,7 +178,7 @@ const tools = computed<ToolCategory[]>(() => [
} }
.sider-content { .sider-content {
padding-top: 160px; //padding-top: 160px;
padding-bottom: 200px; padding-bottom: 200px;
} }