This commit is contained in:
Zyronon
2025-11-06 23:57:30 +08:00
parent 90fcd70604
commit df84a88473
16 changed files with 165 additions and 114 deletions

View File

@@ -34,7 +34,7 @@ jobs:
run: pnpm install
- name: Build
run: pnpm run build
run: pnpm run build-oss
- name: Deploy to OSS + Refresh CDN
run: pnpm run deploy-oss

View File

@@ -34,7 +34,7 @@ jobs:
run: pnpm install
- name: Build
run: pnpm run build-nocdn
run: pnpm run build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3

11
Note.md
View File

@@ -68,13 +68,4 @@ Food and talk
26的 of curse
1、例句可以选中单词并添加到收藏
1、域名你需要一个真正的品牌type域名契合内容让人记得住
2、口号太墨迹记不住要简介学习英语一次敲击一点进步记忆不再盲目学习更高效开源单词与文章练习工具
3、布局没有逻辑首页进去看到标题然后两个小的单词练习、文章联系下面又是一大堆大的没有逻辑和划分
4、下面联系方式你需要放一个QQ群社群资源全放联系方式等于没放
5、ABC页面弹出来的保存书签不是加入书签就不迷失是要让他们肌肉记忆住这个网站
6、ABC页面太墨迹不简洁进度复杂本周学习记录改成日历有个标记+激励分享功能,满足炫耀欲望
7、设置不要用那个烂字体真的很山寨
8、更新日志要按v版本和日期跟踪要写的多做得少显示你在认真维护是个令人尊重的程序员
9、必须加后端、账号注册
2、ABC页面太墨迹不简洁进度复杂本周学习记录改成日历有个标记+激励分享功能,满足炫耀欲望

7
components.d.ts vendored
View File

