首页 > 其他分享 >vuejs3.0 从入门到精通——初始化项目——路由

vuejs3.0 从入门到精通——初始化项目——路由

时间:2023-11-01 10:57:58浏览次数:24  
标签:初始化 Vue 浏览器 URL vuejs3.0 路由 createWebHistory createWebHashHistory

路由

  Vue Router 是 Vue.js 官方的路由管理器,它和 Vue.js 深度集成,用于构建单页面应用。Vue.js 单页面应用是基于路由和组件映射的,路由用于配置访问路径,将组件(components)映射到路由路径(routes)。

一、路由模式

  Vue Router 常用的两种模式是 hash 模式和 HTML5 模式,对应的创建模式分别是 create WebHashHistory 和 createWebHistory。

    • createWebHashHistory 模式:
    • createWebHistory 模式:

1.1、createWebHashHistory模式

  创建 hash 历史记录。指浏览器地址栏 URL 的#(此 hash 不是密码学中的散列运算),如 http://www.abc.com/#/hello,其中的#/hello 为 hash 值。它的特点在于 hash 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面。

1.2、createWebHistory模式

  创建 HTML5 历史记录。在浏览器的历史记录栈中利用 HTML5 的 History Interface 新增的 pushState 和 replaceState 方法,在当前已有的 back、forward、go 基础上,它们提供了修改历史记录的功能。当它们执行修改时,虽然改变了目前的 URL,但浏览器不会立即向后端发送请求。

  在Vue 3中,createWebHashHistorycreateWebHistory的区别确实在于URL中是否带有哈希符号“#”。

  • createWebHashHistory:

当使用createWebHashHistory创建Vue Router实例时,URL中的路径将以哈希形式呈现,即带有“#”符号。例如,如果当前路由是“/user/profile”,则URL将显示为“http://example.com/#/user/profile”。

这种模式在老版本的浏览器中通常被使用,因为它允许通过URL的哈希部分来标识每个路由,而不需要使用HTML5 History API。然而,现代浏览器大多都支持HTML5 History API,因此使用createWebHistory可能更加适合。

  • createWebHistory:

当使用createWebHistory创建Vue Router实例时,URL中的路径将以常规形式呈现,即不带有“#”符号。例如,如果当前路由是“/user/profile”,则URL将显示为“http://example.com/user/profile”。

这种模式在现代浏览器中更为常见,因为它利用了HTML5 History API来管理路由历史记录。它还允许使用浏览器的标准前进和后退按钮进行导航,而不需要依赖URL的哈希部分。

  选择使用createWebHashHistory还是createWebHistory取决于你的应用需求和目标浏览器的支持情况。

  如果你需要兼容老版本的浏览器或特定的环境,并且不需要使用HTML5 History API,那么使用createWebHashHistory可能更合适。否则,现代浏览器大多都支持HTML5 History API,因此使用createWebHistory可能更加适合。

二、路由定义

  对路由的定义可通过路由名称进行标识,特别是在链接一个路由或执行路由跳转时,可以在创建 Router 实例时在 routes 配置中给路由设置名称。

  在 Vue 3 中,路由的定义通常在router.js文件或 router/index.js 中进行。以下是一个示例代码,展示了如何在 Vue 3 中使用createWebHistorycreateWebHashHistory,并使用路由名称在链接或执行路由跳转时进行标识:

// router/index.js
import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router';
import UserComponent from './components/UserComponent.vue';
import ProfileComponent from './components/ProfileComponent.vue';

// 定义路由映射组件
const routes = [
    {
        path: '/user/:id',
        name: 'User',
        component: UserComponent
    },
    {
        path: '/user/:id/profile',
        name: 'Profile',
        component: ProfileComponent
    }
];

// 创建 Router 实例(使用 createWebHistory 或 createWebHashHistory)
const router = createRouter({
    history: createWebHistory(), // 或 createWebHashHistory()
    routes
});

export default router;

  在上面的示例中,我们定义了两个路由:UserProfile,它们分别映射到UserComponentProfileComponent组件。我们使用name属性为每个路由设置了一个名称,以便在链接或执行路由跳转时使用。

  接下来,你可以在其他 Vue 组件中使用<router-link><router-view>来链接和渲染路由:

<!-- SomeComponent.vue -->  
<template>  
  <div>  
    <h1>导航</h1>  
    <router-link to="/user/1">User</router-link>  
    <router-link to="/user/1/profile">Profile</router-link>  
  
    <h2>内容</h2>  
    <router-view></router-view>  
  </div>  
