Javascript 在angularjs中启用html5模式时会发生什么?
当您启用html5模式时,实际会发生什么?这可能要追溯到单页应用程序中路由是如何发生的 我以前的感觉可能是错误的:在angularjs应用程序中查看脏url时,我总是假设它是url片段,不同的视图绑定到不同的片段。简而言之,我们已经有了所有的页面,并且为特定的url显示了一个特定的片段 现在,为了删除散列,您必须将html5mode设置为true,并且必须告诉服务器返回除API之外的每个请求的索引页。有点像Javascript 在angularjs中启用html5模式时会发生什么?,javascript,angularjs,html,single-page-application,html5mode,Javascript,Angularjs,Html,Single Page Application,Html5mode,当您启用html5模式时,实际会发生什么?这可能要追溯到单页应用程序中路由是如何发生的 我以前的感觉可能是错误的:在angularjs应用程序中查看脏url时,我总是假设它是url片段,不同的视图绑定到不同的片段。简而言之,我们已经有了所有的页面,并且为特定的url显示了一个特定的片段 现在,为了删除散列,您必须将html5mode设置为true,并且必须告诉服务器返回除API之外的每个请求的索引页。有点像 app.get('/ap1',some); //more apis * * * //i
app.get('/ap1',some);
//more apis
*
*
*
//in the end
app.get('*' ,(req,res,next) => req.sendFile('index.html'));
请求是否应该在每次url更改时转到服务器并重新加载页面
HTML5模式对浏览器有什么影响?在诸如react和angular2或更高版本的较新框架中,您甚至不需要启用HTML5Mode,除了angular2中,您需要告诉您想要什么样的url
这是什么魔法?这是使用魔法
它的设计使开发人员能够:
告诉浏览器一些事情,比如我使用JavaScript更改页面内容。现在它与您请求/other/page时得到的页面相同
拦截向后和向前的点击,以便他们可以使用JS将页面内容更改为与未拦截向后/向前点击时导航到的URL相同。
这将更新浏览器历史记录和地址栏中的URL,而不会触发到新页面的正常导航。其思想是,如果您链接到页面或稍后再返回页面,您可以在页面之间提供更平滑、更快的转换,同时仍然具有工作良好的真实URL
这样:
如果JavaScript由于任何原因失败,真正的URL仍然可以交付页面
如果搜索引擎为URL编制索引,它将从中获取真实数据
如果访问者访问的URL不是主页,他们会立即获得所需的内容,而不必等待JavaScript运行,发出额外的Ajax请求,并在客户端组装所有内容。
它是为了响应人们使用而不是真实的URL而设计的
现在,为了删除散列,您必须将html5mode设置为true,并且必须告诉服务器返回除API之外的每个请求的索引页
这是来自Angular的可怕建议
它放弃了history API可以提供的所有好东西,以克服Hashbang的所有缺点,但使用了外观更好的URL
正确执行的问题是,它需要复制服务器和客户机上的逻辑,这是一项非常繁重的工作。是一种减少这种工作量的方法
HTML5模式对浏览器有什么影响
没什么。html5mode变量由Angular读取。浏览器并不直接关心它。它告诉Angular使用历史API而不是hangbang URL
在诸如react和angular2或更高版本的较新框架中,您甚至不需要启用HTML5Mode,除了angular2中,您需要告诉您想要什么样的url
默认情况下,它们只使用历史API。这使用了
它的设计使开发人员能够:
告诉浏览器一些事情,比如我使用JavaScript更改页面内容。现在它与您请求/other/page时得到的页面相同
拦截向后和向前的点击,以便他们可以使用JS将页面内容更改为与未拦截向后/向前点击时导航到的URL相同。
这将更新浏览器历史记录和地址栏中的URL,而不会触发到新页面的正常导航。其思想是,如果您链接到页面或稍后再返回页面,您可以在页面之间提供更平滑、更快的转换,同时仍然具有工作良好的真实URL
这样:
如果JavaScript由于任何原因失败,真正的URL仍然可以交付页面
如果搜索引擎为URL编制索引,它将从中获取真实数据
如果访问者访问的URL不是主页,他们会立即获得所需的内容,而不必等待JavaScript运行,发出额外的Ajax请求,并在客户端组装所有内容。
它是为了响应人们使用而不是真实的URL而设计的
现在,为了删除散列,您必须将html5mode设置为true,并且必须告诉服务器返回除API之外的每个请求的索引页
这是来自Angular的可怕建议
它放弃了history API可以提供的所有好东西,以克服Hashbang的所有缺点,但使用了外观更好的URL
正确执行的问题是,它需要复制服务器和客户机上的逻辑,这是一项非常繁重的工作。是一种减少这种工作量的方法
HTML5D模式是什么
是否要转到浏览器
没什么。html5mode变量由Angular读取。浏览器并不直接关心它。它告诉Angular使用历史API而不是hangbang URL
在诸如react和angular2或更高版本的较新框架中,您甚至不需要启用HTML5Mode,除了angular2中,您需要告诉您想要什么样的url
默认情况下,他们只使用历史API。非常感谢您提供如此详细的答案。不过我有疑问!它放弃了history API可以提供的所有好东西,以克服Hashbang的所有缺点,但使用了外观更好的URL。我看不透这一点@噩梦德维尔2010-我在上一节中列出了一些好东西,并给出了要点。如果每个URL都只提供索引页面,然后依靠JS在浏览器中重写,那么你就不会得到这些。非常感谢你提供了如此详细的答案。不过我有疑问!它放弃了history API可以提供的所有好东西,以克服Hashbang的所有缺点,但使用了外观更好的URL。我看不透这一点@噩梦德维尔2010-我在上一节中列出了一些好东西,并给出了要点。如果每个URL只传递索引页,然后依赖JS在浏览器中重写,那么就不会得到这些。