您可以查看the angular guide about deployment
我们来谈谈HashLocationStrategy和PathLocationStrategy的区别。欲了解更多信息,check the docs
Angular 默认使用PathLocationStrategy。
假设您的应用程序中有以下路由。
const routes: Route[] = [{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
{
path: 'home',
component: HomeComponent
}];
当你路由到这个组件时,你的地址栏看起来像localhost:4200/home。如果你使用HashLocationStrategy,它看起来像localhost:4200/#home。那么,这里有什么不同呢?
如果您不想拥有#,请删除您指出的部分。默认为PathLocationStrategy。但是,当您在 angular-cli 之外运行您的应用程序时,这将让我们分开,这意味着从某个服务器构建和提供它。假设您使用ng build 构建您的应用程序,并且您拥有缩小、编译的javascript 文件。您将其部署到在 yourdomain.com 上运行的某个服务器上
此外,您将这个构建的、捆绑的 Angular 应用程序放在某个 url 上,这样人们就可以从 yourdomain.com/ng-app 访问您的应用程序,这里一切都很好。甚至,当您路由到HomeComponent 时,它会起作用,并且您的地址栏看起来像yourdomain.com/ng-app/home。但是,当您此时点击F5 时,您的浏览器将向您的服务器上不存在的yourdomain.com/ng-app/home 发出请求,因为您从/ng-app 提供您的应用程序。您必须在服务器端进行一些配置,以便可以提供以/ng-app/** 开头的所有内容。
比如我的spring应用就有这个方法返回angular应用,
@GetMapping("/ng-app/**")
因此,当我的服务器收到以 /ng-app 开头的请求时,它只是将其传递给将处理正确路由的 Angular 应用程序。
希望,这可以为您澄清。