用vue3 写出一个完整的用户登录界面

2023-11-04

首先,安装必要的依赖包。

npm install vue@next vue-router vuex

然后,创建一个名为App.vue的根组件。

<template>
  <div>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'App',
}
</script>

接下来,创建一个名为router.js的路由文件。

import { createRouter, createWebHistory } from 'vue-router'
import Home from './components/Home.vue'
import Login from './components/Login.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/login', component: Login },
]

const router = createRouter({
  history: createWebHistory(),
  routes,
})

export default router

然后,创建一个名为store.js的Vuex存储文件。

import { createStore } from 'vuex'

const store = createStore({
  state() {
    return {
      isLoggedIn: false,
    }
  },
  mutations: {
    login(state) {
      state.isLoggedIn = true
    },
    logout(state) {
      state.isLoggedIn = false
    },
  },
})

export default store

接下来,创建一个名为Home.vue的组件,作为登录后的主页。

<template>
  <div>
    <h1>Welcome to the Home page!</h1>
    <button @click="logout">Logout</button>
  </div>
</template>

<script>
import { mapMutations } from 'vuex'

export default {
  name: 'Home',
  methods: {
    ...mapMutations(['logout']),
  },
}
</script>

然后,创建一个名为Login.vue的组件,用于用户登录。

<template>
  <div>
    <h1>Login</h1>
    <form @submit.prevent="login">
      <input type="text" v-model="username" placeholder="Username" required>
      <input type="password" v-model="password" placeholder="Password" required>
      <button type="submit">Login</button>
    </form>
  </div>
</template>

<script>
import { mapMutations } from 'vuex'

export default {
  name: 'Login',
  data() {
    return {
      username: '',
      password: '',
    }
  },
  methods: {
    ...mapMutations(['login']),
    login() {
      // 实际的登录逻辑,例如,发送登录请求到服务器
      // 如果登录成功,调用 `this.login()` 来更新 `isLoggedIn` 状态
      this.login()
      this.$router.push('/') // 登录成功后跳转到主页
    },
  },
}
</script>

最后,在入口文件main.js中,初始化Vue应用程序。

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

createApp(App)
  .use(router)
  .use(store)
  .mount('#app')

