使用vanila javascript创建路由时,在地址栏中输入URL时遇到问题



我试图用普通javascript创建路由,但每次在地址栏中键入URL时,我都会收到一个错误消息,说"无法获取/about"。我请求一个教程的链接或这类问题的答案,因为这是我第一次用香草javascript做这件事,我对此一无所知。

采取"Vanilla JavaScript";意思是";JavaScript,在浏览器中运行,不使用第三方库":

你想要什么(合理地(是不可能的。


当您在地址栏中键入URL时,浏览器会向该URL发出HTTP请求,URL来源的HTTP服务器(即方案+主机名+端口(负责将内容(通常是网页(发送回客户端。

您不能用客户端JavaScript代替对HTTP服务器的初始请求。


存在边缘情况。我认为一个渐进式web应用程序可以使用服务人员拦截请求并在内部生成响应。不过,这对处理初始请求没有好处,因为当时不会安装PWA。


通常,当您编写单页应用程序时,您需要两个部分来处理URL。

第一部分是历史API。这允许您编写JavaScript,告诉浏览器:

为了响应用户刚刚执行的点击,我将更新DOM。如果你访问这个URL,那么你会得到与我对DOM所做的更改相同的结果,所以继续更新地址栏以表示该

它还允许您挂接到浏览器的背面导航,以便在用户单击背面时撤消这些更改。

第二部分是确保服务器确实为其他URL提供了相同的内容。

实现这一目标有三种策略:

  • 让服务器返回一个或多或少为空的HTML文档,该文档在加载时检查URL,然后用JavaScript完全填充自己。这是一个糟糕的方法,还不如只使用散列刘海
  • 提前生成所有HTML文档。这是Gatsby和Next.js采用的策略。这非常有效,但不适用于频繁更新的内容
  • 根据需要使用服务器端代码生成HTML文档。Next.js也可以做到这一点

您可以在编写普通JavaScript(有点(时做到这一点,但这需要大量工作,因为您需要编写在Node.js上运行的所有代码(在Node.jss中,您可能不再将其视为普通JavaScript(来生成HTML文档。我强烈建议使用框架。

最新更新