【三十天精通Vue 3】第九天 Vue 3 路由详解

news2024/11/24 19:13:17

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: 三十天精通 Vue 3

文章目录

  • 引言
    • 一、Vue 3 路由概述
      • 1.1 路由的简介
      • 1.2 路由的分类
      • 1.3 路由的语法
    • 二、Vue 3 基本路由
      • 2.1 基本路由的简介
      • 2.2 基本路由的语法
      • 2.3 基本路由的应用场景
    • 三、Vue 3 命名路由
      • 3.1 命名路由的简介
      • 3.2 命名路由的语法
      • 3.3 命名路由的应用场景
    • 四、Vue 3 路由守卫
      • 4.1 路由守卫的简介
      • 4.2 路由守卫的语法
      • 4.3 路由守卫的应用场景
      • 5.1 路由参数的简介
      • 5.2 路由参数的语法
      • 5.3 路由参数的应用场景
    • 六、Vue 3 动态路由
      • 6.1 动态路由的简介
      • 6.2 动态路由的语法
      • 6.3 动态路由的应用场景
    • 七、Vue 3 路由嵌套
      • 7.1 路由嵌套的简介
      • 7.2 路由嵌套的语法
      • 7.3 路由嵌套的应用场景
    • 八、Vue 3 路由缓存
      • 8.1 路由缓存的简介
      • 8.2 路由缓存的语法
      • 8.3 路由缓存的应用场景
        • 8.3.1 减少路由切换的开销
        • 8.3.2 缓存静态资源
        • 8.3.3 减少重定向的开销
    • 九、Vue 3 路由中的计算属性和监听器
      • 9.1 路由中的计算属性和监听器
      • 9.2 路由中的计算属性和监听器的语法
      • 9.3 路由中的计算属性和监听器的应用场景
    • 十、Vue 3 路由的常见问题及解决方案
      • 10.1 路由导航守卫问题
      • 10.2 路由参数传递问题
      • 10.3 路由缓存问题

引言

当今 Web 开发中,Vue 3 已经成为了一个备受欢迎的前端框架。在 Vue 3 中,路由是一个非常关键的组件,它可以帮助我们管理应用程序中的页面切换。今天将详细介绍 Vue 3 路由的方方面面,包括基本路由、命名路由、路由守卫、路由参数、动态路由、路由嵌套、路由缓存以及计算属性和监听器。

一、Vue 3 路由概述

1.1 路由的简介

路由是 Vue 3 中用于管理页面切换的核心组件。它可以帮助我们定义应用程序中的页面切换,并通过使用$route$routeParams对象来访问当前路由和路由参数。

1.2 路由的分类

Vue 3 中的路由可以分为以下两种类型:

  • 基本路由:基本路由是最基本的路由类型,它只包含一个路由参数对象,并且没有守卫函数。
  • 命名路由:命名路由是一种通过名称来定义路由的类型。它可以包含多个路由参数,并且可以使用命名路由来进行嵌套。

1.3 路由的语法

在 Vue 3 中,定义路由可以使用“”组件来创建基本路由,也可以使用“”组件来创建命名路由。下面是一个基本路由的定义示例:

<template>  
  <div>  
    <a @click="goBack">返回</a>  
    <router-link to="/home">首页</router-link>  
    <router-link to="/about">关于我们</router-link>  
  </div>  
</template>  

在上面的示例中,我们使用“”组件来创建三个基本路由,分别是“/home”、“/about”和“/”。它们分别对应了应用程序中的三个页面。

除了基本路由之外,Vue 3 还支持命名路由。命名路由使用“”组件来创建,并且需要使用“”组件来渲染。下面是一个命名路由的定义示例:

<template>  
  <div>  
    <a @click="goBack">返回</a>  
    <router-view name="home"></router-view>  
    <router-view name="about"></router-view>  
  </div>  
</template>  

在上面的示例中,我们使用“”组件来渲染命名路由。命名路由使用“name”属性来定义,例如“home”和“about”分别对应了应用程序中的两个页面。

二、Vue 3 基本路由