现在,你可以运行应用程序并访问http://localhost:8080/login来查看用户登录界面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用vue3 写出一个完整的用户登录界面 的相关文章

  • 页面在 Google Adwords 转化跟踪上重定向

    我有一个表单 人们可以在其中提交数据 然后使用 ajax 将数据发送到服务器 我已将其设置为 Google Adwords 中的转化 下面是我使用过的代码 问题是 当用户提交表单时 在收到响应后 它会重定向回我给出的 URL 我不想重定向
  • 如何设置vite.config.js基本公共路径?

    我正在尝试设置一个base url对于我的开发和生产环境 但是vitejs配置未解决 根据vitejs https vitejs dev config 您可以在配置选项中设置在开发或生产中提供服务时的基本公共路径 当从命令行运行 vite
  • 使用带有少量项目的 v-slide-group 时出现问题

    我在使用 v slide group 时遇到问题 有时我有 2 3 个项目 有时我有 10 个或更多项目 但项目较少时 它不会显示箭头 幻灯片项目也不居中 这是我的 HTML div div
  • 如果用户在 Laravel 中经过身份验证,如何检查 Vue 组件?

    正如标题所述 我有点困惑如何根据用户是否登录并使用 Laravel 的 Auth 外观进行身份验证 使用 if else 语句处理 Vue 组件中的方法 我正在发出各种 Axios 请求 我需要根据用户是否登录来允许 禁止这些请求 我有 V
  • 如何在Vue.js中格式化当前日期格式

    我需要获取当前日期Vue js 为此 我使用了以下方法 today date new Date toJSON slice 0 10 replace g today date将给出日期2019 09 11格式 有什么方法可以自定义这种格式吗
  • 如何在 Vue.js 中将 InnerHtml 复制到剪贴板?

    我想将此 for 循环的内容复制到剪贴板中 div class links div class row p makeUrl name p div div
  • 监听来自动态vue组件的事件

    您将如何侦听动态创建的组件实例发出的事件 在示例中 顶部组件添加到 DOM 中 而第二个组件是在 javascript 中动态创建的 Vue component button counter data function return cou
  • 使用 nuxt/content 显示从数据库获取的 markdown

    我在我的应用程序中使用 nuxt content 它工作正常 在应用程序的另一部分 我想从数据库中获取一些降价并显示它 let mytext Some markdown fetched from a db here
  • Nuxt 3动态组件中根据路由参数进行API调用

    我正在尝试创建一个简单的 Nuxt 3 应用程序用于学习目的 它使用动态路线 https v3 nuxtjs org docs directory structure pages dynamic routes加载页面时从 API 加载数据
  • 在 Vue.js 2 中将 props 作为初始数据传递的正确方法是什么?

    所以我想将 props 传递给 Vue 组件 但我希望这些 props 将来会从该组件内部发生变化 例如当我使用 AJAX 从内部更新该 Vue 组件时 所以它们仅用于组件的初始化 My cars listVue 组件元素 我将具有初始属性
  • 如何为 VueJS 组件创建 v-model 修饰符?

    在VueJS中有一些v model修改预解析绑定值 例如v model trim从字符串中删除空格 如何创建自己的修改器 例如v model myparse今天嗯使用类似的东西 computed name get function retu
  • 使用 vue-cli 服务时如何禁用 linting?

    我正在使用以下命令使用 vue cli 运行我的项目 vue cli service 服务 open 如何禁用所有 linting 目前每次保存时都会重新进行 linting 并且更改代码需要很长时间 我已经把 lintOnSave fal
  • 实现npm包自定义组件VueJS

    我正在尝试使用以下 npm package 来绕过 X frame 选项 https www npmjs com package x frame bypass https www npmjs com package x frame bypa
  • Vue-动态导入vue组件

    我有很多组件 我想按需导入 我有一个下拉菜单 其中实际上包含组件列表 即要加载的内容 我试过这个例子
  • 如何销毁/卸载 vue.js 3 组件?

    我有一个相当大的vue js 2具有动态选项卡机制的应用程序 用户可以与应用程序打开和关闭选项卡进行交互 每个选项卡代表一条路线 为了实现这一点 我使用 vue router 并保持活动状态 如下例所示
  • 如何居中对齐表格 - PDFMAKE

    我可以使用 PDFMAKE 创建一张居中对齐 页面 的表格吗 已定义的对齐方式 样式中的 center 和标签表内的 table width auto body text PER ODO style tableHeader text VOL
  • Vue 3 输入模式

    我想创建输入 如果模式不匹配 我可以用空字符替换输入的字符 模板
  • Vue: vue-i18n: 无法翻译 keypath 的值,使用 keypath 的值作为默认值

    我正在使用 Vue 我想展示三种语言 英语 他加禄语和宿务语 现在我有错误 无法转换键路径 NavbarMobile home 的值 使用 keypath 的值作为默认值 我通过 console log this i18n locale 检
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • 如何在 Vuejs 中加载 Pixi 实例?

    我正在 VueJS 组件中学习 PixiJS 如下所示Pixi教程 https github com kittykatattack learningPixi我控制台显示此错误 vue runtime esm js 2b0e 619 Vue

