Knockout.js 混合淘汰和服务器端渲染
我有一些网页,我需要通过服务器端呈现,使他们搜索引擎友好。对于搜索引擎来说,它应该是一个经典的网站。对于用户,我想让界面更具交互性。我的想法是呈现页面服务器端,然后使用knockout和jquery通过ajax再次获取数据并将其绑定到页面 我担心没有内容的闪现,或者内容重复。对于这种情况,是否有最佳实践/模式 过程如下所示:Knockout.js 混合淘汰和服务器端渲染,knockout.js,Knockout.js,我有一些网页,我需要通过服务器端呈现,使他们搜索引擎友好。对于搜索引擎来说,它应该是一个经典的网站。对于用户,我想让界面更具交互性。我的想法是呈现页面服务器端,然后使用knockout和jquery通过ajax再次获取数据并将其绑定到页面 我担心没有内容的闪现,或者内容重复。对于这种情况,是否有最佳实践/模式 过程如下所示: 使用服务器端呈现页面,包括一长串html元素 使用jQuery获取已呈现到页面的相同数据 使用jquery清除服务器端内容 将ajax绑定到敲除模板,这样可以有效地呈现与以
也许我的思维过程有点不对劲,我很想听到反馈。这是可行的,基本上是从服务器端填充数据,但将“数据绑定”属性添加到输入中,从敲除部分,通过获取字段值来设置观察值 下面是一个简单表单的示例: MVC部件:
public ActionResult Index()
{
Person newPerson = new Person()
{
FirstName = "John",
LastName = "Smith"
};
return View(newPerson);
}
你的看法是:
<div id="main">
<div>
First Name:
@Html.TextBoxFor(p => p.FirstName, new { data-bind = "value: firstName" })
</div>
<div>
Last Name:
@Html.TextBoxFor(p => p.LastName, new { data-bind = "value: lastName"})
</div>
<input type="button" data-bind="click: showValues" value="Show" />
</div>
希望这对你的案子有用
编辑:修复数据绑定到数据绑定的打字错误也可以使用绑定。对于tempate和foreach绑定,它不会重新生成HTML,而是使用服务器端生成的HTML。您需要做的唯一一件事是在服务器中用几个属性来注释HTML,这些属性指定数据的键。除了使用敲除外,还使用了其他属性,但我遇到了同样的问题,这就是我提出的解决方案:
您可以尝试淘汰预呈现绑定处理程序。它基本上按照Tamim的建议做,但它处理foreach并适用于任何数据绑定 <>你也可以考虑使用“通用”的反应——你可以用相同的代码在服务器上和客户端上渲染页面。由于React使用差异引擎,因此当服务器呈现的内容替换为客户端呈现的内容时,不会出现闪烁
您可以使用Node和简单的DOM实现(如domino)渲染敲除:
- 要点-
- 可运行示例-
var personViewModel = function () {
var self = this;
self.firstName = ko.observable($("#FirstName").val());
self.lastName = ko.observable($("#LastName").val());
self.showValues = function () {
alert(self.firstName() + " " + self.lastName());
}
};
ko.applyBindings(new personViewModel());