简介
我正在努力做出必须做出的选择。我们必须构建一个将要使用的有点复杂的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:menubar}
但是部分html文件还可以包含其他标签'像这样:
您的用户名: {用户名}每个局部视图都属于一个视图模型' (我们将使用MVVM架构)。所以模板引擎知道什么 模型以查找此标记,并将其标记替换为相应的值。
我们还将使用自定义观察者模式。模板引擎将使用观察者来更新html 在模型中更改值时自动。
需要显示的所有数据都来自服务器。我们将通过html5套接字连接到它。返回的数据 将采用JSON格式。
混合使用HTML / JS和PHP
另一种可能性是使用PHP框架。我们将使用框架模板引擎将所有部分html文件合并到index.html中。 发生更新时,将对PHP文件进行AJAX调用。 PHP文件很可能会返回HTML数据而不是JSON。因为在这种情况下我们不会在javascript中使用模板系统。 HTML数据当然来自部分html文件。 PHP将填写此部分html文件中的所有必需数据。
虽然仍会有websocket连接,但它只会用于发送和接收通知。
您的意见?
我基本上想听听你的意见。对我来说,第一个听起来是个好主意。但不知何故不是这样的。而且,当几乎所有事情都在客户端完成时,我并没有真正看到客户如何从中获得额外的好处。出于某种原因,我也感觉到当我们走这条道路时会出现更多隐藏的问题。
我认为第二种方法会更好。对我来说,socket连接已经是某种观察者模式。它会在事件发生时通知您(例如,另一个用户进行了更改)。我们还可以减少JS文件的数量,因为很多东西都将在服务器上完成。
但也许答案只是我们做出的选择并不重要。
对此有何想法?
答案 0 :(得分:0)
无论如何,我建议你用尽可能少的服务器处理来构建你的应用程序。将这些处理留给验证,会话检查和东西。对于那些没有改变的东西,让它们保持静态,就像模板一样。在服务器上做太多会增加“等待时间”,客户也不喜欢这样。
我在我的项目中所做的是延迟加载和缓存我的模板,不仅仅是通过浏览器缓存,而是在我的框架内的对象中(不知道如何使用本地存储)。每次我需要一个模板,我都会在框架中查看一个对象。如果那个模板不存在,请通过ajax请求它,存储并使用它。我顺便使用了胡子,非常方便。这样,它不会让您的初始负载陷入困境。增量加载是好的。
至于你的架构,我真的不能说MVVM,但我知道module-sandbox-core模式。
总的来说,它更像是我的选择1 - 去客户端!但始终注意最佳实践和优化。测试并分析您的代码。另外,不要忘记在生产过程中缩小模板,以及在传输过程中使用压缩(Gzip)。答案 1 :(得分:0)
SEO重要吗?如果是这样,请使用PHP等服务器端脚本来构建HTML。