【问题标题】:Web development: How to 'store' pages in the browsers and prevent them from reloading every time when navigating between themWeb 开发:如何在浏览器中“存储”页面并防止它们在每次浏览时重新加载
【发布时间】:2020-01-26 08:17:05
【问题描述】:

我是 Web 开发的新手,我正在使用纯 JS 创建一个 Web 应用程序。我正在为后端功能使用 Firebase 和 Express.js 路由。这是一种简单的博客服务,所以页面之间自然有很多导航。

当前问题:每当用户在页面之间来回移动时,页面每次都会刷新,即使没有任何更改。这是 2020 年的关键用户体验问题。我想这是因为我为每个 URL 请求发送一个 html 文件,但不知道解决方法是什么。

问题:如何确保呈现的页面“存储”在用户的浏览器中,并且仅在内容发生有意义的更改时才重新加载?

请原谅这个高级问题... 3 个月前刚开始学习编程。 :) 将不胜感激任何关于从哪里开始看的方向性建议。

【问题讨论】:

  • 在这种情况下你应该分享你的代码,这样任何需要帮助的人都可以更清楚地看到问题

标签: javascript node.js express routing navigation


【解决方案1】:

所以这就是 JS 框架将帮助您制作 SPA 应用程序的地方。基本上,当用户第一次点击您的应用时,您的所有页面都会加载,然后动态显示/隐藏不同的页面以避免页面刷新。

您可以摆脱使用 javascript 手动添加/删除 css 类到不同的页面元素,如下所示

.hidden {
    display: none;
}

<div class="hidden">
    ...page 1 (not shown)
</div>
<div>
    ...page 2 (shown)
</div>
<div class="hidden"
    ...page 3 (not shown)
</div>

这是一个轻量级和简单的解决方案,但请记住,这不会改变任何 url。这也意味着您需要将想要“存储”的所有内容放在一个 html 文件中。我认为大多数 SPA JS 框架会在其中使用主题标签执行诸如“example.com/#/contact”或“example.com/#/about”之类的操作,这样 url 可以帮助用户查看他们所在的页面.

我希望这会有所帮助!

【讨论】:

  • 您好,谢谢您的回复!只是想问你几个后续问题: 1. 如果我只使用纯 JS 和 ExpressJS 路由器,这个问题在很大程度上是不可避免的吗? ( 2. JS 框架有什么 recos 可以摆脱这个问题吗?我正在计划学习 React--它会有问题的答案吗?
  • 不客气!如果它适合您,请考虑将此标记为正确答案。
  • 是的,您可以使用 React 创建一个 SPA。但是,如果您只想使用纯香草 javascript,那么我在此答案中的代码将允许您这样做。
猜你喜欢
  • 2015-05-21
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 2017-06-01
  • 1970-01-01
  • 2022-01-18
相关资源
最近更新 更多