Vue Router 的两种模式:`history` 模式与 `hash` 模式

Vue Router 的两种模式:`history` 模式与 `hash` 模式
在这里插入图片描述
🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_ZEEKLOG博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》《2024面试高频手撕题》《前端求职突破计划》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》《带你从入门到实战全面掌握 uni-app》

文章目录

Vue Router 提供了两种路由模式:hash 模式和 history 模式。这两种模式在 URL 的表现形式、浏览器兼容性、SEO 优化以及后端配置等方面存在显著差异。本文将详细介绍这两种模式的区别,并探讨它们的适用场景。

一、hash 模式

(一)定义

hash 模式是 Vue Router 的默认模式。在这种模式下,URL 中会包含一个 #(哈希符号),例如 http://example.com/#/abouthash 模式通过监听 URL 中的哈希变化来实现页面的切换,而不会发送请求到服务器。

(二)实现原理

hash 模式利用了浏览器的 hashchange 事件。当 URL 中的哈希部分(# 后面的部分)发生变化时,浏览器会触发 hashchange 事件,Vue Router 会监听这个事件来更新页面内容。

(三)优点

  1. 无需服务器配置hash 模式不需要后端服务器的支持,因为 URL 中的哈希部分不会发送到服务器。
  2. 兼容性好hash 模式兼容所有现代浏览器,甚至包括一些较旧的浏览器。
  3. 简单易用:默认模式,无需额外配置。

(四)缺点

  1. URL 不够美观:URL 中包含 #,可能会影响用户体验。
  2. SEO 优化困难:搜索引擎可能不会索引哈希部分的内容,对 SEO 不友好。
  3. 无法直接访问:用户直接输入 URL 时,可能会跳过哈希部分,导致页面加载不正确。

(五)适用场景

hash 模式适用于以下场景:

  • 小型项目:不需要复杂的 URL 结构,对 SEO 要求不高的项目。
  • 无后端支持:前端项目没有后端服务器支持,或者不想配置服务器。
  • 快速开发:需要快速搭建原型或简单应用,无需担心 URL 格式。

二、history 模式

(一)定义

history 模式通过浏览器的 history API(如 pushStatereplaceState)来实现 URL 的切换,而不会在 URL 中包含 #。例如,http://example.com/about

(二)实现原理

history 模式利用了浏览器的 history API 来监听 URL 的变化。当用户点击链接或使用编程式导航时,Vue Router 会调用 pushStatereplaceState 来更新 URL,而不会重新加载页面。

(三)优点

  1. URL 美观:URL 更加简洁,没有 #,更符合传统的 Web 应用 URL 格式。
  2. SEO 友好:搜索引擎可以更好地索引页面内容,对 SEO 更友好。
  3. 用户体验更好:用户可以直接访问任意 URL,而不会出现 404 错误。

(四)缺点

  1. 需要服务器配置history 模式需要后端服务器的支持,以确保所有路由都能正确返回应用的入口文件(如 index.html)。
  2. 配置复杂:需要额外配置服务器,增加了开发和部署的复杂性。
  3. 兼容性稍差:虽然现代浏览器都支持 history API,但在一些较旧的浏览器中可能需要额外的 polyfill。

(五)适用场景

history 模式适用于以下场景:

  • 大型项目:需要复杂的 URL 结构,对 SEO 要求较高的项目。
  • 有后端支持:项目有后端服务器支持,可以配置路由转发。
  • 用户体验要求高:需要更美观的 URL 和更好的用户体验。

三、如何选择路由模式

选择 hash 模式还是 history 模式,取决于项目的具体需求和开发环境。以下是一些选择建议:

(一)选择 hash 模式

  • 快速开发:需要快速搭建原型或简单应用,无需担心 URL 格式。
  • 无后端支持:前端项目没有后端服务器支持,或者不想配置服务器。
  • 兼容性要求高:需要支持较旧的浏览器。

(二)选择 history 模式

  • 大型项目:需要复杂的 URL 结构,对 SEO 要求较高的项目。
  • 有后端支持:项目有后端服务器支持,可以配置路由转发。
  • 用户体验要求高:需要更美观的 URL 和更好的用户体验。

四、如何配置 history 模式

如果选择使用 history 模式,需要在 Vue Router 中进行配置,并确保后端服务器支持路由转发。

(一)配置 Vue Router

在 Vue Router 中,可以通过 createWebHistory 方法启用 history 模式。

// router/index.jsimport{ createRouter, createWebHistory }from'vue-router';import Home from'../views/Home.vue';import About from'../views/About.vue';const routes =[{path:'/',name:'Home',component: Home },{path:'/about',name:'About',component: About }];const router =createRouter({history:createWebHistory(), routes });exportdefault router;

(二)配置后端服务器

history 模式需要后端服务器支持路由转发。以下是一些常见服务器的配置示例:

1. Nginx
server { location / { try_files $uri $uri/ /index.html; } } 
2. Apache
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule> 
3. Node.js (Express)
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'));}); app.listen(8080,()=>{ console.log('Server running on port 8080');});

五、总结

Vue Router 的 hash 模式和 history 模式各有优缺点,适用于不同的场景:

  • hash 模式
    • 优点:无需服务器配置,兼容性好,简单易用。
    • 缺点:URL 不够美观,SEO 优化困难,无法直接访问。
    • 适用场景:小型项目、无后端支持、快速开发。
  • history 模式
    • 优点:URL 美观,SEO 友好,用户体验更好。
    • 缺点:需要服务器配置,配置复杂,兼容性稍差。
    • 适用场景:大型项目、有后端支持、用户体验要求高。

在实际开发中,可以根据项目的具体需求和开发环境选择合适的路由模式。如果项目对 SEO 和用户体验要求较高,并且有后端支持,建议使用 history 模式;如果项目是小型项目,或者没有后端支持,建议使用默认的 hash 模式。

希望本文能帮助你更好地理解 Vue Router 的两种模式,并在实际开发中做出合理的选择。

Read more

Llama-Factory如何设置warmup步数?线性增长策略推荐

Llama-Factory如何设置warmup步数?线性增长策略推荐 在大模型微调实践中,你是否遇到过训练刚开始 loss 就飙升到 NaN 的情况?或者前几个 epoch 损失剧烈震荡,导致最终性能不稳定?这类问题往往不是数据或模型结构的问题,而是学习率调度中一个关键细节被忽略了——warmup 步数的合理设置。 尤其在使用像 Llama-Factory 这样支持全参数微调、LoRA 和 QLoRA 的通用框架时,虽然上手门槛低,但如果对底层优化机制缺乏理解,很容易因为默认配置“跑不动”而误判工具本身的能力。其中,warmup 阶段的设计直接决定了模型能否平稳度过最脆弱的初始训练期。 为什么 warmup 如此重要? 现代大语言模型(LLM)通常拥有数十亿甚至上百亿参数,初始化权重是随机的。训练初期,梯度可能非常大且方向不稳定。如果此时直接使用较高的学习率进行更新,会导致参数跳跃幅度过大,破坏初始学习动态,甚至引发梯度爆炸。 Warmup 机制就是为了解决这个问题:它让学习率从接近零开始,在前若干步中逐步上升至预设的基础学习率。这个“预热”

By Ne0inhk
Chat took too long to get ready.Please ensure...<VSCode\Copilot>

Chat took too long to get ready.Please ensure...<VSCode\Copilot>

在VScode里面,应用Copilot提问,无法解决问题,该怎么解决呢? 1、在vscode里面,按键  ctrl + shift + p,输入setting,即看到setting.json文件 2、在setting.json文件中添加下面两行   "github.copilot.nextEditSuggestions.enabled": true,   "chat.extensionUnification.enabled":false, 参考图片25、26行 3、保存,重启vscode 4、重启后,点击vscode左下角人头像,查看是否有让授权Copilot的,如果有点击一下授权,解决!!! 如果这样无法解决,建议检查账号是不是不能使用Copilot功能了

By Ne0inhk
使用GpuGeek高效完成LLaMA大模型微调:实践与心得分享

使用GpuGeek高效完成LLaMA大模型微调:实践与心得分享

使用GpuGeek高效完成LLaMA大模型微调:实践与心得分享 🌟嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 随着大模型的发展,越来越多的AI开发者开始尝试对开源模型进行微调,以适配垂直场景需求。但由于训练资源昂贵、部署过程繁琐,很多人仍止步于“想做”阶段。 本文将结合我在 GpuGeek 平台 上对 LLaMA 模型的微调实践,分享完整流程、调优经验以及平台带来的优势,帮助更多开发者低门槛开启大模型实践之路。 注册链接:https://gpugeek.com/login?invitedUserId=753279959&source=invited 一、选型与准备 选择模型:LLaMA-7B Meta发布的LLaMA系列模型在性能与资源消耗之间取得了不错的平衡,适合作为个人或中小团队的定制基础模型。我选择了 LLaMA-7B,结合LoRA方法进行微调。 选择平台:GpuGeek 为什么选GpuGeek? ✅ 显卡资源充足、节点丰富:支持多种高性能GPU,

By Ne0inhk

开源还是商用?大模型选型终极指南与实战搭配

一、开源大模型 vs 商用大模型:该怎么选? 1. 概念和许可证上的差异 开源 / 开放权重大模型 模型权重(weights)公开,可下载、本地部署、二次训练。 多数采用 Apache 2.0、MIT 等宽松开源许可(如 Mistral 7B、Mixtral、Gemma、Falcon 等都是 Apache 2.0 或相近许可)。 也有“开放但非真正开源”的,如 Llama 3 / Llama 2:权重可下载,但许可证不是 OSI 认可的开源协议,商业使用有附加条款,需要阅读 Meta 的 Llama License。

By Ne0inhk