2.1 基本路由的简介

基本路由是 Vue 3 中最基本的路由类型,它只包含一个路由参数对象,并且没有守卫函数。在 Vue 3 中,我们可以通过使用“”组件来创建基本路由。

2.2 基本路由的语法

创建基本路由可以使用“”组件,它支持以下两种语法:

  • 直接链接语法:使用“to”属性来指定路由链接,例如“/home”。
  • 命名路由语法:使用“to”属性来指定命名路由链接,例如“/home/index”。

下面是一个使用直接链接语法创建的基本路由示例:

<template>  
  <div>  
    <a @click="goBack">返回</a>  
    <router-link to="/home">首页</router-link>  
    <router-link to="/about">关于我们</router-link>  
  </div>  
</template>  

在上面的示例中,我们使用“”组件来创建两个基本路由,分别是“/home”和“/”。

2.3 基本路由的应用场景

基本路由适用于一些简单的页面,例如网站的首页、关于我们等页面。它没有守卫函数,因此不适用于需要对路由进行保护的情况。基本路由也不能包含多个路由参数,因此不适用于需要传递多个参数的情况。基本路由主要用于创建简单的链接,以便用户能够在页面之间进行导航。

三、Vue 3 命名路由

3.1 命名路由的简介

命名路由是一种通过名称来定义路由的类型。它可以包含多个路由参数,并且可以使用命名路由来进行嵌套。在 Vue 3 中,我们可以通过使用“”组件来创建命名路由。

命名路由可以用来组织和管理应用程序中的页面链接。例如,我们可以将页面名称作为命名路由,以便更好地组织和管理页面链接。此外,命名路由还可以用来实现页面级别的路由守卫,从而提高应用程序的安全性和可维护性。

3.2 命名路由的语法

创建命名路由可以使用“”组件,它支持以下两种语法:

  • 直接链接语法:使用“to”属性来指定命名路由链接,例如“/home/index”。
<router-link to="/home/index">首页</router-link>  
  • 嵌套语法:使用“to”属性来指定命名路由的嵌套链接,例如“/home/index/edit”。
<router-link to="/home/index/edit">编辑首页</router-link> 

3.3 命名路由的应用场景

命名路由的应用场景如下:

  1. 页面链接管理:

使用命名路由可以更好地组织和管理应用程序中的页面链接,以便开发人员更容易地维护和更新应用程序。

  1. 页面级别的路由守卫:

使用命名路由可以为每个页面定义独立的路由守卫,以提高应用程序的安全性和可维护性。

  1. 嵌套路由:

使用命名路由可以定义嵌套路由,以便更好地组织和管理页面链接。这在大型应用程序中尤为重要,因为它可以帮助开发人员更好地组织应用程序并减少混乱。

  1. 重定向:

使用命名路由可以定义重定向规则,以便在用户访问应用程序时将其重定向到特定的页面。这可以帮助开发人员更好地管理应用程序的用户流程和体验。

四、Vue 3 路由守卫

4.1 路由守卫的简介

路由守卫是 Vue 3 中用于保护路由的函数。它可以在路由切换时执行,并且在路由参数发生变化时可以进行相应的处理。

在 Vue 3 中,我们可以通过定义路由守卫来保护特定的路由,以防止非法用户访问。路由守卫可以使用 Vue 的守卫函数来实现,该函数接受两个参数:当前路由和路由参数。

4.2 路由守卫的语法

创建路由守卫可以使用 Vue 的守卫函数,该函数接受两个参数:当前路由和路由参数。守卫函数的语法如下:

export default {  
  beforeEnter(to, from, next) {  
    // 在这里编写守卫逻辑  
  }  
}

其中,to 和 from 分别是当前路由和前一个路由,next 是路由守卫的回调函数。在路由守卫中,我们可以编写相应的逻辑来验证用户身份、处理非法请求等。

4.3 路由守卫的应用场景

路由守卫是 Vue 3 中非常实用的功能,它可以帮助我们实现页面级别的安全性和可维护性。以下是一些常见的应用场景:

  • 用户登录验证:

在进入某些需要登录的路由前,可以通过路由守卫检查用户是否已经登录,如果没有登录,可以将用户重定向到登录页面。

  • 权限验证:

在进入某些需要特定权限的路由前,可以通过路由守卫检查用户是否具有相应的权限,如果没有权限,可以将用户重定向到相应的提示页面。

  • 数据加载:

在进入某些路由前,可以通过路由守卫进行数据加载,以确保数据已经加载完成后再进入路由。

  • 埋点统计:

在路由切换时,可以通过路由守卫进行埋点统计,以便后续的数据分析。

  • 页面缓存:

在路由切换时,可以通过路由守卫进行页面缓存,以提高页面加载速度。五、Vue 3 路由参数

5.1 路由参数的简介

Vue 3 中的路由参数指的是在路由路径中包含动态参数的一种方式。通过使用路由参数,可以在路由中传递数据和参数,以便动态地加载和渲染不同的组件和视图。例如,可以创建一个带有用户ID参数的路由,以便在加载用户详细信息视图时获取该用户的信息。

5.2 路由参数的语法

在 Vue 3 中,可以使用冒号语法在路由路径中定义动态参数。例如,以下路由定义了一个带有动态参数的路径:

const routes = [
  {
    path: '/user/:id',
    name: 'User',
    component: User,
  }
]

在这个例子中,:id 表示一个动态参数,表示用户ID。这意味着当路由匹配到 /user/123 这个路径时,路由参数中的 id 将会被设置为 123

可以在路由组件中通过 $route.params 属性来访问路由参数。例如,在上面的例子中,可以使用以下代码来获取当前路由参数中的用户ID:

export default {
  computed: {
    userId() {
      return this.$route.params.id;
    },
  },
}

5.3 路由参数的应用场景

路由参数的一个常见应用场景是在加载动态数据时使用。例如,在加载用户详细信息视图时,可以通过路由参数传递用户ID,并使用该ID从服务器获取用户数据。

另一个应用场景是在路由之间传递数据。例如,可以创建一个带有查询参数的路由,以便在不同的视图之间共享数据。

以下是一个完整的示例,演示如何使用路由参数来加载用户详细信息:

const routes = [
  {
    path: '/user/:id',
    name: 'User',
    component: User,
  }
];

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

const User = {
  data() {
    return {
      user: null,
    };
  },

  created() {
    const userId = this.$route.params.id;
    this.fetchUser(userId);
  },

  methods: {
    async fetchUser(userId) {
      const response = await fetch(`/api/users/${userId}`);
      const user = await response.json();
      this.user = user;
    },
  },

  template: `
    <div>
      <h1>{{ user.name }}</h1>
      <p>{{ user.email }}</p>
    </div>
  `,
};

在这个示例中,我们定义了一个带有动态参数的路由 /user/:id,并创建了一个名为 User 的组件来渲染用户详细信息。在 User 组件的 created 生命周期钩子中,我们通过 $route.params.id 来获取当前路由参数中的用户ID,并使用该ID从服务器获取用户数据。最后,我们将获取的用户数据渲染到模板中。

六、Vue 3 动态路由

6.1 动态路由的简介

动态路由是 Vue 3 中的一种路由类型,它可以在路由参数发生改变时动态地更新页面。在 Vue 3 中,我们可以通过定义动态路由来实现页面的动态更新。

动态路由可以使用 Vue 的 $route 对象和 $routeParams 对象来访问当前路由和路由参数。通过使用动态路由,我们可以实现页面的动态更新,例如在用户点击菜单时动态地更新页面。

6.2 动态路由的语法

创建动态路由可以使用 Vue 的 $route 对象和 $routeParams 对象,它们的语法如下:

export default {  
  name: 'DynamicRoute',  
  methods: {  
    goToDynamicRoute(routeName, routeParams) {  
      // 在这里编写动态路由逻辑  
      // Vue 的 $route 和 $routeParams 对象可以用来访问当前路由和路由参数  
      // 你可以在这里调用路由方法,比如:this.$router.push(routeName)  
    }  
  }  
}