</template>

  在上面的示例中,我们使用<router-link>创建了两个导航链接,分别链接到UserProfile路由。我们还使用<router-view>来渲染当前路由所对应的组件。  

 

标签:初始化,Vue,浏览器,URL,vuejs3.0,路由,createWebHistory,createWebHashHistory
From: https://www.cnblogs.com/zuoyang/p/17802518.html

相关文章

  • 一文详解 springboot 项目启动时异步执行初始化逻辑
    你知道的越多,你不知道的越多点赞再看,养成习惯文章目录前言代码实现定义异步处理工具类实现java线程池新建AppInit实现ApplicationRunner接口完成启动项目时异步数据初始化前言前面的工作中,为了提高地区数据的响应时间,需要加载全国区划数据到redis中缓存起来,这个过程希......
  • kingbase初始化报错
    [zjh@hs-10-20-30-193Server]$rm-rfdata[zjh@hs-10-20-30-193Server]$./bin/initdb-DdataThefilesbelongingtothisdatabasesystemwillbeownedbyuser"zjh".Thisusermustalsoowntheserverprocess.Thedatabaseclusterwillbeinitializ......
  • Spring Boot 3系列之一(初始化项目)
    近期,JDK21正式发布,而SpringBoot3也推出已有一段时间。作为这两大技术领域的新一代标杆,它们带来了许多令人振奋的新功能和改进。尽管已有不少博客和文章对此进行了介绍,但对于我们这些身处一线的开发人员来说,有些文章和文档可能一看就会,一写就废。因此,为了更深入地理解JDK21和Spr......
  • N1中openwrt实现不插网线就能上网,通过wifi连接路由器
    环境说明:路由器:N1盒子系统版本:openwrt前言既然想用这个功能,基本上就是没有网线连接盒子了,不仅限于N1盒子只要是openwrt系统就可以创建接口在openwrt界面上依次点击“网络”->“无线”,第一项是2.4GHz的wifi配置,第二项是5GHz的wifi设置,确定要转接的wifi的频率,点击对应项后面的“扫......
  • uniapp实现路由拦截
    背景在APP中,跳转页面需要判断是否有权限跳转,比如是否登录。开发环境是TMUI+VUE3+TS,这难免有一些限制,在网上搜索后,发现简书网站有个博主写的链接正合我意,不过他的是JavaScript+uniapp原生开发,根据我的需求,自己稍微改了些。0x01复制代码简书博客链接:https://www.jianshu.com/p/b......
  • TP-LINK XDR6088 WiFi6路由器 简单开箱评测
    TL-XDR6088易展版AX6000双频WiFi6路由器简单开箱测评,双2.5G网口,双频8流,8颗FEM,支持Docker。TP-LINKXDR5470WiFi6路由器简单开箱评测:https://blog.zeruns.tech/archives/725.htmlTP-LINKXDR3040WiFi6路由器简单开箱评测:https://blog.zeruns.tech/archives/683.html参数CPU:MT79......
  • java 动态数组初始化
    动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。格式:数据类型[]数组名=new数据类型[数组长度];示例:int[]arr=newint[3];publicclassday8_06{publicstaticvoidmain(String[]args){/*定义一个数组,用来存班级中50个学生的姓名......
  • ensp 简单配置路由添加ip操作小实例
    ensp简单配置路由添加ip操作displaycu#查看路由器配置displayiprouting-table[x.x.x.x]#查看路由表【和x.x.x.x相关的条】案例一、2个路由器配置ip地址给2个路由器配合ip地址,方法一样ipaddressx.x.x.x.x掩码24(255.225.255.0)1.启动2个路由器,有......
  • 数组的静态初始化和动态初始化
    publicclassArrayDemo02{publicstaticvoidmain(String[]args){//静态初始化:创建+赋值int[]a={1,2,3,4,5,6,7,8};System.out.println(a[0]);//动态初始化:包含默认初始化int[]b=newint[10];b[0]=10;......
  • vant时间选择器中对minDate进行初始化
    vant组件库中,DatetimePicker可以通过min-date和max-date属性确定可选的时间范围。但他只支持Date类型,时间戳的话会报错,需要转换一下<van-popupv-model="showStartTime"position="bottom"><van-datetime-pickerv-model="defaultStartDate"......