我开源了一个免费在线工具!UIED Tools
UIED Tools - 免费在线工具集合
最近更新:修改了文档说明,优化了项目结构介绍
这是设计师转开发的第一个开源项目,bug和代码规范可能有些欠缺。
这是一个功能丰富的免费在线工具集合网站,集成了多种实用工具,包括 AI 工具、设计工具、开发工具等。该项目旨在为设计师、开发者和普通用户提供一站式工具解决方案,提高工作效率。
在线站点:UIED免费在线工具集
开源地址
https://github.com/Tomccc520/UIED-tools
UIED-Tools: UIED Tools在线免费工具箱,纯AI二次开发。

更新日志
更新日志2025.5.11
项目亮点
- 丰富多样的工具:提供超过80种常用工具,覆盖设计、开发、文本处理、图片处理等多个领域,持续更新中。
- 简洁易用的界面:采用直观的UI设计,让用户快速找到并使用所需工具
- 完全免费:所有工具完全免费使用,无需注册和付费
- 持续更新:定期添加新工具,不断优化已有功能
- 开源共享:项目代码完全开源,欢迎社区贡献和改进
- 中文优化:专为中文用户设计,提供本地化的使用体验
UIED Tools 基于 Vue3、TypeScript 和 Element Plus 开发,支持响应式布局,能够在桌面端和移动端提供良好的使用体验。
快速开始
环境要求
- Node.js 版本: >= 16.0.0
- npm 版本: >= 8.0.0
安装步骤
方法一:从源码安装(推荐开发者使用)
- 克隆仓库到本地
# 从Gitee克隆
git clone https://gitee.com/tomdac/uied-tools.git# 或从GitHub克隆
git clone https://github.com/Tomccc520/UIED-tools.git# 进入项目目录
cd uied-tools
- 安装依赖
# 使用npm安装(推荐)
npm install# 或使用yarn
yarn install# 或使用pnpm
pnpm install
- 启动开发服务器
# 开发模式启动
npm run dev# 指定端口启动
npm run dev -- --port 3000
- 构建生产版本
# 标准构建
npm run build# 包含SEO优化的构建(推荐生产环境使用)
npm run build:pro# 预览构建结果
npm run preview
方法二:使用Docker部署(推荐运维人员使用)
# 拉取镜像
docker pull docker0796/tools-web:latest# 运行容器
docker run -d --name tools-web --restart unless-stopped -p 8080:80 docker0796/tools-web:latest# 访问服务
# 浏览器打开 http://localhost:8080
项目结构说明
uied-tools/
├── src/ # 源代码目录
│ ├── components/ # 组件目录
│ │ ├── Common/ # 公共组件
│ │ │ └── ToolsRecommend.vue # 工具推荐组件
│ │ ├── Home/ # 首页相关组件
│ │ ├── Layout/ # 布局组件
│ │ │ ├── Left/ # 左侧菜单
│ │ │ └── Right/ # 右侧推荐栏
│ │ └── Tools/ # 工具组件目录
│ │ ├── AI/ # AI相关工具
│ │ ├── Avatar/ # 头像相关工具
│ │ ├── Copywriting/ # 文案相关工具
│ │ ├── Design/ # 设计相关工具
│ │ ├── Dev/ # 开发相关工具
│ │ ├── tools.ts # 工具配置文件
│ │ └── ToolIcon.vue # 工具图标组件
│ ├── router/ # 路由配置
│ │ └── router.ts # 主路由文件
│ ├── store/ # 状态管理
│ │ └── modules/ # 状态模块
│ ├── assets/ # 静态资源
│ │ ├── icons/ # SVG图标
│ │ └── styles/ # 全局样式
│ ├── utils/ # 工具函数
│ └── App.vue # 根组件
├── public/ # 公共资源目录
├── docs/ # 文档目录
├── scripts/ # 脚本目录
├── dist/ # 构建输出目录
├── .env.development # 开发环境配置
├── .env.production # 生产环境配置
├── vite.config.ts # Vite配置
├── tailwind.config.js # Tailwind CSS配置
├── tsconfig.json # TypeScript配置
├── package.json # 项目依赖配置
└── README.md # 项目说明文档
开发指南
添加新工具
添加新工具需要完成以下四个步骤:
- 创建工具组件
在 src/components/Tools 对应分类目录下创建新的组件文件。例如要创建一个新的AI工具,可以在 src/components/Tools/AI/ 目录下创建:
<!-- NewAITool.vue -->
<template><div class="p-6 bg-white rounded-lg shadow-sm"><h2 class="text-xl font-bold mb-4">新AI工具</h2><!-- 工具主体内容 --><div class="mb-4"><el-input v-model="inputText" placeholder="请输入内容" /></div><!-- 操作按钮 --><div class="flex justify-between"><el-button type="primary" @click="processData">处理</el-button><el-button @click="resetForm">重置</el-button></div><!-- 结果展示区域 --><div v-if="result" class="mt-4 p-4 bg-gray-50 rounded"><p>{{ result }}</p></div><!-- 底部推荐工具 --><ToolsRecommend :currentPath="route.path" /></div>
</template><script setup lang="ts">
import { ref } from 'vue'
import { useRoute } from 'vue-router'
import ToolsRecommend from '@/components/Common/ToolsRecommend.vue'const route = useRoute()
const inputText = ref('')
const result = ref('')// 处理数据函数
const processData = () => {// 实现工具核心逻辑result.value = `处理结果: ${inputText.value}`
}// 重置表单函数
const resetForm = () => {inputText.value = ''result.value = ''
}
</script>
- 添加路由配置
在 src/router/router.ts 文件中添加新工具的路由配置:
// router.ts
{path: '/tools/ai/new-tool',component: () => import('@/components/Tools/AI/NewAITool.vue'),name: 'newAITool',meta: {title: "新AI工具",keywords: 'AI工具,人工智能,新工具',description: '这是一个强大的AI新工具,可以帮助用户快速处理数据',}
}
- 注册工具信息
在 src/components/Tools/tools.ts 中的合适位置添加工具信息:
// tools.ts
// 在AI工具分类中添加
{id: 123,title: "新AI工具",logo: { type: 'svg', name: 'newAITool' }, // 使用SVG图标desc: "强大的AI工具,可快速处理数据",url: "/tools/ai/new-tool",cateId: 1,cate: 'AI工具',tags: ['新品'] // 可选:添加标签
}
- 添加SVG图标(可选)
如果使用SVG图标,将图标文件放入 src/assets/icons/ 目录下,命名为 newAITool.svg。
完成以上步骤后,刷新页面即可看到新添加的工具。
注意事项
1. 环境配置
- 开发环境:使用
.env.development配置文件NODE_ENV=development VITE_API_BASE_URL=http://localhost:8080/api - 生产环境:使用
.env.production配置文件NODE_ENV=production VITE_API_BASE_URL=https://api.example.com - 本地配置:可创建
.env.local进行本地覆盖(不会提交到代码库)
2. 代码规范
- TypeScript:所有新代码必须使用TypeScript编写
- 开启严格模式:
"strict": true - 使用类型标注:
const name: string = 'value'
- 开启严格模式:
- Vue 规范:
- 使用 Vue 3 Composition API
- 使用
<script setup>语法糖 - 保持组件单一职责
- 样式规范:
- 使用 Tailwind CSS 实用类优先
- 自定义样式使用 scoped CSS
- 遵循 Element Plus 的设计规范
3. 性能优化准则
- 路由懒加载:所有页面组件使用动态导入
{path: '/tools/example',component: () => import('@/components/Tools/Example.vue') // 懒加载 } - 组件按需导入:使用 Element Plus 的按需导入
import { ElButton, ElInput } from 'element-plus' - 资源优化:
- 图片使用WebP格式
- SVG图标使用单色线性风格
- 大型资源使用CDN加载
4. Git提交规范
- 提交信息格式:
<类型>: <描述> - 常用类型:
feat:新功能fix:bug修复docs:文档更新style:代码格式调整refactor:代码重构perf:性能优化test:测试相关chore:构建过程或辅助工具变动
常见问题与解决方案
1. 依赖相关问题
安装依赖失败
# 方法1:清除npm缓存后重试
npm cache clean --force
npm install# 方法2:使用镜像源
npm config set registry https://registry.npmmirror.com
npm install# 方法3:尝试使用其他包管理器
yarn install
# 或
pnpm install
依赖版本冲突
# 更新依赖到兼容版本
npm update# 检查有问题的依赖
npm ls <package-name># 强制解决冲突
npm install --force
2. 开发环境问题
开发服务器启动失败
- 端口占用:修改
vite.config.ts中的端口export default defineConfig({server: {port: 3000 // 修改为其他端口} }) - 模块解析错误:
# 删除node_modules和lock文件后重新安装 rm -rf node_modules package-lock.json npm install - Node.js版本问题:使用 nvm 安装正确版本
nvm install 16 nvm use 16
热更新不工作
- 检查
vite.config.ts中的server.hmr配置 - 确认系统文件监听限制(Linux系统)
- 重启开发服务器
3. 构建与部署问题
构建失败
- 语法错误:检查控制台错误信息,修复对应代码
- 内存不足:增加Node内存限制
# 增加内存限制 export NODE_OPTIONS=--max-old-space-size=4096 npm run build - 依赖缺失:确认所有依赖正确安装
npm install --legacy-peer-deps
部署问题
- 静态资源路径错误:检查
vite.config.ts中的base配置export default defineConfig({base: '/' // 根据实际部署路径调整 }) - Docker部署问题:参考前面的Docker部署指南
- SSR渲染问题:查看SSR构建日志,修复服务端渲染错误
技术栈详解
核心技术
| 技术 | 版本 | 用途 | 文档链接 |
|---|---|---|---|
| Vue | 3.3.10 | 前端框架 | Vue文档 |
| TypeScript | 5.3.3 | 类型检查 | TS文档 |
| Vite | 5.0.10 | 构建工具 | Vite文档 |
| Pinia | 2.1.7 | 状态管理 | Pinia文档 |
| Vue Router | 4.2.5 | 路由管理 | Router文档 |
UI框架与样式
| 技术 | 版本 | 用途 | 文档链接 |
|---|---|---|---|
| Element Plus | 2.7.0 | UI组件库 | Element Plus文档 |
| Tailwind CSS | 3.3.5 | 原子CSS框架 | Tailwind文档 |
| PostCSS | 8.4.32 | CSS处理器 | PostCSS文档 |
工具库
| 技术 | 用途 | 文档链接 |
|---|---|---|
| Axios | HTTP请求 | Axios文档 |
| VueUse | 实用工具集 | VueUse文档 |
| Day.js | 日期处理 | Day.js文档 |
| ECharts | 数据可视化 | ECharts文档 |
开发工具
| 技术 | 用途 | 推荐配置 |
|---|---|---|
| VS Code | 代码编辑器 | 推荐插件:Volar, ESLint, Prettier |
| ESLint | 代码检查 | 配置文件:.eslintrc.js |
| Prettier | 代码格式化 | 配置文件:.prettierrc |
| Git | 版本控制 | 配合Husky进行提交校验 |
贡献指南
欢迎为 UIED Tools 项目做出贡献!请遵循以下步骤:
贡献流程
-
Fork 仓库
- 访问 GitHub仓库 或 Gitee仓库
- 点击右上角"Fork"按钮创建个人分支
-
克隆到本地
git clone https://github.com/你的用户名/UIED-tools.git cd UIED-tools -
创建功能分支
# 以功能命名分支 git checkout -b feature/新功能名称 # 或以修复命名分支 git checkout -b fix/问题名称 -
开发与测试
- 进行代码修改和开发
- 运行测试确保功能正常
- 遵循代码规范和样式指南
-
提交更改
git add . git commit -m "feat: 添加了xxx功能" -
推送到GitHub
git push origin feature/新功能名称 -
创建 Pull Request
- 访问你Fork的仓库
- 点击"New Pull Request"按钮
- 选择你的功能分支和原仓库的主分支
- 填写PR描述,说明更改内容和目的
相关文章:
我开源了一个免费在线工具!UIED Tools
UIED Tools - 免费在线工具集合 最近更新:修改了文档说明,优化了项目结构介绍 这是设计师转开发的第一个开源项目,bug和代码规范可能有些欠缺。 这是一个功能丰富的免费在线工具集合网站,集成了多种实用工具,包括 AI …...
什么时候可以开始学习深度学习?
咱们先来聊聊机器学习和深度学习的关系~ 这个问题其实挺常见的,之前我也跟不少同事、同学聊过。最近有好几个同学也聊过。 简单说,深度学习是机器学习的一个子集,两者不是并列关系,而是“包含”关系。 你可以这么理解ÿ…...
初学python的我开始Leetcode题8-5
提示:100道LeetCode热题-8-5主要是二叉树相关,包括三题:路径总和 III、二叉树的最近公共祖先、二叉树中的最大路径和。由于初学,所以我的代码部分仅供参考。 前言 二叉树完结撒花~ 下一次的图论会是一些有趣的应用案例~ 提示&am…...
构建RAG混合开发---PythonAI+JavaEE+Vue.js前端的实践
写在前文:之所以设计这一套流程,是因为 Python在前沿的科技前沿的生态要比Java好,而Java在企业级应用层开发比较活跃; 毕竟许多企业的后端服务、应用程序均采用Java开发,涵盖权限管理、后台应用、缓存机制、中间件集成…...
08.webgl_buffergeometry_attributes_none ,three官方示例+编辑器+AI快速学习
本实例主要讲解内容 这个Three.js示例展示了无属性几何体渲染技术,通过WebGL 2的gl_VertexID特性和伪随机数生成算法,在着色器中动态计算顶点位置和颜色,而不需要在CPU端预先定义几何体数据。 核心技术包括: WebGL 2的顶点ID特…...
26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述
26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述 文章目录 26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述1.1 计算机的发展1.2 计算机硬件和软件1.2.1 计算机硬件的基本组成1.2.2 各个硬件的工作原理1.2.3 计算机软件1.2.4 计算机系统的层次结构1.2.5 计算机系统…...
转换算子介绍
### 转换算子的定义与用法 #### 定义 转换算子(Transformation Operators)是指用于处理分布式数据集的操作符,在大数据框架中广泛使用,例如Apache Flink和Apache Spark。这些操作符允许开发者对数据集执行各种变换操作࿰…...
Android学习总结之Glide自定义三级缓存(实战篇)
一、为什么需要三级缓存 内存缓存(Memory Cache) 内存缓存旨在快速显示刚浏览过的图片,例如在滑动列表时来回切换的图片。在 Glide 中,内存缓存使用 LruCache 算法(最近最少使用),能自动清理长…...
单片机开发软件
目录 纯编码 vscode Ardunio Keil 1. 集成化开发环境(IDE) 2. 多架构芯片支持 3. 高效的代码生成与优化 4. 强大的调试与仿真功能 5. 丰富的库函数与生态系统 6. 教育与企业级适用性 典型应用场景 半编码半图形化 STM32CUBEIED 1. 图形化配置…...
LeetCode100.2 字母异位词分组
观察题目,需要把strs中的元素按照字母进行归类,一个朴素的思路是:遍历strs,对每个元素排序后插入哈希表中,随后再遍历一遍表将其转化为vector<vector<string>>。 class Solution { public:vector<vect…...
深入了解 Stable Diffusion:AI 图像生成的奥秘
一、引言 AI 艺术与图像生成技术的兴起改变了我们创造和体验视觉内容的方式。在过去几年里,深度学习模型已经能够创造出令人惊叹的艺术作品,这些作品不仅模仿了人类艺术家的风格,甚至还能创造出前所未有的新风格。在这个领域,Sta…...
Python爬虫实战:研究ajax异步渲染加密
一、引言 在当今数字化时代,数据已成为推动各行业发展的核心驱动力。网络爬虫作为一种高效的数据采集工具,能够从互联网上自动获取大量有价值的信息。然而,随着 Web 技术的不断发展,越来越多的网站采用了 AJAX(Asynchronous JavaScript and XML)异步渲染技术来提升用户体…...
大语言模型训练的两个阶段
先说结论:第一阶段在云平台训练至收敛 第二阶段本地GPU微调 一、阶段划分的核心逻辑 阶段目标资源特点典型耗时占比成本敏感度预训练获取通用表征能力需要大规模分布式计算70-90%高(追求每美元算力)微调适配特定任务需要领域数据安全/低延迟…...
显示的图标跟UI界面对应不上。
图片跟UI界面不符合。 要找到对应dp的值。UI的dp要跟代码里的xml文件里的dp要对应起来。 蓝湖里设置一个宽度给对应上。然后把对应的值填入xml. 一个屏幕上的图片到底是用topmarin来设置,还是用bottommarin来设置。 因为第一节,5,7 车厢的…...
OJ判题系统第6期之判题逻辑开发——设计思路、实现步骤、代码实现(策略模式)
在看这期之前,建议先看前五期: Java 原生实现代码沙箱(OJ判题系统第1期)——设计思路、实现步骤、代码实现-CSDN博客 Java 原生实现代码沙箱之Java 程序安全控制(OJ判题系统第2期)——设计思路、实现步骤…...
css中的 vertical-align与line-height作用详解
一、vertical-align 详解 作用对象:行内元素(inline/inline-block)或表格单元格内容核心功能:控制元素在行框内的垂直对齐方式常用取值: baseline(默认):基线与父元素基线对齐top&a…...
vue数据可视化开发echarts等组件、插件的使用及建议-浅看一下就行
在 Vue 项目中使用 ECharts 进行数据可视化开发时,可以结合 Vue 的响应式特性和 ECharts 的强大功能,实现动态、交互式的图表展示。 一、ECharts 基础使用 1. 安装 ECharts npm install echarts2. 在 Vue 组件中使用 ECharts <template><div…...
高并发内存池(三):TLS无锁访问以及Central Cache结构设计
目录 前言: 一,thread cache线程局部存储的实现 问题引入 概念说明 基本使用 thread cache TLS的实现 二,Central Cache整体的结构框架 大致结构 span结构 span结构的实现 三,Central Cache大致结构的实现 单例模式 thr…...
在Taro中开发一个跨端Svg组件,同时支持小程序、H5、React Native
Taro系列中一直没有跨端的绘图工具,小程序端支持canvas但是不支持svg,RN端有 react-native-svg 支持svg,但是没有很好原生的canvas插件,社区的canvas都是基于WebView实现的,或者skia,这个插件的书写方式和c…...
【办公类-100-01】20250515手机导出教学照片,自动上传csdn+最大化、最小化Vs界面
背景说明: 每次把教学照片上传csdn,都需要打开相册,一张张截图,然后ctrlV黏贴到CSDN内,我觉得太烦了。 改进思路: 是否可以先把所有照片都上传到csdn,然后再一张张的截图(去掉幼儿…...
SIP协议栈--osip源码梳理
文章目录 osiposip主体结构体code main函数 状态机转化结构体code状态转换 sip事务结构体code osip_dialog结构体code 创建并发送200 OK响应 osip_message结构体code osip_eventcode 打印接收到的SIP消息 osip OSIP(Open Source Implementation of SIP)…...
Python零基础入门到高手8.4节: 元组与列表的区别
目录 8.4.1 不可变数据类型 8.4.2 可变数据类型 8.4.3 元组与列表的区别 8.4.4 今天彩票没中奖 8.4.1 不可变数据类型 不可变数据类型是指不可以对该数据类型进行原地修改,即只读的数据类型。迄今为止学过的不可变数据类型有字符串,元组。 在使用[]…...
深度学习入门:深度学习(完结)
目录 1、加深网络1.1 向更深的网络出发1.2 进一步提高识别精度1.3 加深层的动机 2、深度学习的小历史2.1 ImageNet2.2 VGG2.3 GoogleNet2.4 ResNet 3、深度学习的高速化3.1 需要努力解决的问题3.2 基于GPU的高速化3.3 分布式学习3.4 运算精度的位数缩减 4、深度学习的应用案例4…...
OpenCV CUDA模块中矩阵操作------矩阵元素求和
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在OpenCV的CUDA模块中,矩阵元素求和类函数主要用于计算矩阵元素的总和、绝对值之和以及平方和。这些操作对于图像处理中的特征提取、…...
使用Scrapeless Scraping Browser的自动化和网页抓取最佳实践
引言:人工智能时代浏览器自动化和数据收集的新范式 随着生成性人工智能、人工智能代理和数据密集型应用程序的快速崛起,浏览器正在从传统的“用户互动工具”演变为智能系统的“数据执行引擎”。在这一新范式中,许多任务不再依赖单一的API端点…...
java数组题(5)
(1): 思路: 1.首先要对数组nums排序,这样两数之间的差距最小。 2.题目要求我们通过最多 k 次递增操作,使数组中某个元素的频数(出现次数)最大化。经过上面的排序,最大数…...
使用Thrust库实现异步操作与回调函数
文章目录 使用Thrust库实现异步操作与回调函数基本异步操作插入回调函数更复杂的回调示例注意事项 使用Thrust库实现异步操作与回调函数 在Thrust库中,你可以通过CUDA流(stream)来实现异步操作,并在适当的位置插入回调函数。以下是如何实现的详细说明&a…...
物联网无线传感方向专业词汇解释
涡旋电磁波(VEMW):一种具有轨道角动量的电磁波,其特性在于能够在传播过程中携带额外的相位信息,从而增加通信系统的容量和灵活性。波前:波动传播过程中,同一时刻振动相位相同的所有点构成的几何曲面,代表波…...
Maven 插件参数注入与Mojo开发详解
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
C++中void*知识详解和注意事项
一、void* 是什么? 在 C/C 中,void* 表示一个通用指针类型(generic pointer),可以指向任意类型的对象,但 不能直接解引用或进行算术运算,必须先进行类型转换。 void* ptr; // 可以指向任意类型…...
