返回
从零开始,无需脚手架构建 TodoMVC
前端
2023-12-31 12:11:15
SEO
SEO 关键词:
文章
不依赖脚手架完成 TodoMVC
在 GitHub 上偶然发现了 TodoMVC 项目,这引起了我的兴趣。作为一名开发人员,我意识到通过一个较小的项目深入了解框架或技术的优点。
创建项目
为了开始,我创建了一个新的项目目录:
mkdir todomvc && cd todomvc
接下来,我使用 npm 初始化了一个新的 Vue.js 项目:
npm init vue@3
这将创建一个 package.json
文件并安装必要的依赖项。
构建 Vue.js 组件
首先,让我们创建 App.vue
组件,这是我们应用程序的根组件:
<template>
<div id="app">
<h1>TodoMVC</h1>
<input v-model="newTodo" @keyup.enter="addTodo" placeholder="What needs to be done?">
<ul>
<li v-for="todo in todos" :key="todo.id">
<input type="checkbox" v-model="todo.completed">
<label>{{ todo.text }}</label>
<button @click="removeTodo(todo)">X</button>
</li>
</ul>
<p>
{{ remaining }} items left
</p>
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const todos = ref([
{ text: 'Learn Vue.js', completed: false, id: 1 },
{ text: 'Build a TodoMVC app', completed: false, id: 2 }
])
const newTodo = ref('')
const remaining = computed(() => {
return todos.value.filter(todo => !todo.completed).length
})
const addTodo = () => {
if (newTodo.value.trim()) {
todos.value.push({ text: newTodo.value, completed: false, id: Date.now() })
newTodo.value = ''
}
}
const removeTodo = todo => {
todos.value = todos.value.filter(t => t !== todo)
}
return { todos, newTodo, remaining, addTodo, removeTodo }
}
}
</script>
样式和打包
现在,让我们为我们的应用程序添加一些样式:
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
}
h1 {
margin-top: 0;
}
input[type=text] {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
box-sizing: border-box;
}
ul {
list-style-type: none;
padding: 0;
display: flex;
flex-direction: column;
gap: 12px;
}
li {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 20px;
background-color: #efefef;
}
input[type=checkbox] {
margin-right: 12px;
}
label {
flex-grow: 1;
text-decoration: line-through;
}
label[style*="text-decoration: line-through;"] {
color: #808080;
}
button {
border: none;
background-color: transparent;
cursor: pointer;
}
最后,让我们打包我们的应用程序:
npm run build
结论
通过遵循本文中的步骤,您已经从零开始构建了一个 TodoMVC 应用程序,无需使用脚手架。我们探讨了 Vue.js 的核心概念,例如响应式数据和组件化,以及如何使用它们来构建交互式和高效的前端应用程序。通过实践这些技术,您将获得宝贵的经验,并增强您在 Vue.js 开发方面的能力。