和我一起入坑-Vue入门-ToDoList
本项目是仿照这个做滴 ToDoList 。使用Vue实现这个代办事项功能。完整的项目在这里GitHub vue-todolist。
(一)基本功
Vue官方文档 了解一下
- 前置项
安装Node,建议使用nvm安装,逼格比较高(手动滑稽) - 然后全局安装 Vue CLI
 
 居然还改名了
 
1  | npm install -g @vue/cli  | 
3. 创建项目
1  | vue create vue-todolist  | 
4. 启动CLI服务
1  | cd vue-todolist  | 
5. 目录结构
根据自己的习惯创建文件,并删除多余的代码。我是如下创建的:
1  | ├── public  | 
(二) Html和CSS部分
打开控制台将样式文件复制粘贴到styles.css文件中。在main.js中导入样式
1  | // main.js  | 
将html复制粘贴到Home.vue中的template中
1  | <!-- Home.vue -->  | 
  复制完成后,页面长这样
  
 
(三)实现ToDoList的功能
添加代办事项
使用v-model 指令在input框上创建双向数据绑定。并为按键添加修饰符,监听键盘enter键。
1  | <input type="text" v-model="todo" @keyup.enter="addTodo" placeholder="添加ToDo" />  | 
1  | data () {  | 
循环添加的事项
使用v-for将所添加的事项循环显示,并使用v-if条件渲染只显示的内容。
1  | <li v-for="(item, index) in todoList" :key="index" v-if="item.done === false">  | 
这个时候就可以看到添加的内容了
 
切换完成状态以及删除功能
绑定切换状态、删除的事件
1  | <h2>正在进行  | 
根据done的值来控制是否显示,在点击事件中对done取反。对未完成的事项长度进行加减。
1  | changeTodo (index, done) {  | 
到此为止,这个功能就算完成了,但是当我们刷新页面后数据就不见了,这里我们需要用到localStorage。
localStorage的使用
todoList数组的每一次增加和删减都会用到localStorage,将localStorage封装起来方便使用。
1  | // utils.js  | 
导入utils
1  | import * as Utils from '@/utils/utils'  | 
在数组的每一次改变都需要使用Utils.setItem进行数据的存储。在addTodo方法中,一定要对Utils.getItem返回的数据进行判断,否则会报“Cannot read property ‘push’ of null”
1  | addTodo () {  | 
初始事件
在初始的时候对未完成事项进行自加运输,以得到初始的长度。
1  | methods: {  | 
还有页脚的clear按钮
1  | <footer>Copyright © 2014 todolist.cn<a @click="clearData()">clear</a></footer>  | 
1  | clearData () {  | 
说在后面的话
完整的项目在这里GitHub vue-todolist。
实际上,关于这个ToDoList我写了三个小demo,分别是
Angular ToDoList的小博文,完整的项目在这里GitHub ng-first。
React Native ToDoList的小博文,完整的项目在这里GitHub AwesomeProject。
Vue ToDoList的小博文,完整的项目在这里GitHub vue-todolist。
为什么写了三个呢?
因为我闲啊!! 
为什么都是写这种超级简单的小demo?
因为复杂的我不会!
说实话,你到底想干嘛?
本来我是想对三个框架进行对比,结果发现技术不佳,学艺不深,无法对其进行比对。所以结论是喜欢哪个就用哪个好了 (这样不好,不要学我) 。
自问自答是不是很尴尬?
是的。