0


使用Vue3实现一个简单的在线投票系统

在这个信息化迅猛发展的时代,在线投票系统越来越被广泛应用。今天,我们将使用Vue3和其提供的Composition API,来实现一个简单的在线投票系统。本文将详细介绍系统的结构、基本功能以及实现方法,包括示例代码帮助你更好地理解。

项目结构

我们的投票系统将包含以下几个部分:

  1. 投票选项列表 - 显示所有可供选择的投票选项。
  2. 投票功能 - 允许用户选择某个选项进行投票。
  3. 结果显示 - 显示投票结果。

我们将使用Vue3的

  1. setup

语法糖来实现这个系统。

环境准备

确保你已经安装了Node.js和Vue CLI,接下来可以通过以下命令创建一个新的Vue3项目:

  1. vue create online-voting

选择“Vue 3”并完成项目创建后,进入项目文件夹:

  1. cd online-voting

接下来安装Vue Router,因为我们会在单页应用中使用它:

  1. npminstall vue-router

创建投票组件

我们将在

  1. src/components

目录下创建一个新的组件

  1. VotingSystem.vue

。以下是

  1. VotingSystem.vue

的代码:

  1. <template>
  2. <div class="voting-system">
  3. <h1>在线投票系统</h1>
  4. <h2>请为以下选项投票:</h2>
  5. <div v-for="option in options" :key="option.id" class="option">
  6. <input type="radio" :value="option.id" v-model="selectedOption" />
  7. <label>{{ option.name }}</label>
  8. <span class="vote-count">({{ option.votes }}票)</span>
  9. </div>
  10. <button @click="castVote">投票</button>
  11. <div v-if="hasVoted" class="result">
  12. <h2>投票结果:</h2>
  13. <ul>
  14. <li v-for="option in options" :key="option.id">
  15. {{ option.name }}: {{ option.votes }}票
  16. </li>
  17. </ul>
  18. </div>
  19. </div>
  20. </template>
  21. <script>
  22. import { ref } from 'vue';
  23. export default {
  24. name: 'VotingSystem',
  25. setup() {
  26. // 投票选项
  27. const options = ref([
  28. { id: 1, name: '选项一', votes: 0 },
  29. { id: 2, name: '选项二', votes: 0 },
  30. { id: 3, name: '选项三', votes: 0 }
  31. ]);
  32. // 选中的选项
  33. const selectedOption = ref(null);
  34. // 是否已投票
  35. const hasVoted = ref(false);
  36. // 投票方法
  37. const castVote = () => {
  38. if (!selectedOption.value) {
  39. alert('请先选择一个选项!');
  40. return;
  41. }
  42. const option = options.value.find(opt => opt.id === selectedOption.value);
  43. if (option) {
  44. option.votes++;
  45. hasVoted.value = true;
  46. }
  47. };
  48. return {
  49. options,
  50. selectedOption,
  51. hasVoted,
  52. castVote
  53. };
  54. }
  55. };
  56. </script>
  57. <style scoped>
  58. .voting-system {
  59. max-width: 600px;
  60. margin: auto;
  61. text-align: center;
  62. }
  63. .option {
  64. display: flex;
  65. align-items: center;
  66. }
  67. .vote-count {
  68. margin-left: 10px;
  69. }
  70. </style>

组件细节解析

模板部分

在模板部分我们使用了一些Vue的基本指令:

  • v-for: 用于循环遍历投票选项。
  • v-model: 用于双向数据绑定,选中某个选项。
  • v-if: 控制投票结果展示的条件。

脚本部分

在脚本部分中,我们采用了

  1. setup

函数,并引入了

  1. ref

来创建响应式的数据。在这个函数里,我们定义了:

  • options: 一个包含投票选项的数组,每个选项都有唯一的ID、名称和投票数。
  • selectedOption: 用户当前选择的选项ID。
  • hasVoted: 一个布尔值,用于表示用户是否已投票。
  1. castVote

方法负责处理投票逻辑,如果用户没有选中任何选项,将弹出警告以提示进行选择。一旦选中了选项,便会对相应选项的票数进行累加,并更新

  1. hasVoted

样式部分

样式部分简单地调整了容器的宽度、对齐和间距。你可以根据自己的需求进行修改。

在主应用中引用组件

  1. src/App.vue

中,可以引入并使用我们的投票组件:

  1. <template>
  2. <div id="app">
  3. <VotingSystem />
  4. </div>
  5. </template>
  6. <script>
  7. import VotingSystem from './components/VotingSystem.vue';
  8. export default {
  9. name: 'App',
  10. components: {
  11. VotingSystem
  12. }
  13. };
  14. </script>
  15. <style>
  16. #app {
  17. font-family: Avenir, Helvetica, Arial, sans-serif;
  18. text-align: center;
  19. background-color: #f5f5f5;
  20. min-height: 100vh;
  21. padding: 20px;
  22. }
  23. </style>

运行项目

最后,启动应用程序,查看投票系统的效果:

  1. npm run serve

打开浏览器,访问

  1. http://localhost:8080

,你就会看到我们实现的在线投票系统,用户可以进行投票并查看结果。

总结

通过这篇文章,我们利用Vue3实现了一个简单的在线投票系统。我们使用了

  1. setup

语法糖,结合

  1. ref

API,将选项的状态和用户的投票行为进行管理。这个简单的应用展示了Vue3的强大与灵活性,你可以在其基础上扩展更多功能,比如用户验证、数据持久化等。


最后问候亲爱的朋友们,并邀请你们阅读我的全新著作

在这里插入图片描述


本文转载自: https://blog.csdn.net/yuanlong12178/article/details/140751614
版权归原作者 JJCTO袁龙 所有, 如有侵权,请联系我们删除。

“使用Vue3实现一个简单的在线投票系统”的评论:

还没有评论