只是html/js或与服务器端代码的混合


Just html/js or a mix with server sided code?

简介

我正在为我必须做出的选择而挣扎。我们必须构建一个有点复杂的html应用程序,该应用程序将使用很多动态的东西,比如jQuery的sortables,以及其他漂亮的html5东西。目前我们有两种选择。我会尽我所能描述他们。我想听听你对此的看法,以及你会选择什么选择以及为什么。


只有JS和HTML

用javascript/html创建所有内容。将有一个html文件,其中将包括html文件的其他部分。例如:index.html可以包括menubar.html和news.html。从现在起,我将称它们为"partials",就像在C#.NET 中一样

此包含将通过javascript完成。我们将使用一个自制的模板引擎,它将获得部分html通过AJAX调用(jQuery)创建文件。所以,只需要一个对html文件的AJAX调用。通过这种方式,它实际上读取了其中的文本。然后,读取的文本(即html)将被放置在index.html中指定的"标记"处,例如;{content:菜单栏}

但是一个部分html文件也可以包含其他的标签,比如

您的用户名:{用户名}

每个局部视图都将属于一个"视图模型"(我们将使用MVVM体系结构)。所以模板引擎知道模型来查找该标记,并将该标记替换为其相应的值。

我们还将使用定制的观察者模式。模板引擎将使用observer来更新html当模型中的值发生更改时自动执行。

所有需要显示的数据都将来自服务器。我们将通过html5套接字连接到它。返回的数据将采用JSON格式。


HTML/JS和PHP的混合

另一种可能性是使用PHP框架。我们将使用框架模板引擎将所有部分html文件合并到index.html中。当更新发生时,将对PHP文件进行AJAX调用。PHP文件很可能会返回HTML数据,而不是JSON。因为在这种情况下,我们不会使用javascript中的模板系统。HTML数据当然将来自部分HTML文件。PHP将在这个部分html文件中填充所有需要的数据。

尽管仍然会有一个websocket连接,但它只用于发送和接收通知。


你的意见

我基本上想听听你的意见。对我来说,第一个听起来是个好主意。但不知何故,我感觉不到。当几乎所有的事情都是由客户完成时,我真的不明白客户如何从中获得额外的利益。出于某种原因,我也觉得当我们走这条路的时候,会出现更多隐藏的问题。

我认为第二种方法会更好。对我来说,套接字连接已经是某种观察者模式了。它会在事件发生时通知您(例如,另一个用户进行了更改)。我们还可以减少JS文件的数量,因为很多事情都将在服务器上完成。

但也许答案只是,我们做出哪一个选择并不重要。

对此有什么想法吗?

啊哈,好了,这正是我需要的解释。顺便说一句,我想你知道在从客户端到服务器和后台的数据通信中该怎么做。您应该尽可能多地使用JSON。

不管怎样,我建议你用尽可能少的服务器处理量来构建你的应用程序。将这些处理留给验证、会话检查等。对于那些不变的东西,让它们保持静态,比如模板。在服务器上做得太多会增加"等待时间",而客户端不喜欢这样。

我在我的项目中所做的是延迟加载和缓存我的模板,不仅是通过浏览器缓存,而且是在我的框架内的一个对象中(还不知道如何使用本地存储)。每次我需要一个模板时,我都会查看框架中的一个对象。如果没有这个模板,可以通过ajax请求它,存储并使用它。顺便说一下,我使用了Mustache,非常方便。这样,它就不会阻碍你的初始负载。增量加载是好的。

至于您的体系结构,我真的不能说MVVM,但我知道模块沙盒核心模式。

总的来说,它更像是选项1对我来说-去客户端!但要始终牢记最佳实践和优化。测试并评测您的代码。此外,不要忘记在生产过程中缩小模板,以及在传输过程中使用压缩(Gzip)。

SEO重要吗?如果是这样的话,请使用PHP等服务器端脚本来构建HTML。