【问题标题】:Hiding some html block from anonymous users [closed]向匿名用户隐藏一些 html 块 [关闭]
【发布时间】:2014-01-18 17:26:13
【问题描述】:

如何对访问我的应用程序的匿名用户隐藏一些 html 块。我不使用任何模板引擎。我的后端在 node.js 中。

实现这一点的最佳方法是什么?

if (loggedin) 

<div id="logged-in"> 
   Some menus for Loggedin User
</div>

else 
<div id="anonymous"> 
   Some menus for Anonymous user
</div>

【问题讨论】:

  • 你应该使用模板引擎。
  • 使用模板引擎,设置是否登录的标志,在模板文件中,只需检查标志。
  • 好的。有没有不使用的解决方法
  • 没有必要使用模板引擎,但你需要使用一些东西来控制你的输出。查看您的一些代码会有所帮助。
  • 我们知道您的意思,但是模板引擎让执行此操作就像您输入的 if/else 语句一样简单。我推荐 EJS,有些像 JADE。

标签: html node.js authentication


【解决方案1】:

您应该使用模板引擎。

如果您不想这样做,您可以构建一个函数来读取用户是否在会话中,然后打印/包含 HTML 的动态版本(标题、正文、div 或您需要的任何内容)包含已登录用户的用户特定数据,或为已登录用户打印/包含 HTML 的通用版本(标题、正文、div 或任何您需要的)

【讨论】:

    【解决方案2】:

    正如其他人所说,模板引擎很可能是最佳选择。这正是他们旨在解决的问题。此外,在逻辑简单的情况下现在引入一个比稍后在临时解决方案变得过于繁琐时引入一个更不痛苦。 (实际上,临时解决方案一开始可能会很麻烦。)

    但是,另一种可能的解决方案是使用 2 个不同的 HTML 文件,并让您的函数根据用户是否登录来选择将哪个文件发送给用户。这只有在页面完全不同的情况下才真正可行,具体取决于登录状态。即便如此,模板引擎通过在页面中包含组件文件,允许您在不同页面之间共享页眉、页脚或任何其他常见元素,从而提供更强大的解决方案。

    如果您仍然反对模板引擎并且不想使用不同的 HTML 文件,您基本上可以做自己的临时模板。将某种要替换的字符串放入 HTML 中,将文本从文件中加载到字符串中,然后使用 string.replace 或类似的东西。 string.replace 的一个很好的例子被描述为here。如果您选择这样做,请非常小心,您的“要替换的字符串”不会与 HTML 或页面本身使用的任何其他语言冲突。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 2010-11-15
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多