在上面的代码中,我们定义了一个名为 DynamicRoute的动态路由。在方法 goToDynamicRoute 中,我们调用了 Vue 的$route $routeParams 对象来访问当前路由和路由参数。然后,我们可以在这里调用路由方法,比如:this.$router.push(routeName) 来动态地更新页面。

6.3 动态路由的应用场景

动态路由可以用于实现多个具有相同页面结构但不同内容的页面,例如:

  1. 在电商网站上,当用户点击商品分类时,可以根据不同的分类动态地加载商品列表页面。
  2. 在新闻网站上,当用户点击不同的新闻分类时,可以根据不同的分类动态地加载新闻列表页面。
  3. 在博客网站上,当用户点击不同的博客分类或标签时,可以根据不同的分类或标签动态地加载博客列表页面。

七、Vue 3 路由嵌套

7.1 路由嵌套的简介

路由嵌套是 Vue 3 中的一种常用路由技术,它可以将多个路由组合在一起形成一个嵌套路由,从而实现页面的多层嵌套和复杂路由配置。

在路由嵌套中,我们可以将一个组件包含在另一个组件中,并将其作为子路由使用。这样,我们就可以在父组件中定义路由配置,并在子组件中显示路由内容。

7.2 路由嵌套的语法

在 Vue 3 中,我们可以使用以下语法来定义路由嵌套:

const routes = [
  {
    path: '/parent',
    component: Parent,
    children: [
      {
        path: 'child',
        component: Child
      }
    ]
  }
]

在上面的代码中,我们定义了一个名为 “Parent” 的父组件和一个名为 “Child” 的子组件,并将它们组合在一起形成一个路由嵌套。在父组件中,我们使用了 “children” 属性来定义子路由,其中 “path” 属性指定了子路由的路径,“component” 属性指定了子路由所对应的组件。

7.3 路由嵌套的应用场景

路由嵌套可以用于实现复杂的页面结构和路由配置,例如:

  1. 在多级导航菜单中,可以通过路由嵌套实现多层嵌套和复杂的路由配置。
  2. 在电商网站上,可以通过路由嵌套实现商品分类、商品详情和购物车等功能的复杂路由配置。
  3. 在后台管理系统中,可以通过路由嵌套实现多个模块和子模块的复杂路由配置。

八、Vue 3 路由缓存

8.1 路由缓存的简介

Vue 3 中的路由缓存是一种机制,用于缓存路由映射,从而提高应用程序的性能和响应速度。当应用程序在不同路由之间切换时,Vue 3 会自动检查当前路由是否已经被缓存,如果是,则直接使用缓存中的值,而不是重新创建新的路由映射。这样可以大大减少应用程序的开销,从而提高性能和响应速度。

8.2 路由缓存的语法

Vue 3 中的路由缓存使用 router.cache 方法来创建和存储路由映射。该方法接受一个函数作为参数,该函数接受两个参数:当前路由和导航函数。返回一个缓存对象,该对象包含当前路由的映射。

例如,以下代码段演示了如何使用 router.cache 方法来缓存路由映射:

import { createPath } from 'vue-router';

export default {  
  path: createPath('/home'),  
  name: 'Home',  
  component: () => import('@/views/home/home.vue')  
}

const homeCache = await Vue.cache.load('home');

export default {  
  path: '/home',  
  name: 'Home',  
  component: () => import('@/views/home/home.vue'),  
  meta: {  
    cached: homeCache  
  }  
}

在上面的示例中,router.cache.load 方法用于从缓存中加载路由映射。meta: { cached: homeCache } 配置项用于将路由映射缓存到导航函数中。这样,每次导航到 /home 路由时,Vue 3 都会检查缓存中是否包含该路由映射,如果是,则直接使用缓存中的值,而不是重新创建路由映射。

8.3 路由缓存的应用场景

Vue 3 中的路由缓存可以用于许多场景,包括:

8.3.1 减少路由切换的开销

