基于TypeScript的全栈待办事项应用Demo

news2025/5/27 16:10:10

在这里插入图片描述

Demo地址:git clone https://gitcode.com/rmbnetlife/todo-app.git

Todo List 应用

这是一个基于TypeScript的全栈待办事项应用,前端使用React,后端使用Node.js和Express。

项目概述

这个Todo List应用允许用户:

  • 查看所有待办事项
  • 添加新的待办事项
  • 标记待办事项为已完成/未完成
  • 删除待办事项

技术栈

前端

  • React: 用于构建用户界面的JavaScript库
  • TypeScript: 为JavaScript添加静态类型定义
  • Axios: 用于进行HTTP请求的客户端库
  • CSS: 自定义样式,包括响应式设计

后端

  • Node.js: JavaScript运行时环境
  • Express: Web应用框架
  • TypeScript: 为JavaScript添加静态类型定义
  • UUID: 用于生成唯一标识符
  • CORS: 用于处理跨域资源共享

项目结构

todo-app/                # 项目根目录
├── backend/             # 后端代码
│   ├── src/             # TypeScript 源码目录
│   │   └── app.ts       # 后端入口文件(定义 API 和逻辑)
│   ├── dist/            # 编译后的 JavaScript 代码目录
│   ├── package.json     # 后端依赖和脚本配置
│   └── tsconfig.json    # TypeScript 编译配置
│
└── frontend/            # 前端代码
    ├── public/          # 静态资源
    │   └── index.html   # 前端入口 HTML
    ├── src/             # 前端源码目录
    │   ├── App.tsx      # 主组件(核心交互逻辑)
    │   ├── App.css      # 应用样式
    │   └── index.tsx    # React 应用入口文件
    ├── package.json     # 前端依赖和脚本配置
    └── tsconfig.json    # TypeScript 编译配置

功能详解

后端 API

后端提供以下RESTful API端点:

  • GET /api/todos: 获取所有待办事项
  • POST /api/todos: 创建新的待办事项
  • PUT /api/todos/:id: 更新待办事项状态
  • DELETE /api/todos/:id: 删除待办事项

数据暂时存储在内存中,实际生产环境应替换为数据库存储。

前端组件

前端主要由以下部分组成:

  • 待办事项输入表单
  • 待办事项列表显示
  • 待办事项状态切换(复选框)
  • 待办事项删除按钮
  • 加载状态和错误提示

安装与运行

前提条件

  • Node.js (推荐 v14 或更高版本)
  • npm (通常随Node.js一起安装)

安装步骤

  1. 克隆仓库
git clone https://gitcode.com/rmbnetlife/todo-app.git
cd todo-app
  1. 安装后端依赖
cd backend
npm install
  1. 安装前端依赖
cd ../frontend
npm install

运行应用

  1. 启动后端服务器
cd backend
# 编译TypeScript代码
npx tsc
# 运行编译后的代码
node dist/app.js

后端服务器将在 http://localhost:5000 上运行。

  1. 启动前端开发服务器

在新的终端窗口中:

cd frontend
npm start

前端开发服务器将在 http://localhost:3000 上运行。在浏览器中访问此地址即可使用应用。

可能遇到的问题及解决方案

  1. 子模块问题:如果frontend目录显示为空或被识别为子模块,请运行:
git submodule update --init --recursive
  1. 端口占用:如果端口5000或3000已被占用,您可能需要修改相应的配置:

    • 后端端口:在backend/src/app.ts中修改
    • 前端端口:可以通过环境变量设置,例如PORT=3001 npm start
  2. 跨域问题:如果遇到CORS错误,确保后端的CORS配置正确,允许前端域名访问。

未来改进

  • 添加用户认证功能
  • 使用数据库替代内存存储
  • 添加待办事项分类功能
  • 添加截止日期和提醒功能
  • 优化移动端体验
  • 添加单元测试和集成测试

代码修改与推送

如果您对代码进行了修改并希望推送到GitCode仓库,请按照以下步骤操作:

1. 确保您有推送权限

