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

Vue Router的深度解析

引言

在现代Web应用开发中,客户端路由已成为实现流畅用户体验的关键技术。与传统的服务器端路由不同,客户端路由通过JavaScript在浏览器中控制页面内容的更新,避免了页面的全量刷新。Vue Router作为Vue.js官方的路由解决方案,以其简洁和强大的功能,成为构建单页应用的首选工具。

客户端路由允许用户在不同的视图间无缝切换,同时保持应用的响应性和交互性。Vue Router的集成,不仅简化了页面导航的逻辑,还增强了应用的可维护性和扩展性,是前端开发者必须掌握的技能之一。

Vue Router简介


Vue Router是一个专为Vue.js应用程序设计的路由管理器。它允许开发者在单页应用中构建复杂的页面路由逻辑,通过定义URL和组件的映射关系,实现页面的动态加载和导航。Vue Router的核心

 创建基本的Vue Router实例

安装Vue Router

  1. 通过npm或yarn安装
    如果你是使用npm作为包管理器,可以通过以下命令安装Vue Router:

    npm install vue-router

    使用yarn的话,命令如下:

    yarn add vue-router
  2. Vue 2和Vue 3的兼容性
    确保你安装的Vue Router版本与你的Vue.js版本兼容。截至2024年,Vue Router 4是为Vue 3设计的。

  3. 安装相应的Vue版本
    如果你的项目中还没有Vue,需要先安装Vue。例如,使用npm安装Vue 3:

    npm install vue@next