当应用程序中的路由映射非常多时,每次切换路由时,Vue 3 都需要重新创建新的路由映射,这会导致性能下降。使用路由缓存可以大大减少路由切换的开销,从而提高性能和响应速度。

8.3.2 缓存静态资源

当应用程序需要加载大量的静态资源 (例如图片、CSS 和 JavaScript 文件) 时,使用路由缓存可以显著提高应用程序的性能和响应速度。每次加载静态资源时,Vue 3 都会检查缓存中是否包含该资源,如果是,则直接从缓存中读取,而不是重新下载资源。

8.3.3 减少重定向的开销

当应用程序需要进行重定向时,例如从 /home 重定向到 /about,Vue 3 需要重新创建新的路由映射。使用路由缓存可以大大减少重定向的开销,从而提高性能和响应速度。

九、Vue 3 路由中的计算属性和监听器

9.1 路由中的计算属性和监听器

路由中的计算属性用于管理路由参数。例如,如果应用程序中的路由是 /user/:id,可以使用计算属性来管理 id 参数。计算属性的语法如下:

export default {  
  computed: {  
    userId() {  
      return this.$route.params.id;  
    }  
  }  
}

在上面的示例中,userId 计算属性返回路由参数 id 的值。每当路由参数发生变化时,计算属性都会重新计算并返回新的值。

9.2 路由中的计算属性和监听器的语法

路由中的监听器用于管理路由导航事件。例如,如果应用程序中的路由是 /user/:id,可以使用监听器来监听路由导航事件。监听器的语法如下:

import { createPath } from 'vue-router';

export default {  
  name: 'UserList',  
  path: createPath('/user'),  
  component: () => import('@/views/user/list.vue'),  
  beforeEnter(to, from, next) {  
    // 创建监听器,用于监听路由导航事件  
    const watch = {  
      transition: (to, from) => {  
        // 监听路由导航事件,用于更新用户 ID 的值  
        this.updateUserList();  
      }  
    };

    // 注册监听器  
    this.$router.push(to);

    // 进入路由导航前,触发一次更新用户列表的操作  
    next();  
  },  
  // 进入路由导航后,触发一次更新用户列表的操作  
  beforeExit(to, from, next) {  
    // 清除监听器  
    this.$router.push(to);  
  }  
}

在上面的示例中,beforeEnter 方法创建了一个监听器,用于监听路由导航事件。transition 属性用于更新用户列表,this.updateUserList 方法用于更新用户列表。每当路由导航时,updateUserList 方法都会重新计算用户列表,并重新渲染视图。

9.3 路由中的计算属性和监听器的应用场景

计算属性和监听器可以用于管理路由参数和路由导航事件。例如,如果应用程序中的路由是 /user/:id,可以使用计算属性来管理 id 参数,并使用监听器来管理路由导航事件。当用户点击导航按钮时,可以触发一个事件,用于更新计算属性和监听器,以更新用户列表。

另外,计算属性和监听器也可以用于管理其他状态,例如在用户登录时,可以使用计算属性来管理用户 ID 和权限信息,并使用监听器来管理用户登录后的状态。这样,应用程序可以更好地管理状态,并提高应用程序的性能和响应速度。

十、Vue 3 路由的常见问题及解决方案

10.1 路由导航守卫问题

问题描述:路由导航守卫无法正常执行或执行顺序不符合预期。

解决方案:检查路由守卫的定义和注册是否正确。在定义路由守卫时,需要按照 Vue 3 中的守卫函数命名方式进行命名,并将其注册到路由器实例中。另外,需要注意路由守卫的执行顺序,包括全局守卫和路由独享守卫的执行顺序。

10.2 路由参数传递问题

问题描述:路由参数传递失败,无法在组件中获取到路由参数。

解决方案:检查路由参数的定义和使用方式。在定义路由时,需要将路由参数定义在路由路径中,并使用“:”符号进行标识。在组件中获取路由参数时,需要使用$route.params对象进行获取,例如this.$route.params.id

10.3 路由缓存问题

问题描述:路由缓存导致组件无法正常更新。

