BaseHref 以及前端路由的问题

news/2024/9/28 13:35:28

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.

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

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

相关文章

银行与货币供给

银行的货币乘数与杠杆率个人持有的货币量 = 通货(钱包中的钞票和硬币) + 活期存款 1. 银行准备金 银行得到且没贷出去的存款称为准备金(reserves),银行如果所有存款都用于准备金,则不影响货币供给。 部分准备金银行(fractional-reserve banking)制度,需按照规定保持一定的准…

你不知道的 CSS 之包含块

你不知道的 CSS 之包含块 一说到 CSS 盒模型,这是很多小伙伴耳熟能详的知识,甚至有的小伙伴还能说出 border-box 和 content-box 这两种盒模型的区别。 但是一说到 CSS 包含块,有的小伙伴就懵圈了,什么是包含块?好像从来没有听说过这玩意儿。好吧,如果你对包含块的知识一…

《深入理解计算机系统》

深入理解计算机系统读书先看书之序言:明确他面向的读者——本书是一个导论课本,是面向程序员的,所以并不是那么深入(因为程序员也不需要了解那么多)所以这对于初学者来说是比较容易的,合适的入门之选第一章:计算机系统漫游相当于是一个粗略的介绍,导言,但是短小精干1.…

杨辉三角学习笔记

基本概念 这是一个杨辉三角。记 \(a_{i,j}\) 为第 \(i\) 行第 \(j\) 列的数。 \(a_{i,j} = a_{i-1,j-1} + a_{i-1,j}\) 示例代码 #include <bits/stdc++.h> using namespace std; int n; int a[105][105];int main(){scanf("%d",&n); //输入行数for(int i=…

【原创】EtherCAT主站IgH解析(二)-- Linux/Windows/RTOS等多操作系统IgH EtherCAT主站移植指南

本文探讨IgH EtherCAT Master针对Linux/Windows/RTOS等不同操作系统的移植。版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/ 前言 目前,EtherCAT商用主站有:Acontis、TwinCAT3、KPA、Codesys等,开源…

6.20-合并二叉树

617.合并二叉树 题意描述:给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的…

DIGAT论文阅读笔记

DIGAT: Modeling News Recommendation with Dual-Graph Interaction论文阅读笔记 Abstract ​ 现有的NR方法通常采用新闻-用户表示学习框架,面临两个潜在的限制。首先,在新闻编码器中,单个候选新闻编码存在语义信息不足的问题。其次,现有的基于图形的NR方法很有前景,但缺乏…