@@ -20,7 +20,6 @@ declare module 'vue' {
Book: typeof import('./src/components/Book.vue')['default']
Checkbox: typeof import('./src/components/base/checkbox/Checkbox.vue')['default']
Close: typeof import('./src/components/icon/Close.vue')['default']
CollectNotice: typeof import('./src/components/CollectNotice.vue')['default']
ConflictNotice: typeof import('./src/components/ConflictNotice.vue')['default']
DeleteIcon: typeof import('./src/components/icon/DeleteIcon.vue')['default']
Dialog: typeof import('./src/components/dialog/Dialog.vue')['default']
@@ -78,7 +77,6 @@ declare module 'vue' {
IconFluentSlideTextTitleEdit20Regular: typeof import('~icons/fluent/slide-text-title-edit20-regular')['default']
IconFluentSpeakerEdit20Regular: typeof import('~icons/fluent/speaker-edit20-regular')['default']
IconFluentSpeakerSettings20Regular: typeof import('~icons/fluent/speaker-settings20-regular')['default']
IconFluentStar12Regular: typeof import('~icons/fluent/star12-regular')['default']
IconFluentStar16Filled: typeof import('~icons/fluent/star16-filled')['default']
IconFluentStar16Regular: typeof import('~icons/fluent/star16-regular')['default']
IconFluentStar20Filled: typeof import('~icons/fluent/star20-filled')['default']
@@ -92,12 +90,7 @@ declare module 'vue' {
IconFluentWeatherMoon16Regular: typeof import('~icons/fluent/weather-moon16-regular')['default']
IconFluentWeatherSunny16Regular: typeof import('~icons/fluent/weather-sunny16-regular')['default']
IconIconParkOutlineAddMusic: typeof import('~icons/icon-park-outline/add-music')['default']
IconMaterialSymbolsMail: typeof import('~icons/material-symbols/mail')['default']
IconPhExportLight: typeof import('~icons/ph/export-light')['default']
IconRiTwitterFill: typeof import('~icons/ri/twitter-fill')['default']
IconSimpleIconsGithub: typeof import('~icons/simple-icons/github')['default']
IconSimpleIconsWechat: typeof import('~icons/simple-icons/wechat')['default']
IconSimpleIconsXiaohongshu: typeof import('~icons/simple-icons/xiaohongshu')['default']
IconSystemUiconsImport: typeof import('~icons/system-uicons/import')['default']
InputNumber: typeof import('./src/components/base/InputNumber.vue')['default']
List: typeof import('./src/components/list/List.vue')['default']

View File

@@ -2,34 +2,50 @@
<html lang="zh-CN">
<head>
<meta charset="UTF-8"/>
<link rel="icon" type="image/svg+xml" href="/favicon.png"/>
<link rel="manifest" href="/manifest.json">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Type Words - 词文记 | 单词跟打 · 文章跟打</title>
<title>Type Words 官网 - 词文记 | 单词跟打 · 文章跟打</title>
<!-- 搜索引擎描述 -->
<meta name="description"
content="Type Words在线英语练习平台,支持单词、文章跟打练习,提升打字与语言能力。Practice English, one keystroke at a time.">
content="Type Words 官方网站 - 在线英语练习平台,支持单词、文章跟打练习,提升英语学习效率。Practice English, one strike, one step forward">
<!-- 关键词(可选,搜索引擎基本不用,但能补充信息) -->
<meta name="keywords"
content="Type Words, Typing Word, 英语打字练习, 单词跟打, 文章跟打, 键盘练习, 英语学习, 文章学习">
content="Type Words, Typing Word, Type Words 官网, 官方网站, 英语打字练习, 单词跟打, 文章跟打, 键盘练习, 英语学习, 文章学习, 打字练习软件, 单词记忆工具, 英语学习软件, 背单词神器, 英语肌肉记忆, 键盘工作者, 免费英语学习, 音标发音, 默写练习, 在线学英语, CET-4, CET-6, TOEFL, IELTS, GRE, GMAT, SAT, 考研英语, 专四专八, 程序员英语, JavaScript API, Node.js API, Java API, Linux命令, 编程词汇, 技术英语, VSCode插件, 开源项目, GitHub趋势榜, V2EX热搜, Gitee GVP, 少数派推荐, 英语打字训练, WPM统计, 准确率分析, 商务英语, BEC, 雅思听力, 日语学习, 多语言学习, 英语口语练习, 单词拼写训练">
<meta name="author" content="zyronon"/>
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"/>
<link rel="canonical" href="https://2study.top/"/>
<!-- Open Graph用于社交媒体分享微信/QQ/知乎/Facebook 等) -->
<meta property="og:title" content="Type Words - 英语打字练习平台">
<meta property="og:title" content="Type Words 官网 - 英语打字练习平台">
<meta property="og:description"
content="在线英语打字练习平台,支持单词跟打与文章跟打,帮助提升打字速度与英语学习效率。">
content="Type Words 官方网站 - 在线英语练习平台,支持单词文章跟打练习提升英语学习效率。Practice English, one strike, one step forward">
<meta property="og:type" content="website">
<meta property="og:url" content="https://2study.top/">
<meta property="og:image" content="https://2study.top/favicon.png">
<!-- Twitter Card用于 Twitter 分享) -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Type Words - 英语打字练习平台">
<meta name="twitter:title" content="Type Words 官网 - 英语打字练习平台">
<meta name="twitter:description"
content="Type Words在线英语练习平台,支持单词跟打、文章练习,提升打字速度与英语水平。">
content="Type Words 官方网站 - 在线英语练习平台,支持单词、文章跟打练习,提升英语学习效率。Practice English, one strike, one step forward">
<meta name="twitter:image" content="https://2study.top/favicon.png">
<!--用于百度站长验证 -->
<meta name="baidu-site-verification" content="codeva-Kw33xFT3p2"/>
<link rel="icon" type="image/svg+xml" href="/favicon.png"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<!-- 苹果设备iOS Safari在用户添加到主屏时显示的图标-->
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.png"/>
<!-- 设置浏览器地址栏颜色(在 Android Chrome 特别明显)。-->
<meta name="theme-color" content="#818CF8"/>
<!-- 阻止 iOS 自动把数字识别为电话号码。-->
<!-- HandheldFriendly 和 MobileOptimized 是旧手机浏览器的优化提示(现在作用不大)。-->
<meta name="format-detection" content="telephone=no"/>
<meta name="HandheldFriendly" content="True"/>
<meta name="MobileOptimized" content="320"/>
<!-- referrer 控制请求来源信息-->
<meta name="referrer" content="origin-when-cross-origin"/>
<!-- color-scheme 告诉浏览器支持亮/暗模式-->
<meta name="color-scheme" content="light dark"/>
<script>
if (!location.href.includes('localhost')
@@ -68,6 +84,10 @@
</script>
</head>
<body>
<noscript>
<div>You need to enable JavaScript to run Type Words.</div>
<div>你需要启用 JavaScript 来运行 Type Words.</div>
</noscript>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>

View File

@@ -1,5 +0,0 @@
[[redirects]]
from = "/baidu"
to = "https://api.fanyi.baidu.com/api/trans/vip/translate"
status = 200
force = true

View File

@@ -6,10 +6,11 @@
"start": "vite",
"dev": "vite",
"test": "",
"build": "vite build && node scripts/do.js",
"build-nocdn": "vite build",
"build": "vite build",
"build-oss": "vite build && node scripts/do.js",
"build-tsc": "vue-tsc && vite build",
"report": "vite build",
"report-oss": "vite build",
"preview": "vite preview",
"commit": "git-cz",
"prepare": "husky install",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

BIN
public/qq.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

View File

@@ -2,81 +2,51 @@
<html lang="en">
<head>
<meta charset="UTF-8"/>
<link rel="icon" type="image/svg+xml" href="/favicon.png"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Type Words - 词文记 | 单词跟打 · 文章跟打</title>
<title>Type Words 官网 - 词文记 | 单词跟打 · 文章跟打</title>
<!-- 搜索引擎描述 -->
<meta name="description"
content="Type Words在线英语练习平台,支持单词、文章跟打练习,提升打字与语言能力。Practice English, one keystroke at a time.">
content="Type Words 官方网站 - 在线英语练习平台,支持单词、文章跟打练习,提升英语学习效率。Practice English, one strike, one step forward">
<!-- 关键词(可选,搜索引擎基本不用,但能补充信息) -->
<meta name="keywords"
content="Type Words, Typing Word, 英语打字练习, 单词跟打, 文章跟打, 键盘练习, 英语学习, 文章学习">
content="Type Words, Typing Word, Type Words 官网, 官方网站, 英语打字练习, 单词跟打, 文章跟打, 键盘练习, 英语学习, 文章学习, 打字练习软件, 单词记忆工具, 英语学习软件, 背单词神器, 英语肌肉记忆, 键盘工作者, 免费英语学习, 音标发音, 默写练习, 在线学英语, CET-4, CET-6, TOEFL, IELTS, GRE, GMAT, SAT, 考研英语, 专四专八, 程序员英语, JavaScript API, Node.js API, Java API, Linux命令, 编程词汇, 技术英语, VSCode插件, 开源项目, GitHub趋势榜, V2EX热搜, Gitee GVP, 少数派推荐, 英语打字训练, WPM统计, 准确率分析, 商务英语, BEC, 雅思听力, 日语学习, 多语言学习, 英语口语练习, 单词拼写训练">
<meta name="author" content="zyronon" />
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
<link rel="canonical" href="https://2study.top/" />
<!-- Open Graph用于社交媒体分享微信/QQ/知乎/Facebook 等) -->
<meta property="og:title" content="Type Words - 英语打字练习平台">
<meta property="og:title" content="Type Words 官网 - 英语打字练习平台">
<meta property="og:description"
content="在线英语打字练习平台,支持单词跟打与文章跟打,帮助提升打字速度与英语学习效率。">
content="Type Words 官方网站 - 在线英语练习平台,支持单词文章跟打练习提升英语学习效率。Practice English, one strike, one step forward">
<meta property="og:type" content="website">
<meta property="og:url" content="https://2study.top/">
<meta property="og:image" content="https://2study.top/favicon.png">
<!-- Twitter Card用于 Twitter 分享) -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Type Words - 英语打字练习平台">
<meta name="twitter:title" content="Type Words 官网 - 英语打字练习平台">
<meta name="twitter:description"
content="Type Words在线英语练习平台,支持单词跟打、文章练习,提升打字速度与英语水平。">
content="Type Words 官方网站 - 在线英语练习平台,支持单词、文章跟打练习,提升英语学习效率。Practice English, one strike, one step forward">
<meta name="twitter:image" content="https://2study.top/favicon.png">
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/service-worker.js').then(registration => {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(error => {
console.log('ServiceWorker registration failed: ', error);
});
});
}
</script>
<script>
function nav(url) {
window.location.href = url;
// history.pushState(null, "", url);
}
<link rel="icon" type="image/svg+xml" href="/favicon.png"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<!-- 苹果设备iOS Safari在用户添加到主屏时显示的图标-->
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.png" />
<!-- 设置浏览器地址栏颜色(在 Android Chrome 特别明显)。-->
<meta name="theme-color" content="#818CF8" />
function toggleEl(val, close = false) {
let le = document.querySelector(val)
if (le) {
if (['none', ''].includes(le.style.display) && !close) {
le.style.display = 'block';
setTimeout(function () {
le.style.opacity = 1;
}, 10)
} else {
le.style.opacity = 0;
setTimeout(function () {
le.style.display = 'none';
}, 300)
}
}
}
<!-- 阻止 iOS 自动把数字识别为电话号码。-->
<!-- HandheldFriendly 和 MobileOptimized 是旧手机浏览器的优化提示(现在作用不大)。-->
<meta name="format-detection" content="telephone=no" />
<meta name="HandheldFriendly" content="True" />
<meta name="MobileOptimized" content="320" />
function toggleWechatDialog() {
toggleEl('.mask')
toggleEl('#wechatDialog')
}
<!-- referrer 控制请求来源信息-->
<meta name="referrer" content="origin-when-cross-origin" />
<!-- color-scheme 告诉浏览器支持亮/暗模式-->
<meta name="color-scheme" content="light dark" />
function toggleXhsDialog() {
toggleEl('.mask')
toggleEl('#xhsDialog')
}
function closeDialog() {
toggleEl('.mask')
toggleEl('#wechatDialog', true)
toggleEl('#xhsDialog', true)
}
</script>
<style>
body {
background: rgb(231, 232, 235);
@@ -95,7 +65,7 @@
h2 {
font-size: 1.4rem !important;
font-weight: bold !important;
font-weight: normal !important;
color: rgb(91, 91, 91);
margin: 0;
}
@@ -108,7 +78,7 @@
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 0.8rem;
gap: 0.6rem;
margin-bottom: 0;
width: 25%;
background: rgb(247, 247, 247);
@@ -149,9 +119,9 @@
white-space: nowrap;
border-radius: 0.3rem;
color: white;
background: rgb(75, 85, 99);
background: rgb(12, 140, 233);
padding: 0 1.3rem;
height: 2.4rem;
height: 2.5rem;
font-size: 0.9rem;
}
@@ -228,6 +198,7 @@
}
.content {
margin-top: 6rem;
display: flex;
justify-content: center;
align-items: center;
@@ -240,11 +211,15 @@
}
.sky {
margin-top: 3rem;
border-top: 1px solid #cecece;
border-bottom: 1px solid #cecece;
padding: 1.2rem 0;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
gap: 1rem;
gap: 0.4rem;
width: 100%;
margin-bottom: 1rem;
}
@@ -267,9 +242,9 @@
.bottom {
display: flex;
gap: 1rem;
margin: 2rem 0;
margin:1rem 0 2rem 0;
width: 100%;
padding-top: 2rem;
padding-top: 1.5rem;
border-top: 1px solid #c4c4c4;
justify-content: center;
align-items: center;
@@ -291,14 +266,69 @@
margin-top: 1.2rem;
}
</style>
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/service-worker.js').then(registration => {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(error => {
console.log('ServiceWorker registration failed: ', error);
});
});
}
</script>
<script>
function nav(url) {
window.location.href = url;
// history.pushState(null, "", url);
}
function toggleEl(val, close = false) {
let le = document.querySelector(val)
if (le) {
if (['none', ''].includes(le.style.display) && !close) {
le.style.display = 'block';
setTimeout(function () {
le.style.opacity = 1;
}, 10)
} else {
le.style.opacity = 0;
setTimeout(function () {
le.style.display = 'none';
}, 300)
}
}
}
function toggleWechatDialog() {
toggleEl('.mask')
toggleEl('#wechatDialog')
}
function toggleQQDialog() {
toggleEl('.mask')
toggleEl('#qqDialog')
}
function toggleXhsDialog() {
toggleEl('.mask')
toggleEl('#xhsDialog')
}
function closeDialog() {
toggleEl('.mask')
toggleEl('#wechatDialog', true)
toggleEl('#xhsDialog', true)
toggleEl('#qqDialog', true)
}
</script>
</head>
<body>
<div class="wrapper">
<div class="content">
<h1>Type Words</h1>
<div class="text-center">
<h2>学习英语,一次敲击,一点进步</h2>
<h2>记忆不再盲目,学习更高效,开源单词与文章练习工具</h2>
<h2>学习英语,一次敲击,一点进步,开源单词与文章练习工具</h2>
</div>
<div class="">
<div class="base-button" onclick="nav('/words')">单词练习</div>
@@ -306,11 +336,11 @@
</div>
<div class="sky">
<a href="https://skywork.ai/p/GrXQb4" class="w" target="_blank">
<img src="/skywork-ai.png"
<a href="https://skywork.ai/p/GrXQb4" style="width: 40%;" target="_blank">
<img src="https://2study.top/skywork-ai.png"
alt="Skywork.AI"
class="sky-img"></a>
<span>Skywork.AI:<a href="https://skywork.ai/p/GrXQb4" class="color-blue!" target="_blank">10 tasks in 1 hour, not 10 hours →Limited free spots: 127 left</a></span>
<span>赞助:<a href="https://skywork.ai/p/GrXQb4" class="color-blue!" target="_blank">Skywork.AI: 10 tasks in 1 hour, not 10 hours →Limited free spots: 127 left</a></span>
</div>
<div class="w">
<div class="card-wrap">
@@ -383,7 +413,7 @@
<div class="title">简洁高效</div>
<div class="desc">
<ul>
<li>简洁设计现代化UI,无广告</li>
<li>简洁设计现代化UI</li>
<li>界面清爽,操作简单</li>
<li>不强制关注任何平台</li>
</ul>
@@ -425,6 +455,10 @@
d="M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 0 1 .213.665l-.39 1.48c-.019.07-.048.141-.048.213c0 .163.13.295.29.295a.33.33 0 0 0 .167-.054l1.903-1.114a.86.86 0 0 1 .717-.098a10.2 10.2 0 0 0 2.837.403c.276 0 .543-.027.811-.05c-.857-2.578.157-4.972 1.932-6.446c1.703-1.415 3.882-1.98 5.853-1.838c-.576-3.583-4.196-6.348-8.596-6.348M5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178A1.17 1.17 0 0 1 4.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178a1.17 1.17 0 0 1-1.162-1.178c0-.651.52-1.18 1.162-1.18m5.34 2.867c-1.797-.052-3.746.512-5.28 1.786c-1.72 1.428-2.687 3.72-1.78 6.22c.942 2.453 3.666 4.229 6.884 4.229c.826 0 1.622-.12 2.361-.336a.72.72 0 0 1 .598.082l1.584.926a.3.3 0 0 0 .14.047c.134 0 .24-.111.24-.247c0-.06-.023-.12-.038-.177l-.327-1.233a.6.6 0 0 1-.023-.156a.49.49 0 0 1 .201-.398C23.024 18.48 24 16.82 24 14.98c0-3.21-2.931-5.837-6.656-6.088V8.89c-.135-.01-.27-.027-.407-.03zm-2.53 3.274c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983a.976.976 0 0 1-.969-.983c0-.542.434-.982.97-.982zm4.844 0c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983a.976.976 0 0 1-.969-.983c0-.542.434-.982.969-.982"></path>
</svg>
</div>
<div class="icon" onclick="toggleQQDialog()">
<svg viewBox="0 0 24 24" width="1.4em" height="1.4em"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M12 2a6.285 6.285 0 0 0-6.276 5.937l-.146 2.63a28 28 0 0 0-.615 1.41c-1.24 3.073-1.728 5.773-1.088 6.032c.335.135.913-.426 1.566-1.432a6.67 6.67 0 0 0 1.968 3.593c-1.027.35-1.91.828-1.91 1.33c0 .509 2.48.503 4.239.5h.001c.549-.002 1.01-.008 1.38-.057a6.7 6.7 0 0 0 1.76 0c.37.05.833.055 1.382.056c1.76.004 4.239.01 4.239-.499c0-.502-.883-.979-1.909-1.33a6.67 6.67 0 0 0 1.967-3.586c.65 1.002 1.227 1.56 1.56 1.425c.64-.259.154-2.96-1.088-6.032a28 28 0 0 0-.607-1.395l-.147-2.645A6.285 6.285 0 0 0 12 2"/></g></svg>
</div>
<div class="icon" onclick="toggleXhsDialog()">
<svg viewBox="0 0 24 24" width="1.4em" height="1.4em">
<path fill="currentColor"
@@ -464,7 +498,7 @@
<div class="dialog" id="wechatDialog">
<header>
<div class="title">Type Words 交流</div>
<div class="title">微信</div>
<svg
onclick="toggleWechatDialog()"
viewBox="0 0 20 20" width="24" height="1.2em" class="cursor-pointer">
@@ -473,9 +507,7 @@
</svg>
</header>
<div class="dialog-body">
<span>
加入我们的用户社群后,您可以与我们的开发团队进行沟通,分享您的使用体验和建议,帮助我们改进产品,同时也能够及时了解我们的最新动态和更新内容。
</span>
<span>加入我们的用户社群后,您可以与我们的开发团队进行沟通,分享您的使用体验和建议,帮助我们改进产品,同时也能够及时了解我们的最新动态和更新内容。</span>
<div class="center">
<img src="/wechat.png" alt="微信群二维码" class="img">
</div>
@@ -499,6 +531,24 @@
</div>
</div>
</div>
<div class="dialog" id="qqDialog">
<header>
<div class="title">QQ群</div>
<svg
onclick="toggleXhsDialog()"
viewBox="0 0 20 20" width="24" height="1.2em" class="cursor-pointer">
<path fill="currentColor"
d="m4.089 4.216l.057-.07a.5.5 0 0 1 .638-.057l.07.057L10 9.293l5.146-5.147a.5.5 0 0 1 .638-.057l.07.057a.5.5 0 0 1 .057.638l-.057.07L10.707 10l5.147 5.146a.5.5 0 0 1 .057.638l-.057.07a.5.5 0 0 1-.638.057l-.07-.057L10 10.707l-5.146 5.147a.5.5 0 0 1-.638.057l-.07-.057a.5.5 0 0 1-.057-.638l.057-.07L9.293 10L4.146 4.854a.5.5 0 0 1-.057-.638l.057-.07z"></path>
</svg>
</header>
<div class="dialog-body">
<span>加入我们的用户社群后,您可以与我们的开发团队进行沟通,分享您的使用体验和建议,帮助我们改进产品,同时也能够及时了解我们的最新动态和更新内容。</span>
<div class="center">
<img src="/qq.jpg" alt="QQ群二维码" class="img">
</div>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

View File

@@ -427,8 +427,8 @@ function onContextMenu(e: MouseEvent, sentence: Sentence, i, j, w) {
label: "收藏单词",
onClick: () => {
let word = props.article.sections[i][j].words[w]
let doc = nlp(word.word)
let text = word.word
let doc = nlp(text)
// 优先判断是不是动词
if (doc.verbs().found) {
text = doc.verbs().toInfinitive().text()

View File

@@ -17,7 +17,8 @@ function pathResolve(dir: string) {
}
const lifecycle = process.env.npm_lifecycle_event;
let isCdnBuild = ['build', 'report'].includes(lifecycle)
let isCdnBuild = ['build-oss', 'report-oss'].includes(lifecycle)
let isAnalyseBuild = ['report-oss', 'report'].includes(lifecycle)
// https://vitejs.dev/config/
export default defineConfig(() => {
@@ -47,7 +48,7 @@ export default defineConfig(() => {
},
}),
UnoCSS(),
lifecycle === 'report' ?
isAnalyseBuild ?
visualizer({
gzipSize: true,
brotliSize: true,