解决方案:可以通过在路由配置中添加“meta”属性,来控制组件的缓存行为。例如,可以在需要缓存的路由中添加“meta:{keepAlive:true}”,来启用路由缓存功能。另外,也可以通过在路由切换时,手动清除组件的缓存数据来解决路由缓存问题。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

暗讽友商 昆仑万维大模型预告刺激股价

搭上AI风口&#xff0c;上市公司昆仑万维年内股价大涨217.56%&#xff0c;一时名声大噪。火了以后&#xff0c;昆仑万维的野心越来越大&#xff0c;喊出“All in AGI&#xff08;通用人工智能&#xff09;与AIGC”的豪言壮语。 在近期预告旗下大模型“天工”邀测的公告中&…

STL :双端队列容器 Deque

Deque #include<deque> using namesace std; 双端队列容器 &#xff1a;双向开口的连续线性空间&#xff1b; 擅长尾部和头部添加或删除元素&#xff1a;常数阶&#xff1b; 存储元素并不能保证所有元素都存储到连续的内存空间中&#xff1b; deque 是动态的以分段…

TiDB实战篇-TiDB配置

简介 熟系TiDB的配置相关。 TiDB的大体参数 系统配置对应的是TiDB-Server,PD和TiKV和TiDB-Server基本在集群配置里面配置。 系统配置 系统变量 | PingCAP 文档中心 集群配置 PD 配置文件描述 | PingCAP 文档中心 配置的存储位置 系统配置存储在TiKV中的&#xff0c;集…

如何免费恢复电脑上误删除的视频

虽然我们现在可以在单个硬盘驱动器上存储无数大型视频文件是件好事&#xff0c;但这也意味着单个用户错误或硬件/软件故障可能会立即抹去数小时的记忆&#xff0c;而没有任何明显的方法可以恢复它们。在本文中&#xff0c;我们提供了一个快速的分步视频恢复指南&#xff0c;以帮…

【音视频】利用ffmpeg实现:音视频的提取,rtmp推流等

目录 可列出电脑的设备 音频桌面视频&#xff0c;存mp4 录声音 推流到服务器 音频桌面视频&#xff0c;推流到服务器 音频笔记本摄像头&#xff0c;推流到服务器 参考资料 可列出电脑的设备 输入下面的语句即可列出电脑的设备 ffmpeg -list_devices true -f dshow -i dum…

(链表)相交链表(双指针法)

文章目录前言&#xff1a;问题描述&#xff1a;问题解析&#xff1a;代码实现&#xff1a;总结&#xff1a;前言&#xff1a; 此篇是关于链表的经典练习题。 问题描述&#xff1a; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节…

【测试开发篇9】Junit框架