随机推荐

  • 【软件测试】(四)测试用例怎么写

    文章目录 测试用例基本要素 1 评价好的测试用例的标准 2 根据需求写测试用例 3 测试用例的设计方法 3 1 基于需求进行测试用例的设计 3 2 具体的设计用例的方法 3 2 1 等价类 3 2 2 边界值 3 2 3 错误猜测法 3 2
  • php不可见字符,php怎么处理不可见字符

    php处理不可见字符的方法 首先创建一个PHP文件 然后定义一个filterNonPrintableChar方法 接着在方法体内通过while语句实现过滤不可见字符的功能逻辑 最后运行该文件即可 php过滤不可见字符 编码知识 ASCII码
  • waitpid的作用

    waitpid的使用 waitpid用于等待特定的进程结束之后 主进程再继续执行 这时主进程会进入阻塞状态 在fork之后 如果子进程不使用waitpid 则可能时主进程先结束 也可能时子进程先结束 子进程 include
  • Spring核心概念

    BeanDefinition BeanDefinition表示Bean定义 BeanDefinition中存在很多属性用来描述一个Bean的特点 比如 class 表示Bean类型 scope 表示Bean作用域 单例或原型等 lazyIn
  • python3 leecode之快乐数

    题目 编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 对于一个正整数 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直到这个数变为 1 也可能是 无限循环 但始终变不到 1 如果 可以变为 1 那么这个数就是快乐
  • 05-Mysql夺命三连问:什么是索引下推?什么是索引覆盖?什么是回表?【Java面试总结】

    Mysql夺命三连问 什么是索引下推 什么是索引覆盖 什么是回表 索引下推是mysql5 6 提出的一个查询优化方案 主要的目的是减少数据或查询中不必要的读取和计算 它的原理是将查询条件尽可能的推送到索引层面进行过滤 减少从磁盘读取的数据量
  • Win10报错! 由于找不到hhctrl.ocx win10运行帮助时hhctrl.ocx缺失的解决方法

    hhctrl ocx下载地址 1 到网上下载hhctrl ocx 然后将下载的ocx文件复制到C Windows System32目录下 Win7 Vista系统的路径是一样的 64位放到C Windows SysWOW64 2 开始 菜单
  • 使用OpenCV对物体搜索检测与识别

    在本教程中 我们将了解对象检测中称为 选择性搜索 的重要概念 我们还将用C 和Python共享OpenCV代码 物体检测与物体识别 对象识别算法识别图像中存在哪些对象 它将整个图像作为输入 并输出该图像中存在的对象的类标签和类概率 例如 类
  • vue3 - setup之defineEmits

    基础形式 子组件 const emits defineEmits name 触发emits事件 const eventButton gt emits name 父组件
  • 第14.11节 Python中使用BeautifulSoup解析http报文:使用查找方法快速定位内容

    一 引言 在 第14 10节 Python中使用BeautifulSoup解析http报文 html标签相关属性的访问 介绍了BeautifulSoup对象的主要属性 通过这些属性可以访问标签 内容 但这种方法要么就只能访问符合条件的第一个
  • robot framework 使用三:浏览器兼容性自动化

    robot framework 测试浏览器兼容性 上图中黄色圈的地方默认什么都不写 是firefox浏览器 写上ie就是ie浏览器了 firefox最新版本就行 ie需要设置 1 IE选项设置的安全页中 4个区域的启用保护模式的勾选都勾上
  • git commit遇到的问题:error: pathspec ‘xxx‘ did not match any file(s) known to git

    问题 git commit 时出现报错 error pathspec xxx did not match any file s known to git 原因 未知 可以看下其他人的答案 查询其他人的说法 远程分支与本地分支没有建立连接等
  • C++中的类模板(黑马程序员)

    目录 类模板 类模板 1 1 类模板语法 1 2 类模板与函数模板区别 1 3 类模板中成员函数创建时机 1 4 类模板对象做函数参数 主要了解类模板实例化出的对象后 如何向函数传参 1 5 类模板与继承 1 6 类模板成员函数类外实现 1
  • 使用GetOpenFileName创建“选择文件”对话框

    GetOpenFileName用于创建一个打开文件对话框 存在于头文件commdlg h 原型 BOOL WINAPI GetOpenFileName Inout LPOPENFILENAME lpofn lpofn为一个指向OPENFIL
  • MySQL JDBC URL中几个重要参数说明

    jdbc mysql host port host port database 参数名1 参数值1 参数名2 参数值2 参数名称 参数说明 缺省值 最低版本要求 user 数据库用户名 用于连接数据库 所有版本 password 用户密码
  • tensorflow中如何average checkpoint

    首先获取checkpoint的状态以及每个参数的值 ckpt state tf train get checkpoint state model dir ckpts ckpt state all model checkpoint paths
  • java - 面向对象程序的三大特性 封装、继承、多态

    目录 1 封装 1 1访问限定符 1 2包 1 3导入包中的类 1 4如何自定义包 1 5 包的访问权限控制举例 1 6 常见的包 1 7如果修改封装好的成员变量 2 继承 什么继承 子类中访问父类成员变量 子类和父类不存在同名成员变量 子
  • windows电脑文件传输至ipad/iphone

    前言 个人分享而已 好坏对错与否勿喷 介意就别看 文明上网 tips1 本方法适用于稍微有点计算机基础的伙伴们 tips2 本方法需要你的电脑上已经安装并配置好了python 只要你电脑可以进行python代码程序运行就是ok的 tip3
  • Vue使用axios、解决axios跨域

    axios axios文档 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端 从浏览器中创建 XMLHttpRequests 从 node js 创建 http 请求 支持 Promise API 拦截
  • 用vue3 写出一个完整的用户登录界面

    首先 安装必要的依赖包 npm install vue next vue router vuex 然后 创建一个名为App vue的根组件