前言
Vue.js 是一个渐进式 JavaScript 框架,旨在构建用户界面。它简洁易用,支持组件化开发,非常适合中小型项目和单页面应用。本文将通过构建一个待办事项应用,展示如何使用 Vue.js 开发前端项目。我们会一步步讲解项目标核心功能,并最终将项目摆设上线。
项目背景
待办事项应用是前端开发中常见的练习项目,旨在资助用户记录和管理一样平常任务。本项目将实现如下功能:
- 添加待办事项
- 标记任务为完成
- 删除任务
- 基于当地存储生存任务状态
通过这些功能,初学者可以快速把握 Vue.js 的基本用法以及如何与欣赏器的当地存储交互。
技术选型
- Vue.js 3:用于构建用户界面,使用组合式 API(Composition API)举行组件开发。
- Vue CLI:用于快速创建 Vue 项目,并举行当地开发与调试。
- LocalStorage:用于持久化存储任务,避免页面革新后数据丢失。
项目结构
- vue-todo-app
- │
- ├── public/ # 公共静态资源
- ├── src/ # 源代码目录
- │ ├── components/ # Vue 组件
- │ ├── App.vue # 主应用组件
- │ ├── main.js # 入口文件
- │
- └── package.json # 项目信息
复制代码 搭建项目
起首,我们使用 Vue CLI 创建一个新的 Vue 项目:
选择默认的 Vue 3 模板,然后进入项目目录并启动开发服务器:
- cd vue-todo-app
- npm run serve
复制代码 这将启动当地开发服务器,并在欣赏器中打开 localhost:8080,你将看到一个基本的 Vue 项目框架。
核心代码
任务列表组件
我们起首创建一个 TodoList 组件,用于展示待办事项列表。该组件负责表现任务,并允许用户标记任务为完成或删除任务。
- <!-- src/components/TodoList.vue -->
- <template>
- <div class="todo-list">
- <h2>My To-Do List</h2>
- <ul>
- <li v-for="(todo, index) in todos" :key="index">
- <span :class="{ completed: todo.completed }">{{ todo.text }}</span>
- <button @click="toggleComplete(index)">✔</button>
- <button @click="removeTask(index)">✖</button>
- </li>
- </ul>
- </div>
- </template>
- <script>
- export default {
- props: {
- todos: Array
- },
- methods: {
- toggleComplete(index) {
- this.$emit('toggle-complete', index);
- },
- removeTask(index) {
- this.$emit('remove-task', index);
- }
- }
- };
- </script>
- <style scoped>
- .completed {
- text-decoration: line-through;
- }
- </style>
复制代码 添加任务组件
接下来,我们创建一个 AddTask 组件,用户可以通过该组件添加新的待办事项。
- <!-- src/components/AddTask.vue -->
- <template>
- <div class="add-task">
- <input v-model="newTask" @keyup.enter="addTask" placeholder="What do you need to do?" />
- <button @click="addTask">Add</button>
- </div>
- </template>
- <script>
- export default {
- data() {
- return {
- newTask: ''
- };
- },
- methods: {
- addTask() {
- if (this.newTask.trim()) {
- this.$emit('add-task', this.newTask);
- this.newTask = '';
- }
- }
- }
- };
- </script>
- <style scoped>
- .add-task {
- margin-bottom: 20px;
- }
- </style>
复制代码 组合组件与逻辑
在 App.vue 中,我们将 TodoList 和 AddTask 组件组合在一起,并实现添加任务、标记任务完成和删除任务的逻辑。同时,我们使用 LocalStorage 来存储任务列表。
- <!-- src/App.vue -->
- <template>
- <div id="app">
- <h1>Vue To-Do List</h1>
- <AddTask @add-task="addTask" />
- <TodoList :todos="todos" @toggle-complete="toggleComplete" @remove-task="removeTask" />
- </div>
- </template>
- <script>
- import AddTask from './components/AddTask.vue';
- import TodoList from './components/TodoList.vue';
- export default {
- components: {
- AddTask,
- TodoList
- },
- data() {
- return {
- todos: []
- };
- },
- methods: {
- addTask(task) {
- this.todos.push({ text: task, completed: false });
- this.saveTodos();
- },
- toggleComplete(index) {
- this.todos[index].completed = !this.todos[index].completed;
- this.saveTodos();
- },
- removeTask(index) {
- this.todos.splice(index, 1);
- this.saveTodos();
- },
- saveTodos() {
- localStorage.setItem('todos', JSON.stringify(this.todos));
- },
- loadTodos() {
- const savedTodos = localStorage.getItem('todos');
- if (savedTodos) {
- this.todos = JSON.parse(savedTodos);
- }
- }
- },
- mounted() {
- this.loadTodos();
- }
- };
- </script>
- <style>
- #app {
- font-family: Avenir, Helvetica, Arial, sans-serif;
- text-align: center;
- margin-top: 60px;
- }
- </style>
复制代码 说明
- App.vue 是主应用组件,负责将全部逻辑和组件联合在一起。
- AddTask 组件用于添加新任务,当用户点击按钮或按下回车时,新的任务将通过变乱传递给父组件 App.vue。
- TodoList 组件负责表现任务列表,而且可以通过变乱触发标记任务完成或删除任务。
当地存储功能
通过 LocalStorage 我们可以将任务持久化生存。当用户革新页面时,任务不会丢失。
- saveTodos() {
- localStorage.setItem('todos', JSON.stringify(this.todos));
- },
- loadTodos() {
- const savedTodos = localStorage.getItem('todos');
- if (savedTodos) {
- this.todos = JSON.parse(savedTodos);
- }
- }
复制代码 saveTodos 方法在任务列表发生变化时被调用,将当前任务列表生存到 LocalStorage 中。loadTodos 方法则在应用加载时读取并恢复任务列表。
摆设上线
开发完成后,我们可以通过 Vue CLI 将项目打包并摆设到静态服务器上。
起首,运行以下下令打包项目:
这将在 dist/ 目录中生成优化后的静态文件。接下来,可以将这些文件上传到 GitHub Pages、Netlify 或 Vercel 等平台举行托管。
项目总结
通过这个项目,我们实现了一个功能简单但实用的待办事项应用。项目中展示了 Vue.js 的核心概念,如组件化开发、数据绑定和变乱处理。同时,通过使用当地存储,我们实现了任务的持久化,增强了用户体验。这个项目可以进一步扩展,例如添加任务分类、设置优先级、任务搜索和筛选功能等。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |