【Web开发手礼】探索Web开发的秘密(十三)-Vue(3)好友列表、登录


前言

主要介绍了好友列表、登录界面所涉及的vue知识点!!!


好友列表

从云端API读取数据信息

  • 地址 https://app165.acapp.acwing.com.cn/myspace/userlist/
  • 方法:GET
  • 是否验证jwt:否
  • 输入参数:无
  • 返回结果:返回10个用户的信息

首先,我们需要先下载jquery

npm install jquery

<script>
import ContentBase from '@/components/ContentBase.vue';
import $ from "jquery";
import { ref } from 'vue'; export default{name: "UserListView",components: {ContentBase},setup(){let users = ref([]);$.ajax({url: "https://app165.acapp.acwing.com.cn/myspace/userlist/",type: "get",success(resp){console.log(resp);}});return{users}}
}
</script>

使用jQuery的ajax方法发送一个GET请求到指定的URL(“https://app165.acapp.acwing.com.cn/myspace/userlist/”)。在请求成功时,会执行定义的success回调函数,将服务器返回的数据resp打印到控制台。
将users作为setup()函数的返回值,使其在组件中可以通过解构或者直接使用users变量来访问这个响应式数据。
Alt

<template><ContentBase><div class="card" v-for="user in users " :key="user.id"><div class="card-body"><div class="row"><div class="col-1"><img class="img-fluid" :src="user.photo" alt="头像"></div><div class="col-11"><div class="username">{{ user.username }}</div><div class="follow-count">{{ user.followerCount }}</div></div></div></div></div></ContentBase>
</template><script>
import ContentBase from '@/components/ContentBase.vue';
import $ from "jquery";
import { ref } from 'vue'; export default{name: "UserListView",components: {ContentBase},setup(){let users = ref([]);// 创建一个响应式数据users,初始为空数组$.ajax({url: "https://app165.acapp.acwing.com.cn/myspace/userlist/",type: "get",success(resp){users.value = resp;// 将从服务器获取的用户数据赋值给users}});return{users}}
}
</script><style scoped>
img{border-radius: 50%;/* 圆形头像效果 */
}
.username{font-weight: bold;/* 用户名加粗显示 */height: 50%; /* 用户名和粉丝数量各占一半高度 */
}
.follow-count{font-size: 12px;/* 粉丝数量的字体大小 */color: gray;/* 粉丝数量灰色显示 */height: 50%;/* 用户名和粉丝数量各占一半高度 */
}.card{margin-bottom: 20px;/* 卡片之间的间距 */cursor: pointer;/* 鼠标悬停时显示手型指示 */}
.card:hover{box-shadow: 2px 2px 10px lightgray;/* 鼠标悬停时的阴影效果 */transition: 500ms;/* 过渡效果,让阴影变化平滑 */
}
</style>
  • :使用Vue.js的v-for指令遍历users数组中的每个用户对象,并为每个用户生成一个卡片。:key="user.id"用于Vue的虚拟DOM算法中的元素标识,确保每个用户卡片的唯一性和高效更新。
  • 图片和用户名信息:展示每个用户的头像和用户名,以及粉丝数量。
    Alt
{path: '/userprofile/:userId',name: 'userprofile',component: UserProfileView},

path: ‘/userprofile/:userId’:定义了一个路由路径,其中:userId是动态路径参数,表示这个路由可以匹配类似 /userprofile/123 这样的URL,其中 123 是实际的用户ID。动态路径参数可以通过 $route.params.userId 在组件内部访问。

<router-link class="nav-link" :to="{name: 'userprofile', params: {userId: 2}}">用户动态</router-link>import { useRoute } from 'vue-router';<!--setup函数内部-->const router = useRoute();const userId = router.params.userId;
  • :to=“{name: ‘userprofile’, params: {userId: 2}}”::to 是 Vue Router 的一个 prop,用来指定导航的目标路由。在这里,它指向名为 ‘userprofile’ 的路由,并且传递了一个动态参数 userId: 2。这意味着当用户点击这个链接时,会导航到 /userprofile/2 这个路径,其中 2 是用户的ID。
  • useRoute 是 Vue Router 提供的一个钩子函数,用于在组件内部获取当前路由的信息。
  • const router = useRoute();:调用 useRoute() 后返回的 router 对象包含了当前路由的各种信息,包括 params 对象,其中包含了动态路由参数。
  • const userId = router.params.userId;:这里通过 router.params.userId 获取到了路由中动态参数 userId 的值。在这个例子中,如果当前路径是 /userprofile/2,则 userId 的值将是 2。

登录

<template><ContentBase><div class="row justify-content-md-center"><div class="col-3"><form @submit.prevent="login"><div class="mb-3"><label for="username" class="form-label">用户名</label><input v-model="username" type="text" class="form-control" id="username" ></div><div class="mb-3"><label for="password" class="form-label">密码</label><input v-model="password" type="password" class="form-control" id="password"></div><div class="error-message">{{ error_message }}</div><button type="submit" class="btn btn-primary">登录</button></form></div></div></ContentBase>
</template><script>
import ContentBase from '@/components/ContentBase.vue';
import { ref } from 'vue';export default{name: "LoginView",components: {ContentBase},setup(){let username = ref('');let password = ref('');let error_message = ref('');const login = () => {}return{username: username,password: password,error_message: error_message,login}}
}
</script><style scoped>
button{width: 100%;
}
.error-message{color: red;
}
</style>
  • @submit.prevent=“login”:当表单提交时,调用 login 方法并阻止默认的表单提交行为。
  • 双向绑定 v-model 用于绑定 username 和 password 到输入框的值。
  • error_message 用于显示登录过程中的错误信息。
  • import { ref } from ‘vue’; 引入了 Vue 3 中的 ref 函数,用于创建响应式引用。
  • setup() 是 Vue 3 中的新语法,用于设置组件的响应式数据和方法。
  • 在 setup() 中,使用 ref() 创建了 username、password 和 error_message 这三个响应式变量。
  • login() 方法定义了登录函数的空壳,需要根据实际情况填充逻辑来处理用户提交的用户名和密码。
  • return { … } 返回了组件中需要在模板中使用的数据和方法,包括 username、password、error_message 和 login。
import { createStore } from 'vuex'export default createStore({state: {user: {username: "",id:'',firstName: '',lastName: ''}},getters: {fullName(state){return state.user.firstName + state.user.lastName;}},mutations: {updateUser(state,user){state.user.username = user.username;}},actions: {updateUser(context){let resp;},},modules: {}
})
  • 使用了 createStore 函数从 Vuex 中导入,并且这个函数被用来创建一个 Vuex 的 store 实例。
  • state 对象包含应用的状态数据。
  • 定义了一个 user 对象,包含了用户的基本信息,如 username、id、firstName 和 lastName。
  • getters 是用来从 store 中的 state 中获取数据的方法。
  • 定义了一个 fullName 的 getter,它会返回 firstName 和 lastName 拼接成的完整名字。
  • mutations 是用来修改 store 中的 state 的方法。
  • 定义了一个 updateUser 的 mutation,它接收一个 user 对象作为参数,用来更新 state.user.username。
  • actions 类似于 mutations,不同之处在于它提交的是 mutation,而不是直接变更 state。
  • updateUser action 通常用来处理异步操作,例如调用 API 后再提交 mutation。
  • modules 可以用来将 store 分割成模块,目前未定义任何模块。

Vuex store 实例包含了一个简单的 user 对象作为应用的状态,以及对应的 getters、mutations 和 actions。可以用来管理用户信息,并提供了获取完整名字和更新用户名的功能。增加更多的 state 属性、mutations 和 actions,来实现复杂的状态管理和业务逻辑。


总结

主要介绍了好友列表、登录界面所涉及的vue知识点!!!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于okhttp3拦截器实现短时间内重复请求的拦截

基于okhttp3拦截器实现短时间内重复请求的拦截 背景 某次需求代码实现存在缺陷, 导致用户在点击某标签的时候发起了2次请求(即一次重复请求)。由于开发自测阶段没有盯着抓包软件看请求次数, 测试也没有关注接口请求次数问题, 最终将问题带上线。 影响面 导致被调用的接口QPS翻…

C#知识|文件与目录操作:文本读写操作

哈喽,你好啊,我是雷工! 今天学习文件与目录的操作,以下为文本读写操作的学习笔记。 01 文件操作说明 1.1、数据的存取方式 数据库:适合存取大量且关系复杂并有序的数据; 文件:适合存取大量但数据关系简单的数据,像系统的日志文件; 1.2、文件存取的优点 ①:读取操…

ECharts - 坐标轴刻度数值处理

写图表时&#xff0c;Y轴的数值过大&#xff0c;不太可能直接展示&#xff0c;这时候就得简写了&#xff0c;或者百分比展示的也要处理&#xff0c;如下图&#xff1a; yAxis: {type: value,// Y轴轴线axisLine: { show: false }, // 刻度线axisTick: { show: false },// 轴刻度…

收藏!2024年GPU算力最新排名

​GPU&#xff08;图形处理单元&#xff09;算力的提升是驱动当代科技革命的核心力量之一&#xff0c;尤其在人工智能、深度学习、科学计算和超级计算机领域展现出了前所未有的影响力。2024年的GPU技术发展&#xff0c;不仅体现在游戏和图形处理的传统优势上&#xff0c;更在跨…

House of Lore

House of Lore 概述&#xff1a; House of Lore 攻击与 Glibc 堆管理中的 Small Bin 的机制紧密相关。House of Lore 可以实现分配任意指定位置的 chunk&#xff0c;从而修改任意地址的内存。House of Lore 利用的前提是需要控制 Small Bin Chunk 的 bk 指针&#xff0c;并且…

Android中如何手动制造logcat各等级日志(VERBOSE、DEBUG、INFO、WARNING、ERROR、FATAL)

文章目录 1、logcat与log工具2、通过log生成logcat日志2.1、logcat日志等级2.2、log指令说明2.3、log生成日志指令 3、制作日志生成shell脚本4、增加日志生成控制5、附录 1、logcat与log工具 logcat&#xff1a;是Android操作系统中用于记录和查看系统日志的工具。它是Android…

如何在 VPS 上安装和使用 VirtualMin

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 关于 Virtualmin Virtualmin 是 Webmin 的一个模块&#xff0c;允许对&#xff08;多个&#xff09;虚拟专用服务器进行广泛的管理。您…

【华为OD机考】2024D卷最全真题【完全原创题解 | 详细考点分类 | 不断更新题目】

可上 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1441了解算法冲刺训练&#xff08;备注【CSDN】否则不通过&#xff09; 文章目录 相关推荐阅读栈常规栈单调栈 队列&#xff08;题目极少&#xff0c;几乎不考&#xff09;哈希哈希集合哈希表 前缀和双指针同向双指针 贪…

七、SpringBoot日志

1. 得到日志对象 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; //打印日志…

C++程序使用开源zlib库对二进制字节流数据进行压缩和解压(附源码)

目录 1、概述 2、zlib开源库与开源zip.cpp和unzip.cpp的区别 3、发送端先调用compress压缩,再将数据发出去 4、接收端接收到数据,调用uncompress解压,解压后再使用 5、最后 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.c…

c++-封装案例-设计学生类

类中的属性和行为统称为成员&#xff0c;属性&#xff1a;成员属性、成员变量&#xff1b;行为&#xff1a;成员函数&#xff0c;成员方法。

黛米·摩尔和她的孙女卢埃塔在这张飘逸的快照很亲密

卢埃塔和她的祖母黛米摩尔显然是最好的朋友&#xff0c;这张飘逸的快照证明了这一点。准备好“哇&#xff01;” 7 月 26 日&#xff0c;摩尔分享了一张非常迷人的照片&#xff0c;照片上有她、她的两个女儿和她的孙女在她昂贵的后院。她在照片中配文说&#xff1a;“夏日&…

vue3-环境变量-JavaScript-axio-基础使用-lzstring-字符串压缩-python

文章目录 1.Vue3环境变量1.1.简介1.2.全局变量的引用1.3.package.json文件 2.axio2.1.promise2.2.安装2.3.配置2.3.1.全局 axios 默认值2.3.2.响应信息格式 2.4.Axios的拦截器2.4.1.请求拦截器2.4.2.响应拦截器2.4.3.移除拦截器2.4.4.自定义实例添加拦截器 3.lz-string3.1.java…

回溯

组合问题 LeetCode77 组合 class Solution { public:vector<vector<int>>res;vector<int>list;void dfs(int begin,int n,int k){if(list.size()k){res.push_back(list);return;}for(int ibegin;i<n;i){list.push_back(i);dfs(i1,n,k);list.pop_back();}…

(源码分析)springsecurity认证授权

了解 1. 结构总览 SpringSecurity所解决的问题就是安全访问控制&#xff0c;而安全访问控制功能其实就是对所有进入系统的请求进行拦截&#xff0c;校验每个请求是否能够访问它所期望的资源。 根据前边知识的学习&#xff0c;可以通过Filter或AoP等技术来实现&#xff0c;Spr…

天津仁爱学院2024级专升本新同学开学报到提示

亲爱的2024级新同学: 亲爱的仁爱新人&#xff0c;你准备好了吗&#xff1f;祝福之余&#xff0c;关于入学报到还有以下几点提示&#xff1a; 01报到时间 报到时间:2024年9月1日。报到时请携带录取通知书和准考证。因参军保留入学资格或因病及其他原因不能按时报到的同学&#x…

主图趋势交易九稳量化系统 期货指标公式大全 最准的期货指标源码 看期货涨跌最简单的方法文华财经指标公式源码

交易的动机必须来自于内心&#xff0c;一种解决问题的执着。在整个交易生涯的漫长岁月里&#xff0c;无法始终保持这种热忱。除非亲身体验&#xff0c;否则很难理解这种疯狂的热忱。这是一种高度的专注&#xff0c;其他一切好像都不存在&#xff0c;视野之内没有其他的东西。这…

利用Python进行高效数据分析实践

引言 在当今的数据驱动世界中&#xff0c;能够有效地处理和分析数据已成为许多行业的核心竞争力。Python作为一种强大的编程语言&#xff0c;因其简洁易读的语法以及丰富的第三方库支持&#xff0c;在数据科学领域受到了广泛的欢迎。本文将介绍如何使用Python进行高效的数据分…

探索 Milvus 存储系统:如何评估和优化 Milvus 存储性能

欢迎来到探索 Milvus 系列。Milvus 是一款支持水平扩展和具备出色性能的开源向量数据库。Milvus 的核心是其强大的存储系统&#xff0c;是数据持久化和存储的关键基础。该系统包括几个关键组成部分&#xff1a;元数据存储&#xff08;meta storage&#xff09;、消息存储&#…