在推送代码前,确保您已经:

  • 被添加为项目协作者,或者
  • Fork了项目到自己的账户(如果您想提交Pull Request)

2. 配置个人访问令牌(PAT)

GitCode不支持密码认证,需要使用个人访问令牌:

  1. 登录GitCode账户
  2. 进入用户设置 -> 访问令牌
  3. 创建新的访问令牌,选择适当的权限范围
  4. 复制生成的令牌(只显示一次)

3. 提交并推送更改

# 添加修改的文件
git add .

# 提交更改
git commit -m "描述您所做的更改"

# 推送到远程仓库
git push origin main

当首次推送时,Git会要求您输入用户名和密码。此时应输入:

  • 用户名:您的GitCode用户名
  • 密码:之前生成的个人访问令牌(PAT)

4. 存储凭据(可选)

为避免每次都输入凭据,可以配置凭据存储:

# 配置凭据缓存
git config --global credential.helper store

注意:这会以明文形式存储您的凭据,请确保您的计算机安全。

贡献

欢迎提交问题和拉取请求。对于重大更改,请先开issue讨论您想要更改的内容。

许可证

MIT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2386076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国际荐酒师(香港)协会亮相新西兰葡萄酒巡展深度参与赵凤仪大师班

国际荐酒师(香港)协会率团亮相2025新西兰葡萄酒巡展 深度参与赵凤仪MW“百年百碧祺”大师班 广州/上海/青岛,2025年5月12-16日——国际荐酒师(香港)协会(IRWA)近日率专业代表团出席“纯净独特&…

【深度学习】2. 从梯度推导到优化策略:反向传播与 SGD, Mini SGD

反向传播算法详解 1. 前向传播与输出层误差定义 假设我们考虑一个典型的前馈神经网络,其最后一层为 softmax 分类器,损失函数为交叉熵。 前向传播过程 对于某一隐藏层神经元 j j j: 输入: x i x_i xi​ 权重: w j…

工业软件国产化:构建自主创新生态,赋能制造强国建设

随着全球产业环境的变化和技术的发展,建立自主可控的工业体系成为我国工业转型升级、走新型工业化道路、推动国家制造业竞争水平提升的重要抓手。 市场倒逼与政策护航,国产化进程双轮驱动 据中商产业研究院预测,2025年中国工业软件市场规模…

UART、RS232、RS485基础知识

一、UART串口通信介绍 UART是一种采用异步串行、全双工通信方式的通用异步收发传输器功能。 硬件电路: •简单双向串口通信有两根通信线(发送端TX和接收端RX) •TX与RX要交叉连接 •当只需单向的数据传输时,可以只接一根通信线…

AI重塑数据治理的底层逻辑

AI重塑数据治理的底层逻辑 人治模式:一个必然失败的商业逻辑智治模式:重新定义数据治理的商业模式结语 上个月,一位老友约我喝茶。他是某知名互联网公司的数据总监,聊天时满脸愁容。 “润总,我们公司数据治理团队有50多…

基于 AI 实现阿里云的智能财务管家

新钛云服已累计为您分享844篇技术干货 为了解决传统账单处理中人工查询效率低下、响应速度慢及易出错等问题,同时顺应AI技术发展趋势,提升服务智能化水平。随着业务规模扩大和账单数据复杂度增加,人工处理已难以满足高效管理需求。我们想到通…

【成品论文】2025年电工杯数学建模竞赛B题50页保奖成品论文+matlab/python代码+数据集等(后续会更新)

文末获取资料 多约束条件下城市垃圾分类运输调度问题 摘要 随着城市化进程加快,城市生活垃圾产量持续增长,垃圾分类运输已成为城市环境治理的关键环节。本文针对城市垃圾分类运输中的路径优化与调度问题,综合考虑不同垃圾类型、车辆载重约束…

【node.js】数据库与存储

个人主页:Guiat 归属专栏:node.js 文章目录 1. 数据库概述1.1 数据库在Node.js中的作用1.2 Node.js支持的数据库类型 2. 关系型数据库集成2.1 MySQL与Node.js2.1.1 安装MySQL驱动2.1.2 建立连接2.1.3 执行CRUD操作 2.2 PostgreSQL与Node.js2.2.1 安装pg驱…

