当前位置: 首页 > 面试题库 >

HTML模板填充在服务器端和更新的客户端

潘雅珺
2023-03-14
问题内容

我有一个包含动态内容的网页。假设这是一个产品页面。当用户直接进入时,example.com/product/123我想在服务器上呈现我的产品模板,并将html发送到浏览器。但是,当用户以后单击指向的链接时,/product/555我想使用JavaScript在客户端上更新模板。

我想使用Knockout.js或Angularjs之类的东西,但是我看不到如何在服务器上用一些初始数据预先填充那些模板,而在客户端上仍然有一个正常运行的模板。即如果我的Angular模板是这样的:

<ul>
    <li ng-repeat="feature in features">
      {{feature.title}}
      <p>{{feature.description}}</p>
    </li>
</ul>

当用户直接转到URL时,我需要一些仍可以用作Angular模板的东西,但需要使用当前产品的html进行填充。显然这是行不通的:

<ul>
    <li ng-repeat="feature in features">Hello
      <p>This feature was rendered server-side</p>
    </li>
    <li>Asdf <p>These are stuck here now since angular won't replace them when
       it updates.... </p></li>
</ul>

似乎我唯一的选择是将服务器呈现的html以及单独的匹配模板发送给浏览器…?

在这种情况下,我想避免每个模板写两次。这意味着我需要要么针对我的服务器语言切换到JavaScript(对此我会不满意),要么选择一种可以同时编译为Java和JavaScript的模板语言,然后找到一种将其黑入Play框架的方法(这就是为什么)我目前正在使用。)

有人有建议吗?


问题答案:

如果您真的想在Angular激活之前将一个初始值存储在一个区域中,则可以使用ng-bind属性而不是{{bound strings}},例如:

<ul>
    <li ng-repeat="feature in features">
        <div ng-bind="feature.title">Hello</div>
        <p ng-bind="feature.description">This feature was rendered server-side but can be updated once angular activates</p>
    </li>
</ul>

我不确定这在哪里有用,但是您还希望将初始数据集作为脚本标签的一部分包含在文档中,以便在激活角DOES时不会擦除显示的信息带空值。

编辑:( 按评论者的要求)

或者,您可以在列表的顶部进行ng-repeat,将其配置为根据“功能”列表本身填写。在该ng-repeat元素之后,具有非ng-
repeat元素,这些元素的ng-hide属性设置为ng-hide =“
features”,如果Angular加载,则原始服务器提供的列表中的所有元素都会隐藏起来,并且角度列表就存在了。没有对Angular的修改,也没有对直接ng-
bind属性的摆弄。


附带说明一下,您可能仍想发送一段脚本,该脚本能够读取该初始服务器元素以供其数据在角度同步之前将其输入角度,如果您要避免眨眼,等待角度的同时角度会清除数据向服务器请求相同的数据。



 类似资料:
  • 问题内容: 我目前有一个Flask网络服务器,该服务器使用内置的requests对象从JSON API中提取数据。 例如: 这里的问题是,自然地,GET方法仅在第一次调用get_data时运行一次。为了刷新数据,我必须停止并重新启动Flask wsgi服务器。我曾尝试在True / sleep循环中包装代码的各个部分,但这会阻止werkzeug加载页面。 动态地获取我想要的数据而无需重新加载页面或

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 问题内容: 我尝试使用以下代码从服务器到客户端发送文件和目录列表。服务器正在从客户端接收消息,但我不知道服务器是否没有发送回结果或客户端是否不接受结果。 服务器端: 问题答案: 据我所见,您在客户端上做的同时在服务器上做。从服务器发送的字符串中没有行尾字符,因此客户端将永远无法完成。执行outqw.println()或添加到要发送的内容的末尾。话虽这么说,很难用一堆注释掉的东西来浏览未格式化的代码

  • 我正在使用spring cloud Eureka配置一个应用程序。我在8761端口启动我的discovery应用程序,并在“http://localhost:8761”中到达控制台。 所以,我启动了我的客户端应用程序,它出现在eureka控制台的“应用程序”页面中。 第一个问题:我的客户机在properties config中使用了“server.port=0”,所以tomcat端口是随机启动的。

  • 似乎服务器拒绝了wireshark输出中的tls协商,但我从代码中看不出原因。它是基于工作的代码,只是它被否决了,因此我用新的API更新。代码是开始。需要使用真实的证书。有人知道为什么服务器发送tcp FIN,ack吗? 我有以下服务器代码: 23 16.856111 sonymobi_7f:55:af intelcor_25:1d:fc ARP 42 10.1.10.100在84:c7:ea:7

  • 前面的章节介绍了所有 Redis 的重要功能组件: 数据结构、数据类型、事务、Lua 环境、事件处理、数据库、持久化, 等等, 但是我们还没有对 Redis 服务器本身做任何介绍。 不过, 服务器本身并没有多少需要介绍的新东西, 因为服务器除了维持服务器状态之外, 最重要的就是将前面介绍过的各个功能模块组合起来, 而这些功能模块在前面的章节里已经介绍过了, 所以本章将焦点放在服务器的初始化过程,