创建Vue Router实例

  1. 导入Vue和Vue Router
    在你的项目入口文件(通常是main.jsapp.js)中,导入Vue和Vue Router:

    import Vue from 'vue'; import VueRouter from 'vue-router';
  2. 使用Vue Router
    告诉Vue使用Vue Router插件:

    Vue.use(VueRouter);
  3. 定义路由
    创建路由对象数组,每个路由对象至少包含pathcomponent属性:

    const routes = [ { path: '/', component: Home },{ path: '/about', component: About }
    ];

  4. 创建Router实例
    使用定义的路由数组创建Vue Router实例:

    const router = new VueRouter({ routes, // 简写,相当于 routes: routesmode: 'history' // 可选,使用HTML5 History模式 });

  5. 在Vue实例中使用Router
    将创建的Router实例传递给Vue实例:

    new Vue({ router, render: h => h(App) // 渲染根组件 }).$mount('#app');

  6. 使用Router-Link和Router-View
    在Vue组件中使用<router-link>创建导航链接,使用<router-view>作为渲染组件的出口:

    <router-link to="/">Home</router-link> 
    <router-link to="/about">About</router-link> 
    <router-view></router-view>

路由对象的结构

在Vue Router中,路由是通过路由对象来定义的。每个路由对象代表应用中的一个页面或视图。路由对象通常包含以下属性:

  • path: 字符串,表示URL中的路径部分,用于匹配浏览器的URL。
  • component: 组件,当路由匹配成功时,对应的组件将被渲染。
  • name: 可选,字符串,给路由命名,用于在导航时可以通过名称引用路由。
  • children: 可选,数组,包含子路由的路由对象数组,用于定义嵌套路由。
  • meta: 可选,对象,可以包含任何自定义数据,通常用于路由守卫中。

路径(path)和组件(component)的映射

路由对象通过path属性定义URL路径,通过component属性定义对应的视图组件。Vue Router会根据当前URL的路径来匹配路由对象,并渲染对应的组件。例如:

const routes = [ { path: '/home', component: Home },{ path: '/about', component: About }];

在这个例子中,访问/home路径时,Home组件将被渲染;访问/about路径时,About组件将被渲染。

动态路由和参数传递

Vue Router支持动态路由,允许你在路径中定义参数。这些参数在URL中以变量的形式出现,Vue Router会将它们作为参数传递给对应的组件。

  • 动态路由的定义:在path属性中使用冒号:来定义参数:

    { path: '/user/:id', component: User }

  • 参数的传递:当URL匹配到/user/:id时,例如/user/123id参数的值123将作为属性传递给User组件。

  • 组件中访问参数:在组件内部,可以通过this.$route.params来访问路由参数:

  • this.$route.params.id // '123'

  • 使用路由参数的组件

    const User = { template: '<div>User {{ $route.params.id }}</div>' }
    //渲染的HTML将是<div>User 123</div>

    路由组件

路由视图组件的创建

在Vue Router中,路由组件是对应于路由对象的组件,它们定义了当路由匹配时应该渲染的视图。创建路由组件通常遵循以下步骤:

  1. 定义组件:使用Vue的组件定义方式,创建一个或多个组件来表示不同的视图。

    const Home = { template: '<h1>Home Page</h1>' };
    const About = { template: '<h1>About Page</h1>' };
    //一般正经开发是在单独的文件定义组件,然后用import导入,此处只是为了方便举例子
    

  2. 注册路由:在Vue Router的路由配置中,将路径与组件关联起来。

    const routes = [ { path: '/', component: Home }, { path: '/about', component: About } ];

  3. 创建Router实例:使用配置好的路由数组创建Vue Router实例。

    const router = new VueRouter({ routes });

使用<router-view>组件渲染匹配的路由组件

<router-view>是Vue Router提供的组件,用于渲染当前路由匹配的组件。它的工作原理如下:

  1. 在模板中使用<router-view>:在你的应用的根组件或任何子组件的模板中,添加<router-view>标签。

    <div id="app"> <router-view></router-view> </div>
    //相当于一个占坑的,谁来谁就在这个地方渲染

  2. 匹配路由:当用户导航到不同的URL时,Vue Router会查找匹配的路由,并渲染对应的组件。

  3. 渲染组件<router-view>的位置将被替换为当前匹配的组件的实例。

  4. 嵌套路由<router-view>也支持嵌套路由。在父组件中使用<router-view>,可以在子组件中进一步使用<router-view>来渲染更深层次的路由组件。

  5. 命名视图和编程式导航:除了基本的使用,<router-view>还支持命名视图和可以通过编程方式进行导航。

模式选择

Vue Router提供了两种路由模式,分别是hash模式和history模式,它们影响着应用的URL表现和行为。

  1. Hash模式
    hash模式是Vue Router的默认模式。在这种模式下,URL使用#符号来标识应用的不同视图。例如,http://example.com/#/home中的/home部分就是hash。这种模式的好处是兼容性好,因为它依赖于浏览器的hashchange事件,不受HTML5 History API的限制。

  2. History模式(实际开发常用)
    history模式使用HTML5 History API来实现无hash的URL。例如,http://example.com/home。这种模式提供了更美观的URL,但需要服务器配置以支持HTML5 pushState。如果服务器没有正确配置,可能会出现404错误。

模式选择对SEO和用户体验的影响

  1. SEO(搜索引擎优化)

    • Hash模式:由于URL包含#,传统的服务器端SEO可能不会很好地处理这种URL,因为搜索引擎可能不会解析hash之后的路径。
    • History模式:提供了更符合SEO标准的URL,有利于搜索引擎爬虫更好地索引应用的不同页面。
  2. 用户体验

    • Hash模式:用户在浏览器中输入或分享URL时,URL看起来包含#,可能不够美观,但对用户体验的影响较小。
    • History模式:提供了更自然的URL,用户在浏览器中输入或分享URL时,看起来更加专业和美观,提升了用户体验。
  3. 服务器配置
    使用history模式时,需要确保服务器返回应用的入口页面,无论URL路径如何变化。这通常通过服务器重定向配置实现,例如,在Node.js服务器上,可以使用以下配置:

    const express = require('express'); 
    const path = require('path');const app = express(); 
    app.use(express.static(path.join(__dirname, 'dist'))); 
    app.get('*', (req, res) => {res.sendFile(path.join(__dirname, 'dist', 'index.html'));});

  4. Vue Router配置
    在Vue Router中,可以通过mode选项选择路由模式:

    const router = new VueRouter({ mode: 'history', // 或 'hash' routes });

嵌套路由的概念和使用场景

概念
嵌套路由是Vue Router允许你在组件内进一步定义子路由的能力。这意味着你可以创建一个多层次的路由结构,其中每个组件都可以有自己的子视图。

使用场景
嵌套路由在以下场景中非常有用:

  • 应用具有多层级导航结构。
  • 需要在同一个页面内展示多个视图。
  • 需要共享相同布局或导航组件的不同页面。

如何配置和使用嵌套路由

  1. 定义父组件路由
    首先,你需要定义一个父组件的路由,就像定义任何其他路由一样。

    // 定义一个父组件的路由const routes = [ { path: '/user',component: UserLayout, // 假设这是用户页面的布局组件 children: [ // 子路由 { path: '', component: UserHome },{ path: 'profile', component: UserProfile },{ path: 'posts', component: UserPosts } ] } ];

  2. 配置子路由
    在父组件的children属性中定义子路由。这些子路由将继承父路由的路径前缀。

  3. 创建父组件
    父组件通常是一个具有<router-view>的布局组件,用于包裹其子组件。

    <!-- UserLayout.vue --> 
    <template> <div> <router-view></router-view> <!-- 渲染子组件 --> </div>
    </template>

  4. 导航到嵌套路由
    使用<router-link>或编程式导航到嵌套路由时,URL将反映嵌套结构。

    <!-- 导航链接到 /user/profile --><router-link to="/user/profile">Profile</router-link>
    //某种程度上来讲和a标签很像

  5. 编程式导航
    在JavaScript代码中,可以使用router.pushrouter.replace进行编程式导航到嵌套路由。

    this.$router.push('/user/profile');

  6. 访问子路由组件
    子路由组件可以通过this.$route访问当前的路由信息,包括来自父路由的参数。

  7. 处理动态路由
    嵌套路由也支持动态路径。如果父路由和子路由都有动态部分,子路由的组件将接收到从URL中解析出的参数。

嵌套路由是Vue Router强大功能的一部分,它允许开发者构建复杂的应用结构,同时保持组件的组织和可维护性。

结语

通过本文的探讨,我们深入了解了Vue Router在现代Web应用开发中的核心作用。从基础的安装和配置,到复杂的嵌套路由和模式选择,Vue Router提供了一整套解决方案,以满足构建单页应用的各种需求。它不仅简化了前端路由的管理,还极大地提升了应用的性能和用户体验。

相关文章:

Vue Router的深度解析

引言 在现代Web应用开发中&#xff0c;客户端路由已成为实现流畅用户体验的关键技术。与传统的服务器端路由不同&#xff0c;客户端路由通过JavaScript在浏览器中控制页面内容的更新&#xff0c;避免了页面的全量刷新。Vue Router作为Vue.js官方的路由解决方案&#xff0c;以其…...

YOLO-V2

一、V2版本细节升级 1、YOLO-V2&#xff1a; 更快&#xff01;更强 1.1 做的改进内容 1. YOLO-V2-Batch Normalization V2版本舍弃Dropout&#xff0c;卷积后每一层全部加入Batch Normalization网络的每一层的输入都做了归一化&#xff0c;收敛相对更容易经过Batch Norma…...

pmp考试的通过标准是什么?

PMP考试的是否通过并不是依据类似其他考试的数值成绩&#xff0c;是通过考生收到邮件通知后去主动查询具体的页面得知的。查询页除了电子证书的下载方式&#xff0c;还有成绩报告单的选项以及成绩饼状图&#xff0c;具体如下&#xff1a; 页面中显示“PASS”表示考试通过。 显…...

不懂PyQt5垂直布局?只需3分钟即可学会

PyQt5中实现垂直布局&#xff0c;主要使用QVBoxLayout类。该布局管理器将子控件垂直排列&#xff0c;并可以根据需要自动调整大小。使用QVBoxLayout可以方便地构建从上到下排列的界面元素。 import sys from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget, QPus…...

从零开始实现大语言模型(二):文本数据处理

1. 前言 神经网络不能直接处理自然语言文本&#xff0c;文本数据处理的核心是做tokenization&#xff0c;将自然语言文本分割成一系列tokens。 本文介绍tokenization的基本原理&#xff0c;OpenAI的GPT系列大语言模型使用的tokenization方法——字节对编码(BPE, byte pair en…...

生物分子生物学实验过程的自动化与智能监控系统设计

开题报告&#xff1a;生物分子生物学实验过程的自动化与智能监控系统设计 一、引言 随着生物科学技术的飞速发展&#xff0c;生物分子生物学实验在科研、医疗、农业等领域的应用日益广泛。然而&#xff0c;传统的生物分子生物学实验过程大多依赖于人工操作&#xff0c;存在操…...

linux的shell脚本编程详解

Shell 脚本是一种用于自动化任务的脚本语言&#xff0c;在 Linux 和其他类 Unix 操作系统中非常流行。它通常用于任务自动化、系统管理和批处理。编写 Shell 脚本并使其自动化编译过程&#xff08;例如使用 gcc 编译 C/C 程序&#xff09;是一种常见的任务。 以下是一个详细的…...

Redis 7.x 系列【11】数据类型之位图(Bitmap)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 基本命令2.1 SETBIT2.2 GETBIT2.3 BITCOUNT2.4 BITPOS2.5 BITFIELD2.6 BITF…...

如何评定旅游卡的品质与服务?

评定旅游卡的品质与服务&#xff0c;可以从以下几个关键方面进行综合考量&#xff1a; 公司实力与资质&#xff1a;选择有实力、资质齐全的公司发行的旅游卡。查看公司背景&#xff0c;确认其是否长期稳定运营&#xff0c;是否具有旅游行业的专业资质&#xff0c;如旅行社许可证…...

适合学生暑假适用的护眼大路灯有哪些?五款好用护眼灯分享!

在护眼领域&#xff0c;护眼大路灯已经成为越来越多人的选择。这种具备实力的工具可以有效地缓解用眼疲劳、改善光线环境&#xff0c;是学生党和办公族的必备神器。然而&#xff0c;市面上的护眼大路灯品牌众多&#xff0c;如何选择一款性价比高、品质优良的产品呢&#xff1f;…...

linux服务器 部署jenkins

在 Linux 服务器上部署 Jenkins 通常包括以下几个步骤&#xff1a; 更新系统软件包&#xff1a; sudo apt update sudo apt upgrade 安装 Java&#xff1a; Jenkins 需要 Java 运行时环境。推荐使用 OpenJDK 11。 sudo apt install openjdk-11-jdk 添加 Jenkins 软件源并导入…...

电商控价:系统监测的必要性与优势

在品牌的发展进程中&#xff0c;会遭遇各种各样的渠道问题&#xff0c;控价乃是其中颇为关键的一环。品牌进行控价的目的无疑是为了妥善治理低价链接&#xff0c;低价链接的发现途径可以是人工&#xff0c;也可以是系统。力维网络在为上百个品牌提供服务的过程中察觉到&#xf…...

港股下半年能恢复上涨趋势吗?

今日港股两大指数涨跌不一&#xff0c;早盘盘初恒指冲高&#xff0c;涨幅一度扩大至1%。截至收盘&#xff0c;香港恒生指数涨0.57%。板块方面&#xff0c;电力、航空、石油、内险股、燃料电池、环保等板块涨幅居前&#xff1b;互动媒体与服务、生物科技、汽车零部件、新经济概念…...

软件测试项目实战:银行贷款业务测试介绍-2

1、利息计算 正常利息贷款本金*借款天数*贷款年利率/360 罚息逾期本金*逾期天数*逾期年利率/360 复利逾期利息*逾期天数*逾期年利率/360 2、贷款五级分类 正常贷款&#xff1a;正常及逾期60天以内 关注贷款&#xff1a;逾期60天及以上&#xff0c;不足90天 次级贷款&#xff1…...

如何将Hive表的分区字段插入PG表对应的时间戳字段?

文章目录 1、背景描述2、场景分析 1、背景描述 数据仓库的建设通常是为业务和决策服务的。在数仓开发的应用层阶段&#xff0c;BI可以直接从主题层/业务层取数&#xff0c;而前端需要根据具体的作图需求通过后端查询数据库 作图的指标需要根据主题层/业务层做查询计算&#xf…...

Spring Boot与MyBatis的集成应用

Spring Boot与MyBatis的集成应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来聊聊Spring Boot与MyBatis的集成应用。MyBatis是一款优秀的持久层框…...

在昇腾服务器上使用llama-factory对baichuan2-13b模型进行lora微调

什么是lora微调 LoRA 提出在预训练模型的参数矩阵上添加低秩分解矩阵来近似每层的参数更新&#xff0c;从而减少适配下游任务所需要训练的参数。 环境准备 这次使用到的微调框架是llama-factory。这个框架集成了对多种模型进行各种训练的代码&#xff0c;少量修改就可使用。 …...

Kafka 管理TCP连接

生产者管理TCP连接 Kafka生产者程序概览 Kafka的Java生产者API主要的对象就是KafkaProducer。通常我们开发一个生产者的步骤有4步&#xff1a; 第1步&#xff1a;构造生产者对象所需的参数对象。 第2步&#xff1a;利用第1步的参数对象&#xff0c;创建KafkaProducer对象实例…...

electron教程(一)创建项目

一、方式① 根据官网描述将electron/electron-quick-start项目克隆下来并启动 electron/electron-quick-start地址&#xff1a; GitHub - electron/electron-quick-start: Clone to try a simple Electron app git clone https://github.com/electron/electron-quick-start…...

如何在Oracle、MySQL、PostgreSQL上终止会话或取消SQL查询

How to Kill session or Cancel SQL query on Oracle , MySQL, PostgreSQL 数据库维护过程中难免会遇到一些不正常的SQL或会话进程正在占用系统大量资源&#xff0c;临时需要终止查询或kill会话&#xff0c;在Oracle, MySQL, Postgresql数据库中不同的操作。 Oracle KILL会话…...

3、FTL基本工作过程

上文描述了FTL的四大功能&#xff0c;这里简述一下每个功能的含义。 地址转换简述 FTL要维护一个地址转换表&#xff0c;这个转换表是主机读/写硬盘的逻辑地址到硬盘实际物理地址的转换关系。 假如SSD的容量是128G&#xff0c;SSD逻辑块的大小是4KB&#xff0c;那SSD的逻辑块…...

微信小程序的跳转页面

在微信小程序中&#xff0c;要实现从当前页面返回到指定页面的功能&#xff0c;通常不直接使用“返回上一页”的逻辑&#xff0c;而是利用小程序的页面栈管理和navigateBack或者重新定向到目标页面的API。下面我将介绍两种主要的方法&#xff1a; 方法一&#xff1a;使用 navi…...

深入理解 Java 中的线程间通信:`wait()`, `notify()`, `notifyAll()`

引言 在多线程编程中&#xff0c;线程间通信是一个重要且复杂的主题。Java 提供了一套基本的机制来实现线程间通信&#xff0c;即使用 wait(), notify(), 和 notifyAll() 方法。这些方法由 Object 类提供&#xff0c;用于协调多个线程对共享资源的访问。本文将详细介绍这些方法…...

23种设计模式【创建型模式】详细介绍之【单例模式】

23种设计模式【创建型模式】详细介绍之【单例模式】 设计模式的分类和应用场景总结单例模式1. 概述2. 实现方式2.1 饿汉式单例模式2.2 懒汉式单例模式&#xff08;非线程安全&#xff09;2.3 懒汉式单例模式&#xff08;线程安全&#xff09; 3. 单例模式的优缺点3.1 优点3.2 缺…...

某汽车配件制造公司任职资格体系项目成功案例纪实

——基于岗位特点和核心能力要求&#xff0c;分层分级能力测评&#xff0c;实现个性化人才培养 【客户行业】生产制造&#xff1b;汽车配件制造 【问题类型】任职资格体系建立&#xff1b;人才管理系统 【客户背景】 某汽车配件制造公司是一家专注于汽车配件研发、生产和销…...

【Linux】生物信息学常用基本命令

wget网址用于直接从网上下载某个文件到服务器&#xff0c;当然也可以直接从网上先把东西下到本地然后用filezilla这个软件来传输到服务器上。 当遇到不会的命令时候&#xff0c;可以使用man “不会的命令”来查看这个命令的详细信息。比如我想要看看ls这个命令的详细用法&…...

React Native V0.74 — 稳定版已发布

嗨,React Native开发者们, React Native 世界中令人兴奋的消息是,V0.74刚刚在几天前发布,有超过 1600 次提交。亮点如下: Yoga 3.0New Architecture: Bridgeless by DefaultNew Architecture: Batched onLayout UpdatesYarn 3 for New Projects让我们深入了解每一个新亮点…...

Python面试宝典第4题:环形链表

题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。如果存在环 &#xff0c;则返回 true 。 否则&#xff0c;返回 false 。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xf…...

Kubernetes (K8s) 底层原理

Kubernetes (K8s) 的底层原理涉及多个关键组件和概念&#xff0c;确保容器化应用程序的自动化部署、扩展和管理。以下是 Kubernetes 的底层原理及其关键组件的详细描述。 核心组件 Etcd 功能&#xff1a;分布式键值存储&#xff0c;用于存储集群的所有数据&#xff0c;包括配置…...

解析Kotlin中的委托(包括类委托,属性委托)【笔记摘要】

1.委托模式 委托模式&#xff1a;操作对象不会去处理某段逻辑&#xff0c;而是会把工作委托给另外一个辅助对象去处理。 例如我们要设计一个自定义类的来实现Set&#xff0c;可以将该实现委托给另一个对象&#xff1a; class MySet<T> (val helperSet: HashSet<T>…...

vue3+ts+uniapp+vite+pinia项目配置

开发环境&#xff1a; node >18&#xff0c;npm >8.10.2&#xff0c;vue < 3.2.31 安装项目 npx degit dcloudio/uni-preset-vue#vite-ts vue3-uniapp 1、引入样式规范 npm add -D eslint eslint-config-airbnb-base eslint-config-prettier eslint-import-resolv…...

大数据开发语言 Scala(四):面向对象编程

目录 1. 概述 2. 面向对象编程的基本概念 2.1 类和对象 2.2 继承和多态 2.3 封装和访问控制 3. 面向对象编程在大数据开发中的应用 3.1 Spark中的面向对象编程 3.2 面向对象编程在数据清洗和预处理中 3.3 面向对象编程在机器学习中的应用 4. 面向对象编程的高级特性 …...

C++ //练习 14.31 我们的StrBlobPtr类没有定义拷贝构造函数、赋值运算符及析构函数,为什么?

C Primer&#xff08;第5版&#xff09; 练习 14.31 练习 14.31 我们的StrBlobPtr类没有定义拷贝构造函数、赋值运算符及析构函数&#xff0c;为什么&#xff1f; 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 解释&#xff1a; 因为…...

通配符和正则表达式之间的关系

通配符和正则表达式&#xff08;正则&#xff09;都是用于匹配字符串的工具&#xff0c;但它们的复杂性和用途有所不同。下面是它们之间的主要关系和区别&#xff1a; 通配符 通配符主要用于简单的模式匹配&#xff0c;常见于文件系统操作中&#xff0c;例如在命令行中查找文…...

GY-30光照传感器软件I2C方式驱动代码,基于STM32Cube

GY-30光照传感器的具体资料可以去淘宝搜索然后问卖家要&#xff0c;网上也有&#xff0c;所以这里我就不多嘴了。 VCC连接3到5伏电压&#xff0c;根据文件开头的描述在STM32CubeMX中配置好外设。 STM32Cube开发方式就是4个字“简单直接”&#xff0c;直接上代码。 gy30.h #…...

双相元编程:一种新语言设计方法

本文讨论了编程语言的一种趋势&#xff0c;即允许相同的语法表达 在两个不同阶段或环境&#xff08;上下文&#xff09;中执行的计算同时保持跨阶段&#xff08;上下文&#xff09;的一致行为。这些阶段通常在时间上&#xff08;运行时间&#xff09;或空间上&#xff08;运行…...

基于SpringBoot校园外卖配送系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…...

茗鹤APS高级计划排程系统,在集团多工厂协同生产下的应用

随着业务规模的扩大和市场的全球化&#xff0c;越来越多的企业选择“总部多工厂基地”的模式&#xff0c;此种模式大幅提升企业的产能与产量&#xff0c;有效分散风险。然后&#xff0c;与之而来的是对企业的管理提出更高的管理要求。多个生产基地不仅面临集团下发的周期性计划…...

分享六款免费u盘数据恢复工具,U盘恢复工具集合【工具篇】

U盘里面的数据丢失了怎么找回&#xff1f;随着数字化时代的深入发展&#xff0c;U盘已成为我们日常生活中不可或缺的数据存储工具。然而&#xff0c;由于各种原因&#xff0c;如误删除、格式化、病毒攻击等&#xff0c;U盘中的数据可能会丢失&#xff0c;给用户带来极大的困扰。…...

Linux 的启动流程

第一步、加载内核 操作系统接管硬件以后&#xff0c;首先读入 /boot 目录下的内核文件。 以我的电脑为例&#xff0c;/boot 目录下面大概是这样一些文件&#xff1a; $ ls /bootconfig-3.2.0-3-amd64config-3.2.0-4-amd64grubinitrd.img-3.2.0-3-amd64initrd.img-3.2.0-4-amd6…...

思维导图插件--jsMind的使用

vue引入jsmind&#xff08;右键菜单&#xff09;_jsmind.menu.js-CSDN博客 第一版 vue-JsMind思维导图实现&#xff08;包含鼠标右键自定义菜单&#xff09;_jsmind 右键菜单-CSDN博客 // 新增节点addNode() {console.log(this.get_selected_nodeid());this.get_selected_…...

mac上使用finder时候,显示隐藏的文件或者文件夹

默认在finder中是不显示隐藏的文件和文件夹的&#xff0c;但是想创建.gitignore文件&#xff0c;并向里面写入内容&#xff0c;即便是打开xcode也是不显示这几个隐藏文件的&#xff0c;那有什么办法呢&#xff1f; 使用快捷键&#xff1a; 使用finder打开包含隐藏文件的文件夹…...

泰雷茲具有首个通过FIPS 140-3 三级认证的HSMs

泰雷兹LunaHsm是业界首款通过FIPS140-33级认证的解决方案&#xff0c;安策引进泰雷兹HSM产品可以帮助您满足您的数据安全合规性需求&#xff0c;阻力企业提高竞争力。 安策提供泰雷茲ThalesLunaHSMs成为首个通过FIPS140-3三级认证的硬件安全模块图 我们很高兴地宣布&#xff0c…...

美术馆预约小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;展品信息管理&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;美术馆管理&#xff0c;基础数据管理&#xff0c;论坛管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;美术馆&#xff…...

序列化Serializable

一、传输对象的方式 将对象从内存传输到磁盘进行保存&#xff0c;或者进行网络传输&#xff0c;有两种方式&#xff1a; 实现Serializable接口&#xff0c;直接传输对象转成json字符串后&#xff0c;进行字符串传输 二、直接传输对象 implements Serializable Data Equal…...

编写静态库

一、静态库 1.制作完成整体目录结构 2.首先创建mymath.c和mymath.h 3.编写Makefile 4.创建测试的main函数 test文件夹 先把lib移到test文件夹里面 4.编译链接 gcc main.c -I ./lib/include/ -L ./lib/mymathlib/ -l mymath 5.形成可执行程序a.out 要是不想执行第四步那么麻烦…...

hive的表操作

常用的hive命令 切换数据库use test;查询表的建表信息show create table 数据库名称.表名;查看表的类型信息desc formatted 数据库名称.表名; 删除内部表 drop table 数据库名称.表名; 先启动hdfs &#xff0c;mysql &#xff0c; hiveservice2&#xff0c;beeline CREATE [EX…...

基于多视点编码光场的全景三维重建方法

欢迎关注GZH《光场视觉》 摘要&#xff1a;在基于光场的一系列应用中&#xff0c;目标的三维重建是基础且关键的任务。普通光场只能重建单一视角而无法重建全景&#xff0c;并且在纹理特征匮乏的区域也无法生成准确的三维信息。针对以上问题&#xff0c;提出一种基于多视点编码…...

Spring Boot中的分布式文件系统

Spring Boot中的分布式文件系统 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将探讨如何在Spring Boot中实现分布式文件系统的搭建和应用…...

three.js地理坐标系有哪些,和屏幕坐标系的转换。

坐标系很好理解&#xff0c;就是点线面体的位置&#xff0c;一个点是一个坐标&#xff0c;一条线段2个坐标&#xff0c;一个矩形四个坐标&#xff0c;一个立方体8个坐标&#xff0c;three.js面对的是三维空间&#xff0c;屏幕则是二维的&#xff0c;这就面临着转换问题&#xf…...

前端面试题7(单点登录)

如何实现单点登录 单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;是一种允许用户在多个应用系统中只需登录一次&#xff0c;就可以访问所有相互信任的应用系统的认证技术。实现前端单点登录主要依赖于后端的支持和一些特定的协议&#xff0c;如OAuth、Ope…...

昇思25天学习打卡营第14天|ResNet50迁移学习

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) 在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少有人会从头开始训练整个网络。普遍的做法是&#xff0c;在一个非常大的基础数据集上训练得到一个预训练模型&#xff0c;然…...

如何在Windows上使用Docker搭建PHP开发环境

前言 在本地搭建开发环境我好像没几年就要折腾一次&#xff0c;因为本地开发电脑使用的是windows&#xff0c;早些年的时候&#xff0c;用过很多类似WAMP之类的东西&#xff0c;但最终都有或多或少不满意的地方&#xff0c;前两年的时候&#xff0c;还折腾过WSL&#xff0c;但…...

从零开始学数据结构系列之第四章《图的基本概念和术语》

文章目录 有向图无向图简单图其他图往期回顾 有向图 简单来说就是顶点之间的连接有方向 ​   若E是有向边(也称弧)的有限集合时&#xff0c;则图G为有向图。弧是顶点的有序对&#xff0c;记为<v, w>&#xff0c;其中v,w是顶点&#xff0c;v称为弧尾&#xff0c;w称为…...

Using a text embedding model locally with semantic kernel

题意&#xff1a;在本地使用带有语义核&#xff08;Semantic Kernel&#xff09;的文本嵌入模型 问题背景&#xff1a; Ive been reading Stephen Toubs blog post about building a simple console-based .NET chat application from the ground up with semantic-kernel. Im…...

Qt 加载图片的几种方式 以及加载 loading

项目中经常使用加载图片&#xff1a; 常用有两种方式&#xff1a; 1.使用 QWidget 加载图片&#xff1a; 效果&#xff1a; 样例源码&#xff1a; int pict_H ui->widgetImage->height();int pict_W ui->widgetImage->width();ui->widgetImage->setFixe…...

长安马自达:EZ-6只是开始,每年推出一款新产品

在重庆车展期间,笔者采访了长安马自达汽车有限公司执行副总裁邓智涛与MAZDA EZ-6设计师星野忠男,对其合资模式2.0概念,以及最新车型MAZDA EZ-6的市场定位与未来规划进行了深度解析。邓智涛首先回顾了中国合资车企40年的发展历程,并阐述了合资模式2.0的诞生背景。他指出,中…...

数据结构 | 详解二叉树——堆与堆排序

&#x1f95d;堆 堆总是一棵完全二叉树。 大堆&#xff1a;父节点总是大于子节点。 小堆&#xff1a;父节点总是小于子节点。 注意&#xff1a;1.同一个节点下的两个子节点并无要求先后顺序。 2.堆可以是无序的。 &#x1f349;堆的实现 &#x1f334;深度剖析 1.父节点和子…...

Flutter 中的 FractionalTranslation 小部件:全面指南

Flutter 中的 FractionalTranslation 小部件&#xff1a;全面指南 在 Flutter 的丰富布局库中&#xff0c;FractionalTranslation 是一个允许你将子组件沿着一个轴或两个轴进行部分平移的动画小部件。这种类型的平移通常用于创建滑动效果&#xff0c;如卡片的滑动删除或滑动展…...

RT-DETR算法改进【NO.1】借鉴CVPR2024中的StarNet网络StarBlock改进算法

前 言 YOLO算法改进的路有点拥挤,尝试选择其他的baseline作为算法研究,可能会更加好发一些文章。后面将陆续介绍RT-DETR算法改进的方法思路。 很多朋友问改进如何选择是最佳的,下面我就根据个人多年的写作发文章以及指导发文章的经验来看,按照优先顺序进行排序讲解…...

新零售收银解决方案:传统门店超市的数字化-亿发

在数字化浪潮的推动下&#xff0c;零售行业正经历着前所未有的变革。阿里巴巴提出的“新零售”概念&#xff0c;不仅仅是一个商业口号&#xff0c;它代表了一种全新的商业模式和运营理念。随着时代的进步和消费需求的不断升级&#xff0c;新零售的兴起已成为行业发展的必然趋势…...

【算法】位运算算法——判断字符是否唯一

题解&#xff1a;判断字符是否唯一(位运算算法) 目录 1.题目2.题解3.位图参考代码4.细节5.总结 1.题目 题目链接&#xff1a;LINK 2.题解 题解有两种方法&#xff0c; 一是做一个哈希数组&#xff0c;去查重&#xff1b; 二是直接用一个变量每一位来对应表示是否有这个字母…...