从零上手:用 CodeBuddy Code CLI 搭建 Vue 待办事项应用完整流程
从零上手:用 CodeBuddy Code CLI 搭建 Vue 待办事项应用完整流程
对于刚接触 Vue 开发的新手来说,“从 0 到 1 搭建项目” 往往是第一个难点 —— 环境配置、依赖安装、项目结构梳理,每一步都可能卡壳。而 CodeBuddy Code CLI(以下简称 Code CLI)恰好能解决这个痛点,它能自动帮我们完成项目初始化、配置优化等基础工作,让精力聚焦在核心功能开发上。今天就以 “Vue 待办事项应用” 为例,带大家走一遍完整开发流程,即使是零基础也能跟着做。
第一步:环境准备 —— 安装必要工具
在开始开发前,我们需要先搭建基础环境,核心是安装 Node.js 和 Code CLI。这两步是后续所有操作的前提,务必确保安装成功。
-
安装 Node.jsVue 项目依赖 Node.js 的包管理工具(npm 或 yarn),建议安装 LTS 版本(长期支持版,稳定性更高)。
- 下载地址:Node.js 官网,根据系统选择 Windows/macOS 安装包。
- 验证安装:打开终端(Windows 用 cmd 或 PowerShell,macOS 用终端),输入
node -v和npm -v,若能显示版本号(如 v18.17.0、v9.6.7),说明安装成功。
-
全局安装 Code CLI打开终端,执行以下命令,将 Code CLI 安装到全局(方便后续随时调用):
bash
npm install -g @codebuddy/code-cli- 验证安装:输入
codebuddy -v,若显示版本号(如 v2.1.0),则表示 CLI 工具已就绪。
- 验证安装:输入
第二步:用 Code CLI 初始化 Vue 项目
环境搭好后,我们用 Code CLI 一键生成 Vue 项目框架,省去手动配置 webpack、babel 等复杂步骤。
-
创建项目目录先在电脑里建一个存放项目的文件夹(比如叫
vue-todo-app),然后在终端中进入这个目录:bash
# 假设文件夹在桌面(Windows 路径可能是 C:\Users\你的用户名\Desktop\vue-todo-app) cd ~/Desktop/vue-todo-app -
执行初始化命令在当前目录下,输入 Code CLI 的初始化命令,然后根据提示选择配置:
bash
codebuddy init vue此时终端会弹出选项,新手建议按以下配置选择(直接回车确认默认值即可):
- 项目名称:默认
vue-project(可自定义,比如todo-app) - Vue 版本:选择
Vue 3(目前主流版本,生态更完善) - 是否使用 TypeScript:选择
No(先从 JavaScript 入手,降低难度) - 包管理器:选择
npm(与 Node.js 自带工具一致,无需额外安装) - 是否添加 ESLint:选择
Yes(自动检查代码规范,避免低级错误)
- 项目名称:默认
-
启动开发服务器初始化完成后,终端会提示进入项目目录并启动服务。按以下命令执行:
bash
# 进入项目文件夹(比如刚才命名的 todo-app) cd todo-app # 启动开发服务器 npm run dev启动成功后,终端会显示一个本地地址(通常是
http://localhost:5173/),打开浏览器访问这个地址,能看到 Vue 的默认欢迎页面,说明项目初始化成功!
第三步:梳理项目结构 —— 知道文件该写在哪
第一次打开 Vue 项目,可能会被多个文件夹和文件绕晕。其实我们只需关注 src 目录(核心代码都在这里),其他目录(如 node_modules、public)暂时不用管。简单梳理 src 下的关键文件:
| 文件 / 文件夹 | 作用 |
|---|---|
| src/main.js | 项目入口文件,负责挂载 Vue 实例到页面上 |
| src/App.vue | 根组件,所有页面的 “容器”,后续会在这里写待办应用的核心逻辑 |
| src/components | 存放自定义组件(比如后续可拆出 “任务输入框”“任务列表项” 组件) |
| src/assets | 存放静态资源(如图片、CSS 文件,后续可在这里写样式) |
新手阶段,我们先把核心逻辑写在 App.vue 里,不用急于拆分组件,先实现功能再优化结构。
第四步:核心功能开发 —— 实现待办事项的 “增删改查”
待办应用的核心需求很明确:能输入任务、展示任务列表、标记任务完成 / 未完成、删除任务。我们基于 App.vue 逐步实现这些功能。
1. 编写模板结构(Template 部分)
打开 src/App.vue,先替换 <template> 标签里的内容 —— 这里负责页面的 “骨架”,包括输入框、添加按钮、任务列表:
vue
<template>
<div class="todo-container">
<!-- 标题 -->
<h1>我的待办事项</h1>
<!-- 任务输入区域 -->
<div class="todo-input">
<input
type="text"
v-model="newTodo"
placeholder="请输入新任务..."
@keyup.enter="addTodo" <!-- 按回车也能添加任务 -->
>
<button @click="addTodo">添加任务</button>
</div>
<!-- 任务列表区域 -->
<ul class="todo-list">
<li v-for="(todo, index) in todoList" :key="index" class="todo-item">
<!-- 复选框:标记完成状态 -->
<input
type="checkbox"
v-model="todo.done"
@change="saveTodo" <!-- 状态变化时保存 -->
>
<!-- 任务文本:完成的任务加删除线 -->
<span :class="{ 'todo-done': todo.done }">{{ todo.text }}</span>
<!-- 删除按钮 -->
<button @click="deleteTodo(index)">删除</button>
</li>
</ul>
</div>
</template>
- 关键点:用
v-model绑定输入框内容和任务完成状态;用v-for循环渲染任务列表;用@click@keyup.enter绑定点击、回车事件。
2. 编写逻辑代码(Script 部分)
接着替换 <script> 标签里的内容 —— 这里负责 “交互逻辑”,比如添加任务、删除任务、保存任务到本地:
vue
<script setup>
// 引入 Vue 的 ref 函数(用于定义响应式变量)
import { ref, onMounted } from 'vue';
// 1. 定义响应式变量
const newTodo = ref(''); // 绑定输入框的新任务内容
const todoList = ref([]); // 存储所有待办任务的数组
// 2. 页面加载时,从本地存储读取任务(避免刷新后任务消失)
onMounted(() => {
const savedTodos = localStorage.getItem('todoList');
if (savedTodos) {
todoList.value = JSON.parse(savedTodos); // 把字符串转成数组
}
});
// 3. 添加任务函数
const addTodo = () => {
// 先判断输入框是否为空(避免添加空任务)
if (newTodo.value.trim() === '') return;
// 往任务列表里加新任务(包含文本和完成状态)
todoList.value.push({
text: newTodo.value.trim(),
done: false // 默认未完成
});
// 保存到本地存储
saveTodo();
// 清空输入框
newTodo.value = '';
};
// 4. 删除任务函数
const deleteTodo = (index) => {
// 从数组中删除对应索引的任务
todoList.value.splice(index, 1);
// 保存到本地存储
saveTodo();
};
// 5. 保存任务到本地存储函数(复用逻辑)
const saveTodo = () => {
// 把数组转成字符串,存入 localStorage
localStorage.setItem('todoList', JSON.stringify(todoList.value));
};
</script>
- 关键点:用
ref定义响应式变量(值变化时页面自动更新);用onMounted钩子在页面加载时读取本地存储;用localStorage实现任务持久化(刷新页面不丢失)。
3. 编写样式(Style 部分)
最后添加 <style> 标签,美化页面(不用太复杂,清晰即可):
vue
<style scoped>
/* 容器样式:居中显示 */
.todo-container {
max-width: 600px;
margin: 50px auto;
padding: 0 20px;
font-family: Arial, sans-serif;
}
/* 输入区域样式 */
.todo-input {
display: flex;
gap: 10px;
margin-bottom: 20px;
}
.todo-input input {
flex: 1;
padding: 10px;
font-size: 16px;
border: 1px solid #ddd;
border-radius: 4px;
}
.todo-input button {
padding: 10px 20px;
background: #42b983;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
.todo-input button:hover {
background: #359469;
}
/* 列表样式 */
.todo-list {
list-style: none;
padding: 0;
}
.todo-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px;
margin-bottom: 10px;
background: #f9f9f9;
border-radius: 4px;
}
/* 完成任务的文本样式:加删除线、变灰色 */
.todo-done {
text-decoration: line-through;
color: #999;
}
.todo-item button {
padding: 5px 10px;
background: #ff4444;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
.todo-item button:hover {
background: #cc0000;
}
</style>
- 关键点:用
scoped确保样式只作用于当前组件;用 Flex 布局让元素对齐更灵活;hover 效果提升交互体验。
第五步:测试与优化 —— 确保功能正常运行
功能写好后,回到浏览器查看效果,测试以下场景:
- 在输入框输入 “买牛奶”,点击 “添加任务”,列表是否显示该任务?
- 勾选任务前的复选框,文本是否出现删除线?刷新页面后,状态是否保留?
- 点击 “删除” 按钮,任务是否从列表中消失?
- 按回车键添加任务,是否能正常触发?
如果遇到问题,可按以下思路排查:
- 控制台报错:按 F12 打开浏览器控制台,查看 “Console” 标签的错误信息(比如变量名写错、函数未定义)。
- 任务不持久化:检查
saveTodo函数是否调用,localStorage里是否有todoList数据(控制台 “Application” 标签 → “Local Storage”)。
第六步:项目打包与部署 —— 让别人也能访问你的应用
开发完成后,我们需要把项目 “打包” 成静态文件,再部署到线上,这样其他人通过链接就能访问你的待办应用。
-
执行打包命令在终端中(确保处于项目目录下),输入以下命令:
bash
npm run build打包完成后,项目根目录会生成一个
dist文件夹 —— 这就是最终的静态文件(包含 HTML、CSS、JS)。 -
简单部署:用 Netlify 拖放部署新手推荐用 Netlify(免费、操作简单),步骤如下:
- 打开 Netlify 官网,用邮箱注册账号。
- 登录后,点击右上角 “Add new site” → “Deploy manually”。
- 把
dist文件夹直接拖到页面的上传区域,等待部署完成。 - 部署成功后,Netlify 会生成一个随机链接(如
https://xxx.netlify.app/),复制这个链接,就能在任何设备上访问你的待办应用了!
总结:从 “0” 到 “1” 的收获与扩展
通过这次实战,你不仅用 Code CLI 快速搭建了 Vue 项目,还实现了待办应用的核心功能,同时掌握了 “响应式变量”“生命周期钩子”“本地存储” 等 Vue 基础知识点。
更多推荐



所有评论(0)