当前位置: 首页 > article >正文

Vue全栈开发旅游网项目(3)-Vue路由配置

1. 配置路由

1.1 导入路由工具

文件地址:src\router\index.js

import { createRouter, createWebHistory } from 'vue-router'//导入配置路由的工具
import HomeView from '../views/HomeView.vue'//导入组件

const router = createRouter({//创建路由对象
  history: createWebHistory(import.meta.env.BASE_URL),//路由模式
  routes: [//配置路由地址
    {
      path: '/',//目标地址
      name: 'home',//路由名称
      component: HomeView//路由目标
    },
    {
      path: '/about/:id/:type',
      name: 'about',
      component: () => import('../views/AboutView.vue')
    }
  ]
})
export default router //暴露路由对象

1.2 About路由测试

文件地址:src\views\AboutView.vue

<template>
  <div class="about">
    <h1>早上好</h1>
  </div>
</template>

<style>
@media (min-width: 1024px) {
  .about {
    min-height: 100vh;
    display: flex;
    align-items: center;
  }
}
</style>

1.3 挂载并导入路由

文件地址:src\main.js

import './assets/main.css'
import { createApp } from 'vue'
import App from './App.vue'//导入路由工具
import router from './router'
//引入vant ui
import Vant from 'vant'
import 'vant/lib/index.css'

const app = createApp(App)

app.use(router)//挂载路由组件
app.use(Vant)
app.mount('#app')

1.4 获取路由数据

导入工具useRoute,可以获取路由中携带的数据。

模板template模块 通过RouterView标记显示路由地址所指向的组件内容。

文件位置:src\App.vue

<script setup>
import { RouterLink,RouterView,useRoute } from 'vue-router'
const route = useRoute()//获得useRoute实例
</script>

<template>
  <RouterView />
</template>
<style scoped></style>

2.路由地址参数(from App.vue)

RouterLink类似于a标记可实现页面跳转,该标记支持路由地址匹配,to属性为匹配地址目标

<template>
  <header>
    <div class="wrapper">
      <nav>
        <RouterLink to="/">主页</RouterLink> -->
        <RouterLink to="/about">
          关于我们
          {{ route.params.id }}
          {{ route.params.type }}
          {{ route.query.name }}
          {{ route.query.sort }}
        </RouterLink>
      </nav>
    </div>
  </header>
  <RouterView />
</template>

3.景点详情页面开发

3.1 开发搜索界面各组件

文件地址:src\views\Search.vue

3.1.1 script行为模块:

<script setup>
import TripFooter from '@/components/common/Footer.vue';
import SightItem from '@/components/common/ListSight.vue';
import { ref,onMounted } from 'vue'
//景点名称
const sightName = ref('')
//景点列表
const dataList = ref([])
//总记录
const totalItem = ref(0)
//当前页码
const currentPage = ref(1)
//每页数据的大小
const perPage = ref(5)
//搜索函数
const onSearch = ()=>{
    console.log('onSearch')
}
</script>

3.1.2  template结构模块

<template>
    <div class="page-search">
        <!-- 标题 -->
        <van-nav-bar title="搜索景点"/>
        <!-- 搜索框 -->
        <van-search v-model="sightName" 
        show-action
        label="景点"
        placeholder="请搜索关键词"
        @search="onSearch">
        <template #action>
            <div @click="onSearch">搜索</div>
        </template>
        </van-search> 
        <!-- 景点列表 -->
        <div class="sight-list">
            <SightItem v-for="item in dataList"
            :key="item.id"
            :item="item"/>
        </div>
        <!-- 分页 -->
        <van-pagination v-model="currentPage"
        :total-items="totalItem"
        :items-per-page="perPage">
        </van-pagination>
        <!-- 底部导航 -->
        <TripFooter/>
    </div>
</template>

3.2 导入搜索页面的路由

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
import Search from '@/views/Search.vue'👈

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'home',
      component: HomeView
    },
    {👇
      path:'/search',
      name:'Search',
      component:Search
    }
  ]
})
export default router

3.3 添加按键路由功能

文件地址:src\components\common\Footer.vue

<script setup>
import { ref } from 'vue';
const active =ref()
</script>
<template>
    <div>
        <van-tabbar v-model="active" placeholder>
            <van-tabbar-item icon="wap-home-o" name="home" :to="{name:'home'}">首页</van-tabbar-item>
            <van-tabbar-item icon="search" name="search" :to="{name:'Search'}">搜索</van-tabbar-item>
            <van-tabbar-item icon="user-o" name="mine">我</van-tabbar-item>
        </van-tabbar>
    </div>
</template>

4.成果演示

脚部分中,“首页”与“搜索”功能可正常运行


http://www.kler.cn/a/375203.html

相关文章:

  • docker部署微信小程序自动构建发布和更新
  • Reactor
  • 蓝桥杯嵌入式备赛教程(1、led,2、lcd,3、key)
  • C#+OpenCv深度学习开发(常用模型汇总)
  • P1596 [USACO10OCT] Lake Counting S 洛谷 -池塘计数
  • 重温设计模式--命令模式
  • 基于SpringBoot和PostGIS的世界各国邻国可视化实践
  • 一文了解 | 软件测试类型与用途
  • 前端请求后端接口报错(blocked:mixed-content),以及解决办法
  • Element Plus在Vue3的安装
  • 使用web.dev提供的工具实现浏览器消息推送服务
  • Python 的 Pygame 库来开发一个游戏
  • 关于使用雷池社区版需要知道,什么是 IPv4 地址?
  • Linux Kernel Programming (个人读书笔记)
  • WSGI、uwsgi、uWSGI与Nginx
  • 练习LabVIEW第三十二题
  • 在Python中实现一个简单的社交媒体应用
  • Spring Boot 与 EasyExcel 携手:复杂 Excel 表格高效导入导出实战
  • 基于 SM3 的密钥派生函数 (KDF):国密合规的安全密钥生成方案
  • 低代码用户中心:简化开发,提升效率的新时代
  • es(1)(仅供自己参考)
  • 前端安全:构建坚不可摧的Web应用防线
  • redis的set如何实现的
  • 【WPF】BackgroundWorker类
  • 龙迅#LT8668EX显示器图像处理芯片 适用于HDMI1.4+VGA转4PORT LVDS,支持4K30HZ分辨率,可做OSD菜单亮度调节!
  • 什么是继电器干接点输出