Vue+Go 自定义打字素材的打字网站

Typing_Key_Board

这是一个基于Vue 3和Go语言的自定义素材打字练习网站,灵感来源于常用字打字练习,解决了大多数网站无法自定义打字素材的问题。在 Typing_Key_Board (简称TKB)中,用户可以自定义打字素材进行练习,在复习代码的同时仍然可以练习打字速度,一举两得。

Github仓库地址

Typing_Key_Board
欢迎大家来练手,贴出在线演示网址:(在线打字)佬们轻点。期待您的star~

项目截图

  • 自定义打字素材:
    请添加图片描述

  • 打字练习
    请添加图片描述

  • 打字历史记录(可以看到自己的进步)
    请添加图片描述

项目结构

项目采用前后端分离架构:

  • frontend: Vue+ Vite实现的前端
  • backend: Go语言实现的后端API,使用SQLite存储数据

功能特点

  • 内置多种编程相关的打字练习素材
  • 用户可以自定义添加练习文本内容
  • 支持英文的打字练习
  • 实时显示打字结果,正确显示绿色,错误显示红色
  • 允许删除错误输入并回滚进度
  • 统计打字错误数量和准确率
  • 打字历史记录功能,记录每次练习的错误数和准确率
  • 素材内容持久化保存到SQLite数据库,不用担心数据丢失。

前端本地启动方法

# 进入前端目录
cd frontend

# 安装依赖
npm install

# 启动开发服务器
npm run dev

前端会在 http://localhost:3000 启动。

后端本地启动方法

# 进入后端目录
cd backend

# 下载依赖
go mod tidy

# 启动服务器
go run main.go

后端API会在 http://localhost:8080 启动。

技术栈

前端

  • Vue
  • Vue Router
  • Vite
  • Axios

后端

  • Go
  • Gin框架
  • SQLite

使用Docker部署到云服务器

  • 修改文件列表

    • main.js
    • main.go(修改TODO的位置的IP)
  • 利用文件上传工具上传到云服务器的自建目录下,项目结构如下:

   typing-app/
   ├── frontend/
   │   ├── src/
   │   ├── public/
   │   ├── package.json
   │   ├── Dockerfile
   │   └── docker/
   │       └── nginx.conf
   ├── backend/
   │   ├── main.go
   │   ├── go.mod
   │   ├── go.sum
   │   └── Dockerfile
   ├── docker-compose.yml
   └── data/
  • 进入项目目录

cd /xxx/typing-app

  • 使用 Docker Compose 构建镜像

docker-compose build

  • 等待成功后启动容器

docker-compose up -d

  • 检查容器是否正常运行

docker-compose ps

应该显示 frontend 和 backend 两个容器的状态为 up。

  • 查看容器日志确保没有出现错误

docker-compose logs

  • 在服务器安全组打开8000和9000端口

  • 访问应用

http://服务器公网IP:8000进入即可访问~

如果在使用过程中遇到问题可以参看下方的解决方案。

可能会遇到的问题

Ubuntu系统安装Docker-compose

sudo apt install -y docker-compose

​ 验证安装:

docker-compose --version

拉取镜像遇到报错
ERROR: Service 'backend' failed to build: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

这个报错通常是需要配置国内镜像源:(/etc/docker/daemon.json)

{
          "registry-mirrors" : ["https://docker.registry.cyou",
                  "https://docker-cf.registry.cyou",
                  "https://dockercf.jsdelivr.fyi",
                  "https://docker.jsdelivr.fyi",
                  "https://dockertest.jsdelivr.fyi",
                  "https://mirror.aliyuncs.com",
                  "https://dockerproxy.com",
                  "https://mirror.baidubce.com",
                  "https://docker.m.daocloud.io",
                  "https://docker.nju.edu.cn",
                  "https://docker.mirrors.sjtug.sjtu.edu.cn",
                  "https://docker.mirrors.ustc.edu.cn",
                  "https://mirror.iscas.ac.cn",
                  "https://docker.rainbond.cc",
                  "https://do.nark.eu.org",
                  "https://dc.j8.work",
                  "https://dockerproxy.com",
                  "https://gst6rzl9.mirror.aliyuncs.com",
                  "https://registry.docker-cn.com",
                  "http://hub-mirror.c.163.com",
                  "http://mirrors.ustc.edu.cn/",
                  "https://mirrors.tuna.tsinghua.edu.cn/",
                  "http://mirrors.sohu.com/" 
          ],
           "insecure-registries" : [
                       "registry.docker-cn.com",
                       "docker.mirrors.ustc.edu.cn"
          ],
          "debug": true,
          "experimental": false
}

重启Docker服务

sudo systemctl daemon-reload

sudo systemctl restart docker

可以使用 docker pull golang:1.23.0 尝试一下是否能成功,如果不成功则需要检查DNS配置。

cat /etc/resolv.conf

修改配置文件为:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

# nameserver 127.0.0.53
nameserver 114.114.114.114
nameserver 8.8.8.8
options timeout:10 attempts:3 rotate single-request-reopen
  • 延长尝试的时间,确保能够连接上并且下载,在这里我设置为10秒,也可以设置为更长的时间。
  • 设置nameserver
启动之后如果又修改了代码怎么办?

比如现在修改了Nginx的配置文件

尝试直接重启容器:

docker restart typingapp_frontend_1

如果不成功,就重建前端容器:

# 停止前端容器
docker stop typingapp_frontend_1
# 删除前端容器
docker rm typingapp_frontend_1
# 重新创建并启动前端容器
docker-compose up -d frontend

检查是否正常运行:

docker ps

又比如修改了docker-compose文件

需要重新构建并启动容器

docker-compose down
# docker-compose build backend
docker-compose build --no-cache backend
docker-compose up -d
总结:

​ 修改了前后端的代码之后,只需要先down掉容器,重新构建并上线即可。

进入前后端容器的方法

docker exec -it 容器name sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值