leetcode2081. k 镜像数字的和-hard

1 题目:k 镜像数字的和 官方标定难度:难 一个 k 镜像数字 指的是一个在十进制和 k 进制下从前往后读和从后往前读都一样的 没有前导 0 的 正 整数。 比方说,9 是一个 2 镜像数字。9 在十进制下为 9 ,二进制下为 1001 &#xff…

Halcon 单目相机标定测量

文章目录 双面相机标定链接一维测量gen_cam_par_area_scan_division -为区域扫描相机生成一个相机参数元组,该相机的变形由分割模型建模。(相机自带参数)create_calib_data -创建Halcon 数据标定模型set_calib_data_cam_param -设置校准数据模型中摄像机的类型和初始…

数据被泄露了怎么办?

数据泄露是严重的网络安全事件,需立即采取行动以降低风险。以下是关键应对步骤: 1. 确认泄露范围 核实泄露内容:确定泄露的是密码、财务信息、身份证号还是其他敏感数据。 评估来源:检查是个人设备被入侵、某平台漏洞&#xff0c…

绩效管理缺乏数据支持,如何提高客观性?

要提高绩效管理的客观性,应从建立科学的指标体系、加强数据采集手段、引入自动化绩效工具、强化过程记录机制、定期评估与反馈优化五大方面着手。其中,建立科学的指标体系是关键基础。没有数据支撑的绩效体系,往往容易陷入主观打分、个人偏见…

unity控制相机围绕物体旋转移动

记录一下控制相机围绕物体旋转与移动的脚本,相机操作思路分为两块,一部分为旋转,一部分为移动,旋转是根据当前center中心点的坐标,根据距离设置与默认的旋转进行位置移动,移动是根据相机的左右和前后进行计…

线性代数:AI大模型的数学基石

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…

简单血条于小怪攻击模板

创建一个2d正方形(9-Sliced)命名为Player,在Player下面新建一个画布(Canvas)命名为PlayerHealthUI,在画布下面新建一个滑动条(Slider)命名为HealthBar 把PlayerHealthUI脚本挂载到Pl…

代码随想录算法训练营第四十六四十七天

卡码网题目: 110. 字符串接龙105. 有向图的完全联通106. 岛屿的周长107. 寻找存在的路径 其他: 今日总结 往期打卡 110. 字符串接龙 跳转: 110. 字符串接龙 学习: 代码随想录公开讲解 问题: 字典 strList 中从字符串 beginStr 和 endStr 的转换序列是一个按下述规格形成的序…

华硕FL8000U加装16G+32G=48G内存条

华硕FL8000U加装16G32G48G内存条 一、华硕FL8000U加装内存条endl 一、华硕FL8000U加装内存条 相关视频链接: https://www.bilibili.com/video/BV1gw4dePED8/ endl

勇闯Chromium—— Chromium的多进程架构

问题 构建一个永不崩溃或挂起的渲染引擎几乎是不可能的,构建一个绝对安全的渲染引擎也几乎是不可能的。 从某种程度上来说,2006 年左右的网络浏览器状态与过去单用户、协作式多任务操作系统的状况类似。正如在这样的操作系统中,一个行为不端的应用程序可能导致整个系统崩溃…

软件质量保证与测试实验

课程  软件质量保证与测试 目的&#xff1a;练习软件测试中白盒测试方法 内容&#xff1a; 测试如下程序段&#xff1a; #include <stdio.h>int main() {int i 1, n1 0, n2 0;float sum 0.0;float average;float score[100];printf("请输入分…

历年华东师范大学保研上机真题

2025华东师范大学保研上机真题 2024华东师范大学保研上机真题 2023华东师范大学保研上机真题 在线测评链接&#xff1a;https://pgcode.cn/school?classification1 简单一位数代数式计算 题目描述 给一个小学生都会算的1位数与1位数运算的代数式&#xff0c;请你求出这个表…