简短版本:
通过提供一个html文件完成模板化并使用ajax / sockets加载特定于页面的数据,使用节点,我应该期待什么样的性能?设计明智还是坏?
长版
我目前正在学习编写更好的节点。我是一个长期的javascript粉丝,我现在正试图弄清楚node.js中的好/坏做法
我正在考虑模板化,我正在努力解决如何分离我正在存储的内容。我正在阅读很多MVC文章,我真的想要在没有杂乱代码的情况下分离视图逻辑。
我的问题是:
假设我有一个网站,它包含几个代表用户看到的“屏幕”的文件,让我们在这个基本示例中说用户应该能够看到:Index, About, Contact, Portfolio
。
现在我需要动态加载这些页面,这意味着我不想每次都更新每个文件的模板,但它们看起来非常相似。
由于节点完全基于异步操作 - 为所有这些操作提供相同的.html页面有多好/坏,然后根据我使用的页面从服务器加载所有数据AJAX /网络套接字?
(天真地,循环遍历所有名称为''view'的部分,并通过id或类似内容获取内容)
我觉得这会提供页面的异步加载,并完全将站点布局与站点的其余部分分离。这对我来说非常节点,没有阻塞,一切都异步。我正在寻找有经验的开发人员关于这个主题的意见。
此外,任何与使用node.js构建网站相关的提示都表示赞赏。我来自PHP背景,我真的想在设计时避免类似于webmatrix的东西。
答案 0 :(得分:2)
这种“单页网站”存在一些陷阱:
搜索引擎优化:这个内容很难让蜘蛛索引。它更适用于有围墙的内容,例如用户的电子邮件。导航:保留用户习惯的浏览器行为是可能的,但您必须明确考虑它 - 书签将如何工作?后退按钮怎么样?
您可能最好以传统方式提供页面(没有理由不能在后端的节点中呈现模板)。然后优化您的客户端代码和缓存系统,以便第二页快速加载 - 它不需要重新获取.css或.js。
答案 1 :(得分:1)
这个简单的概念是你有一些布局模板和一些局部模板。您可以将这些模板加载为JS文件(它们在编译时)。您可以将编译的模板设置为某个地方的全局对象.. App.templates.portfolio = JST [“templates / portfolio”]。为您的应用程序执行一次。这些模板可以缓存在任何地方 - 浏览器的localStorage,反向代理等。
当用户点击“组合”时,您的服务器会发送回JSON,并使用从服务器返回的数据在浏览器中编译“组合”模板。
https://github.com/sstephenson/eco/ 非常适合这个目的。还有许多其他同样好或甚至更好。这都是个人喜好。玉是我的最爱。
大多数MVC框架都包含其中之一。
如果您有一个基于页面的简单网站,那么Node可能不是最佳选择。我相信你已经知道了。