# 开始

又到了实训周,之前实训周做了啥都忘记了…… 于是记录一下,表示我真的做了(

老师的要求是,先用 Vue.js 做一个简单的 Todo List,有点基础后,再做一个微信小程序。

# 看法

我觉得前端界面,简单一点的话,就是组件的拼装,组件自身的样式,组件和同级组件的关系,组件和父级组件的关系。

# 做 Todo List

# npm

,用 npm 创建了项目框架。而 bootstrap 组件库也不错,有好多好看的组件供使用

npm run dev

# 数据绑定传输等

@ (v-on)和 (v-vbind),

@ 用于处理事件,而 : 用于处理属性绑定。这两个符号都是Vue.js中的常见语法糖,使代码更简洁易读 
@ 符号是 v-on 指令的缩写。它用于监听DOM事件并触发相应的Vue实例中的方法。
: 符号是 v-bind 指令的缩写。它用于动态绑定属性或表达式
查自chatgpt 2023/12/11

我大致理解成,@是绑定事件(函数),:是跟参数之类的有关,也就是属性

v-model 可以在组件上使用以实现双向绑定

{{ item.task }} ,可以动态获取属性的值

@click="changeCompleted(item.id)" ,()里的,可以传参,而在微信小程序里,可以用 data-xxx=“” 传递参数

# $emit 的使用

起初是想在 todoList.vue 调用 App.vue 里的函数,我用的是方法是,在 todoList.vue 里导入 App.vue,然后用 App.method.XXX() ,结果不行,后来老师说使用 emit 什么的,并帮我找到在官方文档哪,让我自己学一下。

以下摘自 Vue.js - 事件 - 事件参数

有时候我们会需要在触发事件时附带一个特定的值。举例来说,我们想要 <BlogPost> 组件来管理文本会缩放得多大。在这个场景下,我们可以给 $emit 提供一个额外的参数:

template

<button @click="$emit('increaseBy', 1)">
  Increase by 1
</button>

然后我们在父组件中监听事件,我们可以先简单写一个内联的箭头函数作为监听器,此函数会接收到事件附带的参数:

template

<MyButton @increase-by="(n) => count += n" />

或者,也可以用一个组件方法来作为事件处理函数:

template

<MyButton @increase-by="increaseCount" />

该方法也会接收到事件所传递的参数:

js

function increaseCount(n) {
  count.value += n
}

# axios 的使用

npm install axios

remove(itemid) {
				// 发送 POST 请求给后端添加新任务
				axios.post('http://localhost:8080/todolist/removeTodolist', {
						// 参数传递
                    	id: itemid,
					}).then(response => {
						// 添加成功后,重新获取待办事项列表
						this.$emit("fetchTodoList");
					})
					.catch(error => {
						// 处理错误
						console.error('Error adding task:', error);
					});
			}

# 后端的搭建

老师说如果有后端能加分,我想着这不能错过啊,于是几个月前学的 java 的 Spring Boot + Mybatis plus + mysql 就派上用场了

根据之前跟着做的一个项目配置好 Todo List 后端后,写了点简单的增删查改,好些用法都忘记了,悲。

# 做微信小程序

想着我自己也有个公众号,做一个我也能用的上的小程序接上去。

挑来挑去,做了番茄时钟和一个简单的待办。

也用了 van weapp 组件库,不过用不太来。

# 界面样式

<img src="../../public/images/2023/12 / 番茄时钟主界面.png" alt="番茄时钟主界面" style="zoom: 50%;" />

<img src="../../public/images/2023/12 / 番茄时钟 active.png" alt="番茄时钟 active" style="zoom: 50%;" />

<img src="../../public/images/2023/12/todolist.png" alt="todolist" style="zoom: 50%;" />

<img src="../../public/images/2023/12 / 番茄时钟 - 今日记录界面.png" alt="番茄时钟 - 今日记录界面" style="zoom: 50%;" />

# 今日诗词的 API

搭在 github 上的 hexo 博客也接入了这个免费的 API,需要在小程序后台添加该 API 的地址到可访问名单

# 界面的搭建

直到做的差不多了,我才把大一时的前端课、近期学习的,在脑内乱成一锅粥的知识整理的差不多,也就是前端界面,简单一点的话,就是组件的拼装,组件自身的样式,组件和同级组件的关系,组件和父级组件的关系。

# 数据

数据则有的放 page 的 data 里,有的放缓存里,通过 wx.setStorageSync('logs', logs);wx.getStorageSync('logs', logs);