Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 只是html/js还是混合服务器端代码?_Php_Javascript_Html - Fatal编程技术网

Php 只是html/js还是混合服务器端代码?

Php 只是html/js还是混合服务器端代码?,php,javascript,html,Php,Javascript,Html,简介 我正在为一个必须做出的选择而挣扎。我们必须构建一个有点复杂的html应用程序,它将使用 很多动态的东西,比如jQuery的排序表,以及其他漂亮的html5东西。目前我们有两个选择。 我会尽力描述他们。我想听听你的意见,你会选择什么,为什么 仅使用JS和HTML 用javascript/html创建所有内容。将有一个html文件,其中包括html文件的其他部分。例如: index.html可以包括menubar.html和news.html。从现在起,我将称它们为“partials”,就像

简介

我正在为一个必须做出的选择而挣扎。我们必须构建一个有点复杂的html应用程序,它将使用 很多动态的东西,比如jQuery的排序表,以及其他漂亮的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中指定的“标记”处,如; {内容:菜单栏}

但部分html文件也可以包含其他“标记”,如下所示:

您的用户名: {username} 每个局部视图都属于一个“视图模型”(我们将使用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请求、存储并使用它。顺便说一下,我用了胡子,非常方便。这样,它就不会阻碍您的初始负载。增量加载是好的

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


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

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

不要构建自己的模板引擎,有很多好的替代方案。就像胡子一样在这种情况下。。你到底在做什么?你只是解释了很多东西,提到了很多方法和模式,但你从来没有提到你要做什么。它是一个需要数据库的应用程序吗?它是否涉及验证和检查?或者,它是一款“不需要服务器帮助的仅用于展示”的应用程序?你可能会为一个小项目考虑过所有事情(最近在那里,感觉一点也不好)不幸的是,这不是一个选项。模板引擎必须能够做一些更具体的事情。我不想在这里谈论太多细节。我们已经看过很多tpl引擎,mustache就是其中之一。我知道有一些很棒的工具,比如knockoutjs、主干等。但现在就假装我们必须构建一些tpl引擎自我陶醉。就像“观察者”部分。@Joseph是的,它需要一个数据库。最终该应用程序将成为某种Scrum板。因此,您可以拖放任务。当有人更改任务或向其添加注释时,必须通知您。诸如此类的事情。已做出决定。将是第一选择。似乎是最好的选择,就像您所说的。不能吗尽管投票,但没有足够的分数:-(你可以加载初始的、基本的内容,然后只添加“眼睛糖果”的内容