目录 一、认识Junit框架 Junit和Selenium的关系是什么 导入Junit框架common-io包 二、Junit框架的使用 2.1Junit有哪些常用注解 2.1.1Test注解 2.1.2BeforeEach 2.1.3BeforeAll 2.1.4AfterAll 2.1.5AfterEach 2.2Junit的断言 Assertions.assertEquals(期待值&#…

小白推荐|使用git建立自己的代码仓库

1 git 1.1 什么是git 版本控制工具&#xff0c;用于团队协作与项目管理 1.2 git 安装教程 step1&#xff1a;进入git下载官网Git for Windows step2&#xff1a;点击Download step3&#xff1a;打开下载好的文件&#xff0c;按照下面图片一步一步安装 剩下的一直点Next就完…

ansible-playbook task 指定位置执行

文章目录执行顺序指定执行--tags–start-at--skip-tags--step混合执行顺序 1.检查play中是否存在pre_tasks定义&#xff0c;存在的话则顺序执行pre_tasks中定义的所有tasks 2.如果存在pre_tasks定义&#xff0c;则检查是否存在触发handler&#xff0c;如存在则顺序执行相关触发…

Java中的锁是什么意思,有哪些分类?

Java锁&#xff08;Java Locks&#xff09;是Java编程语言中用于实现多线程同步和互斥的机制。在并发编程中&#xff0c;多线程同时访问共享资源可能导致竞态条件&#xff08;Race Condition&#xff09;和其他并发问题&#xff0c;Java锁提供了一种控制多线程并发访问的方式&a…

FluxMQ—物联网高性能MQTT网关

FluxMQ—物联网高性能MQTT网关 随着物联网技术的快速发展&#xff0c;人们越来越意识到实时、可靠、安全的数据传输对于智能化的生产与生活的重要性。因此&#xff0c;市场对于高性能的物联网数据传输解决方案有着强烈的需求。FluxMQ正是为满足这一需求而诞生的一款高性能、可…

Adobe 观察 |最低工资标准来了,学会这几招,让加薪更简单

最新调整后的全国各地区最低工资标准情况来了&#xff01; 人力资源和社会保障部新发布的数据显示&#xff0c;截至今年4月1日&#xff0c;共有15个地区第一档月最低工资标准在2000元及以上&#xff0c;分别是上海&#xff08;2590元&#xff09;、深圳&#xff08;2360元&…

Pandas 2.0发布——更快的速度更低的内存占用

【重磅】Pandas 2.0发布&#xff01;更快的速度更低的内存占用&#xff01; Pandas 是一个用于操作数据的 Python 库&#xff0c;在 Python 开发人员中非常流行。尤其在数据科学和机器学习领域中&#xff0c;Pandas已经成为不可或缺的基础库。 4月3日&#xff0c;Pandas 2.0正…

ESLint 与 Prettier 配合解决代码格式问题

可以了解下Prettier&#xff0c;官网&#xff1a;Prettier 中文网 Prettier 是一个“有态度”的代码格式化工具 Prettier常见的一些配置&#xff1a; tabWidth&#xff1a;指定缩进宽度&#xff0c;默认为 2&#xff0c;建议设置为 4&#xff1b;printWidth&#xff1a;指定代…

MyBatis核心配置文件详解

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><environments default"…

页面布局基础知识

一、布局方案 1、什么是静态布局 概念 静态布局&#xff0c;也称为固定布局&#xff0c;是一种传统网页设计。页面布局使用绝对长度单位&#xff0c;采用固定宽度。忽略浏览器实际&#xff0c;网页布局始终按照最初写代码时的布局来显示。 优点&#xff1a;简单 缺点&#xf…

可视化图表组件体系的构建(内附全套开源文件)

Part01————————前言 EasyV作为一个低代码数字孪生可视化搭建平台&#xff0c;其图表组件作为可视化项目建设的基础构成发挥着重要的作用。 经过多年可视化项目交付经验&#xff0c;沉淀了一套形态多样、样式精细、高配置度的数据可视化图表。 Figma开源文件社区获取入…

【MySQL | 进阶篇】05、MySQL 视图、触发器讲解

目录 一、视图 1.1 介绍 1.2 语法 1.2.1 演示示例 1.3 检查选项 1.3.1 CASCADED 级联 1.3.2 LOCAL 本地 1.3.3 示例演示 1.4 视图的更新 1.4.1 示例演示 1.5 视图作用 1.6 案例 二、触发器 2.1 介绍 2.2 语法 2.3 案例 2.3.1 插入数据触发器 2.3.2 修改数据…

国内版 ChatGPT值不值得上手----PlumGPT测评

前言&#xff1a;什么是PlumGPT&#xff08;国内版的chatgpt&#xff09;&#xff0c;PlumGPT国内版ChatGPT是一个基于GPT-3.5算法的人工智能聊天机器人&#xff0c;能够通过自然语言与用户交互&#xff0c;提供各种服务和解答各种问题。本文将对PlumGPT国内版ChatGPT进行全面测…

NetSuite GPT的辅助编程实践

作为GPT综合症的一种表现&#xff0c;我们今朝来探究下GPT会不会抢了我们SuiteScript的编程饭碗&#xff0c;以及如何与之相处。以下内容来自我个人的实践总结。 我们假设一个功能场景&#xff1a; 为了让用户能够在报价单上实现“一键多行”功能&#xff0c;也就是在报价中可…