vue、react前端框架实现TodoList页面案例
创始人
2024-12-05 01:03:36

原始TodoList网页(主要就是链接里网页应用ndex.html、styles.css、script.js ):
https://blog.csdn.net/weixin_42357472/article/details/140657576
node、npn安装参考:
https://blog.csdn.net/weixin_42357472/article/details/140643624

vue、react区别
Vue:Vue 有自己的脚手架工具 Vue CLI,可以快速创建项目。Vue 还有自己的服务器渲染框架 Nuxt.js。
React:React 有自己的脚手架工具 Create React App,可以快速创建项目。React 还有自己的服务器渲染框架 Next.js。
在这里插入图片描述

1、vue框架实现TodoList页面案例

安装vue:

npm install -g @vue/cli 或 npm install -g cnpm --registry=https://registry.npm.taobao.org 

在这里插入图片描述
创建应用:

vue create my-vue-project 

在这里插入图片描述
在这里插入图片描述

进入项目写应用:

cd my-vue-project  #修改以下文件: src/App.vue 

src/App.vue代码

     

在这里插入图片描述

运行项目:

npm run serve 

在这里插入图片描述
打开网页
在这里插入图片描述

1、react框架实现TodoList页面案例

安装好node自带了npx

创建应用:

npx create-react-app react-todolist 或 ##安装create-react-app cnpm install -g create-react-app ##创建应用 create-react-app react-todolist 

在这里插入图片描述
在这里插入图片描述

进入项目写应用:

cd react-todolist  #修改以下文件: src/App.js src/App.css 

src/App.js 代码

import React, { useState, useEffect } from 'react'; import './App.css';  function App() {   const [todos, setTodos] = useState([]);   const [newTodo, setNewTodo] = useState('');    useEffect(() => {     loadTodos();   }, []);    const loadTodos = () => {     const savedTodos = localStorage.getItem('todos');     if (savedTodos) {       setTodos(JSON.parse(savedTodos));     }   };    const saveTodos = (updatedTodos) => {     localStorage.setItem('todos', JSON.stringify(updatedTodos));   };    const addTodo = (e) => {     e.preventDefault();     if (newTodo.trim() === '') return;     const updatedTodos = [{ text: newTodo, completed: false }, ...todos];     setTodos(updatedTodos);     setNewTodo('');     saveTodos(updatedTodos);   };    const toggleTodo = (index) => {     const updatedTodos = todos.map((todo, i) =>        i === index ? { ...todo, completed: !todo.completed } : todo     );     setTodos(updatedTodos);     saveTodos(updatedTodos);   };    const deleteTodo = (index) => {     const updatedTodos = todos.filter((_, i) => i !== index);     setTodos(updatedTodos);     saveTodos(updatedTodos);   };    return (     

TodoList

(e) => setNewTodo(e.target.value)} placeholder="Add a new todo" />
    {todos.map((todo, index) => (
  • () => toggleTodo(index)} /> {todo.text}
  • ))}
); } export default App;

src/App.css代码

.App {   font-family: Arial, sans-serif;   max-width: 500px;   margin: 0 auto;   padding: 20px; }  h1 {   text-align: center; }  form {   display: flex;   margin-bottom: 20px; }  input[type="text"] {   flex-grow: 1;   padding: 10px;   font-size: 16px;   border: 1px solid #ddd;   border-radius: 4px 0 0 4px; }  button {   padding: 10px 20px;   font-size: 16px;   background-color: #4CAF50;   color: white;   border: none;   border-radius: 0 4px 4px 0;   cursor: pointer; }  ul {   list-style-type: none;   padding: 0; }  li {   display: flex;   align-items: center;   padding: 10px;   background-color: #f9f9f9;   border: 1px solid #ddd;   margin-bottom: 10px;   border-radius: 4px; }  li.completed {   text-decoration: line-through;   opacity: 0.6; }  li input[type="checkbox"] {   margin-right: 10px; }  li button {   margin-left: auto;   background-color: #f44336; } 

在这里插入图片描述
运行项目:

npm start 

在这里插入图片描述
网页查看:
在这里插入图片描述

相关内容

热门资讯

无源物联网深度解析:无电池联网... 你是否想过,有一天我们身边的智能设备再也不需要换电池、再也不怕没电? 从智能门锁到可穿戴设备,从环...
2026年惠州“发改讲堂”第4... 为抢抓人工智能发展战略机遇,提升干部队伍专业素养,助力我市人工智能与机器人产业创新发展,5月9日,惠...
华为申请信息传输方法专利,能够... 国家知识产权局信息显示,华为技术有限公司申请一项名为“信息传输方法、通信装置及存储介质”的专利,公开...
2026沪港创新项目评选启动仪... 来源:滚动播报 (来源:上观新闻) 5月12日,2026沪港创新项目评选启动仪式在大零号湾海创城举...