SSM项目实战-编写路由规则以及登录页面实现,使用Vue3+Vite+Element-Plus+Axios技术

1、components/Login.vue

html 复制代码
<template>
  <div class="common-layout">
    <el-container>
      <el-header height="120px">&nbsp;</el-header>
      <el-container>
        <el-aside width="36%">&nbsp;</el-aside>
        <el-container>
          <el-main>
            <el-form :model="form" label-width="120px">
              <el-form-item label="用户名:">
                <el-input v-model="form.username" input-style="width:200px"/>
              </el-form-item>
              <el-form-item label="密&nbsp&nbsp码:">
                <el-input
                    v-model="form.userPwd"
                    type="password"
                    placeholder="Please input password"
                    show-password
                    input-style="width:200px"
                />
              </el-form-item>

              <el-form-item>
                <el-button type="primary" @click="doLogin">登录</el-button>
                <el-button>注册</el-button>
              </el-form-item>
            </el-form>
          </el-main>
          <el-footer>&nbsp;</el-footer>
        </el-container>
      </el-container>
    </el-container>
  </div>
</template>
<script lang="ts" setup>
import {reactive} from 'vue'

const form = reactive({
  username: 'lina',
  userPwd: '123456',
})
</script>

2、App.vue

html 复制代码
<template>
  <div>
    <!--路由的出口-->
    <router-view/>
  </div>
</template>

3、安装路由器Vue Router,添加依赖

html 复制代码
npm install vue-router@4

4、 package.json

javascript 复制代码
{
  "name": "pro20-schedule",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "axios": "^1.6.2",
    "element-plus": "^2.4.2",
    "vue": "^3.3.8",
    "vue-router": "^4.2.5"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.5.0",
    "vite": "^5.0.0"
  }
}

5、router/router.js

javascript 复制代码
import {createRouter, createWebHistory} from "vue-router";
import Login from "../src/components/Login.vue";
import Index from "../src/components/index.vue";

let router=createRouter({
    history: createWebHistory(),
    routes:[
        {
            path:'/',
            component:Login
        },
        {
            path:'/login',
            redirect:'/'
        },
        {
            path:'/index',
            component: Index,
        }
    ]
})
export default router;

6、main.js

javascript 复制代码
import { createApp } from 'vue'
import App from './App.vue'

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'

import router from "./router/router.js";

let app = createApp(App);
app.use(router)
app.use(ElementPlus, {
    locale: zhCn,
})
app.mount('#app')

7、createWebHistory()

在 Vue Router 4(Vue3的路由库)中,createWebHistory() 是一个工厂函数,用于创建一个 HTML5 history 对象。这个对象允许你在单页面应用(SPA)中管理浏览器的历史记录。

具体来说,createWebHistory() 函数的作用是创建一个基于 HTML5 History API 的历史管理对象。这个对象有两个主要的方法:pushreplace,分别对应于浏览器历史记录的前进和替换操作。

  • push 方法:当你想要导航到一个新的页面时,你可以调用 push 方法,并传入一个表示新页面路径的字符串。这会在浏览器历史记录中添加一个新的记录,并且浏览器的地址栏会显示新的地址。
  • replace 方法:如果你不想在当前浏览器历史记录中添加一个新的记录,而是想要替换掉当前的记录,你可以使用 replace 方法。这在你初始化应用或者处理重定向时很有用。

使用 createWebHistory() 创建的历史对象,Vue Router 会自动处理 URL 的变化和导航。这意味着,当你的应用中的路由变化时,Vue Router 会自动更新浏览器的地址栏,并且当你的用户在浏览器中点击前进或后退按钮时,Vue Router 会自动导航到正确的页面。

以下是一个简单的示例:

javascript 复制代码
import { createRouter, createWebHistory } from 'vue-router'  
  
const router = createRouter({  
  history: createWebHistory(),  
  routes: [  
    // your routes here  
  ],  
})

在这个示例中,我们创建了一个使用 HTML5 history 模式的 Vue Router 实例。这意味着当用户导航到不同的页面时,浏览器的地址栏会显示新的 URL,并且用户可以使用浏览器的前进和后退按钮来导航。

相关推荐
寅时码3 小时前
React 之死·终章:一个 useRef,把闭包陷阱、依赖数组、漫天 rerender 全送走
前端·react.js·ai编程
不好听6133 小时前
HTML 事件监听机制:从 DOM Level 0 到 React 合成事件
前端·react.js·html
wordbaby3 小时前
为什么刷新页面就 404?聊聊 SPA 路由与 Nginx 的那点事
前端
daols883 小时前
vxe-table 渲染器教程一:实现金额输入控件
javascript·vue.js·vxe-table
不好听6134 小时前
React 核心概念:JSX、组件与数据驱动
前端·react.js
触底反弹4 小时前
🔥 React 零基础入门(中):500 行屎山代码到组件化的蜕变
前端·javascript·react.js
不好听6134 小时前
React vs Vue:两大前端框架技术选型深度对比
前端·vue.js·react.js
GuWenyue4 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
GuWenyue4 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
小林ixn5 小时前
从 onclick 到 React 合成事件,再到完整应用逻辑:一次前端架构的深度剖析
前端·react.js·前端框架