Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果没有“"#&引用;没有副作用吗?_Javascript_Angular_Angular Router - Fatal编程技术网

Javascript 如果没有“"#&引用;没有副作用吗?

Javascript 如果没有“"#&引用;没有副作用吗?,javascript,angular,angular-router,Javascript,Angular,Angular Router,在angular或其他SPA框架的早期版本中,导航使用URL中的“#”从一个页面移动到另一个页面,而无需向服务器发出另一个请求 今天,使用Angular 4 routes,我注意到URL被重写,没有向服务器发出任何请求。例如domain.com/about。我觉得很奇怪 如果我的SPA是从domain.com/index.html提供的,那么对domain.com/about的请求应该会产生一个完全不同的页面(例如about/index.hmtl),而不是index.html中的路径 更改URL

在angular或其他SPA框架的早期版本中,导航使用URL中的
“#”
从一个页面移动到另一个页面,而无需向服务器发出另一个请求

今天,使用Angular 4 routes,我注意到URL被重写,没有向服务器发出任何请求。例如
domain.com/about
。我觉得很奇怪

如果我的SPA是从
domain.com/index.html
提供的,那么对
domain.com/about
的请求应该会产生一个完全不同的页面(例如
about/index.hmtl
),而不是
index.html
中的路径

更改URL而不重定向到URL中的地址似乎违反了某些规定。。不


在Angular 4中,如何仅使用客户端实现这一点?

当您在站点上导航时,单击链接、选项卡等-这些都只是客户端。 但是,当您按F5键或导航到像/school/6/personList这样的链接时,应该将服务器配置为返回index.html


这就是为什么rest api通常与/api/users、/api/emails等类似,所以都以“/api”开头,您可以轻松地将所有其他请求重定向到index.html。

当您在站点上导航时,单击链接、选项卡等-这一切都只是客户端的。 但是,当您按F5键或导航到像/school/6/personList这样的链接时,应该将服务器配置为返回index.html

这就是为什么RESTAPI通常是smth,比如/api/users、/api/emails等等,所以都以“/api”开头,您可以轻松地将所有其他请求重定向到index.html

更改URL而不重定向到URL中的地址似乎违反了 某物不

不,这是单页应用程序(SPA)的要点,而不是通过另一种方式,每次URL更改都会向服务器发送请求

角度路由器有两种定位策略:

用于在URL中使用“#”从一个页面移动到另一个页面的导航 无需向服务器发出另一个请求

现在使用Angular仍然可以使用
HashLocationStrategy
,只需使用
{useHash:true}
执行以下操作:

@NgModule({
    imports: [
        RouterModule.forRoot(appRoutes, {useHash: true})
    ],
今天,使用Angular 4 routes,我注意到URL被重写了 没有对服务器的任何请求

这是因为默认情况下使用了
PathLocationStrategy

无论采用何种策略,如果使用角度路由,应用程序中的所有URL更改都将由路由器处理,并且不会向服务器发送任何请求。例如,以下代码:

Router.navigateByUrl('/my')
PathLocationStrategy的情况下,
将生成以下URL:

host/my
HashLocationStrategy
的情况下,它将生成如下ULR:

host#my
更改URL而不重定向到URL中的地址似乎违反了 某物不

不,这是单页应用程序(SPA)的要点,而不是通过另一种方式,每次URL更改都会向服务器发送请求

角度路由器有两种定位策略:

用于在URL中使用“#”从一个页面移动到另一个页面的导航 无需向服务器发出另一个请求

现在使用Angular仍然可以使用
HashLocationStrategy
,只需使用
{useHash:true}
执行以下操作:

@NgModule({
    imports: [
        RouterModule.forRoot(appRoutes, {useHash: true})
    ],
今天,使用Angular 4 routes,我注意到URL被重写了 没有对服务器的任何请求

这是因为默认情况下使用了
PathLocationStrategy

无论采用何种策略,如果使用角度路由,应用程序中的所有URL更改都将由路由器处理,并且不会向服务器发送任何请求。例如,以下代码:

Router.navigateByUrl('/my')
PathLocationStrategy的情况下,
将生成以下URL:

host/my
HashLocationStrategy
的情况下,它将生成如下ULR:

host#my


但是我们如何在不重定向到另一个请求的情况下更改URL呢?您是在告诉我服务器必须配置为返回index.html的任何路径吗。是吗?是的,服务器必须将所有UI路径重定向到“index.html”。通过重新加载更改url是可能的--我想您可以将最后一条注释添加到答案=),但我们如何在不重定向到其他请求的情况下更改url?您是在告诉我服务器必须配置为返回index.html的任何路径吗。是吗?是的,服务器必须将所有UI路径重定向到“index.html”。用我们的重新加载更改url是可能的--我想你可以在答案中添加最后一条评论=)看,你想做什么?我不想做任何具体的事情,只是理解。看,你想做什么?我不想做任何具体的事,只是理解。我现在明白了策略,然而,在不重定向到URL地址的情况下更改URL路径似乎“违反”了某些内容。。不要?@DanielSantos,你能在代码中说明你所说的
更改URL路径而不重定向到URL中的地址是什么意思吗?
?这就是上面id所做的例子,可能我不清楚。我的意思是,使用angular,我可以虚拟地创建像
domain.com/anything
这样的路由,但是没有向
domain.com/anything
发出服务器请求,实际的服务器请求是向他
domain.com/index.html
。这是一扇不一致的大门。假设发出服务器请求时,
domain.com/anything
上有完全不同的东西。好吧!谢谢,我知道没有向服务器发出请求,但如果有人试图向该地址发出服务器请求,而服务器向用户提供其他内容,则仍然存在不一致的情况。重要的是,服务器应该准备好回复这些请求properly@DanielSantos,通常服务器配置为将大多数请求重写到
index.html