首页 > 其他分享 >BaseHref 以及前端路由的问题

BaseHref 以及前端路由的问题

时间:2024-06-20 23:21:38浏览次数:12  
标签:BaseHref http 前端 site myapp 我们 路由

BaseHref 以及前端路由的问题

Base Href 是什么?

  • MDN,
  • 说的直白一点就是,这个站点里面所有的访问主站的资源文件,都会在路由前面加上这个base href,包括*js,scss,image,ajax,......**。
  • 如果一个DOM 里面有多个这样的base,只有第一个会起作用。

BaseHref 在Angular 工程的编译中有什么影响?

  • 我们注意到在angular.json中有这个Options.baseHref配置,在编译命令中也有ng build --base-href的参数。这个参数记得一定要以/开头,也以/结尾。这个参数其实就是往编译好的index.html中插入base节点。
  • 除此外,也会影响前端的路由。如何影响呢,我们举例子来说明。

例子如下

  • 假设我们的主站是http://site.com
  • 我们的baseHref 设的是/myapp/,
  • Angular 中拥有两种路由策略一个是PathLocationStragety,另一个是HashLocationStragety,这两个的区别是,后者是通过#来区分前端路由跟后端路由。而前者则没有这个区分。默认是前者。
  • 更具体的说就是如果是PathLoationStragety,路由则是 http://site.com/myapp/route1, 而后者则是http://site.com/myapp/#route1.
  • 除此之外,还要一个APP_BASE_HREF,这个又是什么,直接举例子,如果它设置为prefix,则路由会是,http://site.com/myapp/prefix/route1 vs http://site.com/myapp/#/prefix/route1. 而且这个prefix 的添加是angular 负责的。对我们的js 代码是无感的。
  • 很多时候,我们不喜欢/myapp/,我们更希望路由是 http://site/route1, 那么该怎么做呢。
  • 我们得配合后端的MVC 来实现。首先我们的baseHref 还是/myapp/, 我们先设置App_BASE_HREF为/, 然后在我们后端的MVC页面中,我们要为我们的所有前端路由配置一个路由,使得它命中到我们一个固定的View,在这个View里面我们可以使用 View("~/myapp/index.cshtml"),这个index.cshtml其实就是我们前端编译好的index.html重命名而来。当然,我们还得在myapp文件夹下面添加一个web.cofig, 这个是从我们的View文件夹下复制过去。
  • 注意点,通过测试,目前只有PathLocationStragety可以成功,HashLocationStragety没有成功,不知道为什么。其次,一定要将前端路由配置到MVC的路由中去,并且必须命中返回index.cshtml的那个View, 否则,当我们在前端某个deep link 下刷新会报404.

标签:BaseHref,http,前端,site,myapp,我们,路由
From: https://www.cnblogs.com/kongshu-612/p/18259664

相关文章

  • 网页实现前端轮盘抽奖
    参考链接Luckydraw/index.htmlatmain·alltrue6/Luckydraw(github.com)实现结果如下 代码如下:创建了一个旋转抽奖盘,用户点击“开始抽奖”按钮后,抽奖盘会旋转并最终停止在一个随机的奖项上,并显示抽中的奖品。引入jQuery库:使用CDN引入jQuery库,方便后续进行DOM操作......
  • 前端面试题日常练-day78 【面试题】
    题目希望这些选择题能够帮助您进行前端面试的准备,答案在文末在Sass中,以下哪个功能用于创建一个循环?a)@extendb)@forc)@importd)@includeSass中的混合器(Mixins)可以包含以下哪些内容?a)样式规则b)变量c)函数d)注释在Sass中,以下哪个符号用于引用其他选择......
  • Java智慧工地源码 5G智慧工地系统源码 使用SAAS部署 三维可视化管理,与一线生产过程相
    Java智慧工地源码5G智慧工地系统源码使用SAAS部署三维可视化管理,与一线生产过程相融合,集成数据后台,统一前端入口,呈现多方项目信息;智慧工地是指运用信息化手段,通过三维设计平台对工程项目进行精确设计和施工模拟,围绕施工过程管理,建立互联协同、智能生产、科学管理的施工项......
  • 高级前端开发需要知道的 25 个 JavaScript 单行代码
    1.不使用临时变量来交换变量的值例如我们想要将 a 于 b 的值交换leta=1,b=2;//交换值[a,b]=[b,a];//结果:a=2,b=1这行代码使用数组解构赋值的方式来交换两个变量的值,无需定义新的临时变量。这个巧妙的技巧可让代码看起来更简洁明了。语法[a,b......
  • 推荐一个Python的前端框架Streamlit
    WHY,为什么要用Streamlit你是不是也想写一个简单的前端界面做些简单的展示和控制,不想写html、css、js,也用不到前后端分离,用不到特别复杂的Flask、Django等,如果你遇到类似这样的问题,我推荐你试试Streamlit。Streamlit介绍官网链接:https://streamlit.io/官方文档:https:/......
  • 测试之前端性能问题定位学习文档
    一、h5网页加载原理H5与native区别维度H5native原生 渲染方式 1、从服务器端下载html2、加载框架渲染依赖的js、css、图片3、请求接口数据4、调用浏览器内核渲染以上对网络要求比较高 1、静态资源提前打包到app,直接从本地读取静态资源2、请求接口数据......
  • Spring Cloud Gateway网关下Knife4j文档聚合,以及动态路由的读取和代码配置
    SpringCloudGateway网关下Knife4j文档聚合,以及动态路由的读取和配置一.Knife4j文档聚合1.1基础环境明细1.2集成knife4j1.2.1maven1.2.2yml配置1.2.2.1其他模块配置1.2.2.2manual手动配置模式1.2.2.3discover服务发现模式1.2.2.3==这里请注意==:如果你使用了:S......
  • (四十三)Vue Router之嵌套路由
    文章目录什么是嵌套路由嵌套路由的使用demo上一篇:(四十二)Vue之路由及其基本使用VueRouter什么是嵌套路由实际生活中的应用界面,有可能由多层嵌套的组件组合而成。同样地,URL中各段动态路径也按某种结构对应嵌套的各层组件,例如:/user/foo/profile......
  • 【计算机网络仿真实验-实验3.1、3.2】交换路由综合实验
    实验3.1交换路由综合实验——作业1一、实验目的运用实验二(可前往博主首页计算机网络专栏下查看)中学到的知识,将这个图中的PC机连接起来组网并分析,本篇涉及代码以截图展示,过于简单的代码及操作不再详细介绍,建议做完实验二中所有实验后再来完成该实验,难度递进,学习过程合理......
  • 「前端+鸿蒙」鸿蒙应用开发-组件状态管理
    在鸿蒙应用开发中,组件状态管理是确保UI与数据同步更新的重要概念。状态(State)是组件内部数据的集合,它可以影响组件的渲染输出。以下是组件状态管理的入门、深入和实战介绍,以及示例代码。组件状态管理-入门入门阶段,你需要了解状态是什么以及如何使用状态来更新UI。定......